ลดการใช้ Redis แบบทานอส
(engineering.ab180.co)บันทึกงานวิศวกรรมเพื่อลดต้นทุนที่เกิดจากการเก็บข้อมูลจำนวนมากใน Redis ในรูปแบบ JSON โดยไม่มีการบีบอัด และจากการที่ไม่มีการแชร์โมเดลระหว่างบริการ Redis
- เปลี่ยนวิธีจัดเก็บข้อมูลต้นฉบับเดียวกัน ทำให้ประหยัดการใช้หน่วยความจำของ ElastiCache ได้ 52% และลดค่าใช้จ่ายได้ 66%
- ใช้ Protobuf แทน JSON เพื่อระบุสเปกข้อมูลอย่างชัดเจน พร้อมทั้งทำให้วิธีอ่าน/เขียนข้อมูลระหว่างบริการเป็นมาตรฐานเดียวกัน
- เมื่อเปรียบเทียบการบีบอัด พบว่า brotli ให้สัดส่วนการบีบอัดสูงที่สุด จึงเปรียบเทียบเวลาที่ใช้และอัตราการบีบอัดตามขนาด window และระดับการบีบอัด เพื่อหาค่าที่เหมาะสมที่สุดแล้วนำไปใช้
- เมื่อนำ UUID มาใช้เป็นคีย์ของ Redis การใช้ ascii85 ช่วยประหยัดการใช้หน่วยความจำได้เล็กน้อย
- ตระหนักว่าหนี้ทางเทคนิคที่เกี่ยวข้องกับโดเมนอาจเป็นอุปสรรคต่อการลดต้นทุนด้านอินฟรา และจัดการสิ่งนี้ด้วย schema ที่ชัดเจน
4 ความคิดเห็น
เมื่อสเปกของเซิร์ฟเวอร์สูงขึ้นทุกวัน ผมเลยมัวแต่โฟกัสกับการทำผลิตภัณฑ์ออกมาให้เร็ว มากกว่าจะกังวลเรื่องการปรับแต่งประสิทธิภาพ แต่เนื้อหานี้เป็นเนื้อหาที่ดีมาก เพราะทำให้ได้กลับมาคิดเรื่องการปรับแต่งประสิทธิภาพอีกครั้งหลังจากไม่ได้คิดมานานแล้ว!!
ใช่ครับ จริง ๆ แล้วแม้ว่า JSON จะถูกใช้เป็นหลักเพราะมีข้อดีตรงที่อ่านง่ายและจัดโครงสร้างได้ยืดหยุ่น แต่ในแง่ของขนาดแล้ว การใช้ไบนารีโปรโตคอลอย่าง protobuf จะสะดวกกว่า และถ้าสุดทางไปเลย ไบนารีโปรโตคอลที่ถูกปรับจูนมาอย่างมากอย่างโครงสร้าง PE แบบดั้งเดิมหรือโปรโตคอล TCP ก็น่าจะดีกว่าครับ
คำว่าหนี้ทางเทคนิคที่เกี่ยวกับโดเมนนี่ดูจะตรงประเด็นมากเลยครับ
เจ๋งมาก
ท่านประธาน! ขึ้นเงินเดือนให้คนนี้เยอะ ๆ เลยครับ!!