27 คะแนน โดย xguru 2023-12-26 | 3 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 ความคิดเห็น

 
lakalaka 2023-12-26

โคตรเท่

 
jangsc0000 2023-12-26

อืมมม~

 
[ความคิดเห็นนี้ถูกซ่อน]