- Threads ที่เปิดตัวในเดือนกรกฎาคม 2023 มีผู้สมัครใช้งานถึง 100 ล้านคนในช่วง 5 วันแรก
- ทีมวิศวกรขนาดเล็กที่คล่องตัวสร้าง Threads ขึ้นมาด้วยงานด้านเทคนิคเพียง 5 เดือน
- การขยายระบบอย่างราบรื่นท่ามกลางการสมัครใช้งานจำนวนมาก เป็นผลลัพธ์จากความพยายามด้านโครงสร้างพื้นฐานและการพัฒนาผลิตภัณฑ์ที่สั่งสมมานานกว่า 10 ปี
- ไม่ได้สร้างโครงสร้างพื้นฐานขึ้นมาเฉพาะสำหรับ Threads แต่ใช้ประโยชน์จากโครงสร้างพื้นฐานที่ Meta สร้างไว้แล้วสำหรับผลิตภัณฑ์จำนวนมาก
- ในความเป็นจริงมีการใช้โครงสร้างพื้นฐานจำนวนมหาศาล แต่บทความนี้แนะนำสองส่วนสำคัญคือ distributed key-value store อย่าง ZippyDB และแพลตฟอร์ม asynchronous serverless function อย่าง Async
ZippyDB: การขยาย Keyspace สำหรับ Threads
- ZippyDB เป็นฐานข้อมูล distributed key/value ที่สร้างขึ้นตั้งแต่ต้นบนโครงสร้างพื้นฐานของ Meta และเป็นบริการแบบ fully managed ที่วิศวกรสามารถนำไปใช้สร้างระบบต่อได้
- keyspace ที่โฮสต์บน ZippyDB สามารถขยายและย่อขนาดได้ค่อนข้างง่าย และวางกระจายอย่างยืดหยุ่นข้ามหลายดาต้าเซ็นเตอร์ได้
- สำหรับการจัดเก็บ social graph ใช้ TAO (The Associations and Objects) ซึ่งทำงานบน MySQL
- ZippyDB เป็นฐานข้อมูล key/value ที่ทำหน้าที่คู่ขนานกับ MySQL และถูกใช้กับตัวนับ การจัดอันดับ/สถานะของฟีด การค้นหา และงานอื่น ๆ
การปรับแต่ง ZippyDB และการเปิดตัวผลิตภัณฑ์
- โปรโตคอล resharding ของ ZippyDB ทำให้สามารถเพิ่มปัจจัยการแบ่ง shard ของ use case บน ZippyDB ได้อย่างรวดเร็ว โดยไม่กระทบต่อ client และยังคงความสอดคล้องและความถูกต้องอย่างสมบูรณ์
- ทำ resharding ได้โดยไม่มี downtime ด้วยการ provision ชุด physical shard ใหม่ และติดตั้งการแมป logical-physical shard ใหม่ให้กับ client ผ่านการเปลี่ยนแปลงคอนฟิกแบบ live
- งาน resharding ถูกออกแบบให้ขยายในแนวนอนได้ ทำให้เพิ่มความเร็วในการ reshard ได้เมื่อจำเป็น เช่น ตอนเปิดตัว Threads
- มีการพัฒนาเครื่องมือฉุกเฉินสำหรับ operator ชุดหนึ่ง เพื่อรับมือกับการเติบโตของ use case แบบฉับพลันได้ง่ายขึ้น
Async: การขยายการรันเวิร์กโหลดสำหรับ Threads
- Async (หรือ XFaaS) เป็นแพลตฟอร์ม serverless function ที่ช่วยให้วิศวกรลดเวลาตั้งแต่แนวคิดของโซลูชันไปจนถึงการ deploy สู่ production
- ปัจจุบัน Async รองรับการเรียกใช้ฟังก์ชันระดับหลายล้านล้านครั้งต่อวัน และรองรับภาษาโปรแกรมหลากหลาย เช่น HackLang, Python, Haskell และ Erlang
- ระบบนี้ทำ abstraction รายละเอียดเรื่อง deployment, queuing, scheduling, scaling, disaster recovery และ readiness เพื่อให้นักพัฒนามุ่งเน้นที่ business logic หลักได้
- Async ใช้เป็นหลักกับงานที่สามารถทำได้ตั้งแต่ไม่กี่วินาทีไปจนถึงหลายชั่วโมงภายหลัง โดยไม่รบกวนประสบการณ์ผู้ใช้
- มีบทบาทสำคัญในการช่วยให้ Threads สร้างชุมชนได้อย่างรวดเร็ว ด้วยการเปิดให้ผู้ใช้ติดตามคนที่ติดตามอยู่แล้วบน Instagram ต่อใน Threads ได้
- การรองรับผู้ใช้ 100 ล้านคนใน 5 วันต้องใช้ความสามารถในการประมวลผลอย่างมาก และ Async ก็รับมือกับโหลดที่เพิ่มขึ้นได้อย่างนุ่มนวล พร้อมจัดคิวเพื่อให้การทำงานเป็นไปอย่างควบคุมได้
จุดบรรจบของโครงสร้างพื้นฐานและวัฒนธรรม
- การพัฒนา Threads อย่างรวดเร็วภายในช่วงเวลางานด้านเทคนิคเพียง 5 เดือน แสดงให้เห็นถึงจุดแข็งของโครงสร้างพื้นฐานและวัฒนธรรมวิศวกรรมของ Meta
- ผลิตภัณฑ์ของ Meta ใช้โครงสร้างพื้นฐานร่วมที่ผ่านการทดสอบมาอย่างยาวนาน ทำให้ทีมผลิตภัณฑ์เคลื่อนที่ได้เร็วและขยายผลิตภัณฑ์ที่ประสบความสำเร็จได้อย่างรวดเร็ว
- โครงสร้างพื้นฐานนี้มีระบบอัตโนมัติในระดับสูง ดังนั้นนอกจากความพยายามในการจัดหาความจุในระยะสั้นแล้ว การกระจายงานใหม่อัตโนมัติ การทำ load balancing และการขยายระบบจึงเกิดขึ้นอย่างราบรื่นและโปร่งใส
- Meta มุ่งสู่วัฒนธรรมวิศวกรรมที่เคลื่อนที่รวดเร็ว โดยวิศวกรทำงานร่วมกันด้วยความเป็นเจ้าของที่เข้มแข็ง เพื่อบรรลุเป้าหมายร่วมขนาดใหญ่ได้อย่างมีประสิทธิภาพ
3 ความคิดเห็น
โคตรเท่
อืมมม~