เส้นทางสู่ Elasticity ของ Luft - ตอนที่ 2: Auto-Scaling ด้วย Query History
(engineering.ab180.co)เพื่อปรับปรุง elasticity ของ Luft ซึ่งเป็นฐานข้อมูลที่พัฒนาขึ้นเอง ทีมได้แบ่งปันประสบการณ์การสร้าง cost-based autoscaler ที่ใช้ query history
- ในงานก่อนหน้านี้ได้เปลี่ยนมาใช้สถาปัตยกรรม Shared Storage แล้ว แต่เพื่อให้เกิดผลลัพธ์ที่ใช้งานได้จริง ยังจำเป็นต้องมีระบบ auto-scaling ที่มีประสิทธิภาพ
- ทีมย้ายออกจาก Kubernetes ไปสู่รูปแบบคลัสเตอร์แบบ self-managed ที่ใช้ AWS SDK และนำวิธีการ resume อินสแตนซ์ที่หยุดอยู่กลับมาใช้ ทำให้ลดเวลา scaling ลงเหลือระดับประมาณ 10 วินาที
- แทนที่จะใช้แนวทาง auto-scaling แบบเดิมที่พึ่งพา metric ที่เกิดตามหลัง เช่น การใช้ CPU/หน่วยความจำ ทีมได้พัฒนาโมเดลคาดการณ์ต้นทุนที่ใช้ query history
- ผ่านการทำ query canonicalization เพื่อระบุ query ที่คล้ายกัน และสร้าง cost function ที่คำนวณต้นทุนจากประวัติของ query ทำให้คาดการณ์ทรัพยากรได้อย่างแม่นยำ
- ระบบสามารถจัดสรรทรัพยากรเฉพาะเมื่อจำเป็นโดยไม่ต้อง overprovisioning ช่วยลดค่าใช้จ่ายของอินสแตนซ์ได้ประมาณ 40% และสร้างระบบที่ยืดหยุ่นพอจะรองรับ query หนักได้
ยังไม่มีความคิดเห็น