นวัตกรรมอย่างต่อเนื่อง: ประวัติย่อของบล็อกสตอเรจบน AWS
(allthingsdistributed.com)นวัตกรรมอย่างต่อเนื่อง: ประวัติย่อของบล็อกสตอเรจบน AWS
-
บทนำ
- Marc Olson ทำงานอยู่ในทีม Elastic Block Store (EBS) มานานกว่า 10 ปี
- EBS ได้พัฒนาจากบริการบล็อกสตอเรจที่เรียบง่าย ไปสู่ระบบเน็ตเวิร์กสตอเรจขนาดใหญ่ที่ประมวลผลงานมากกว่า 140 ล้านล้านรายการต่อวัน
- บทความนี้แบ่งปันเส้นทางวิวัฒนาการของ EBS และบทเรียนสำคัญที่ได้รับ
-
ประวัติช่วงแรกของ EBS
- EBS เปิดตัวเมื่อวันที่ 20 สิงหาคม 2008 โดยเริ่มต้นจากแนวคิดง่าย ๆ ในการให้บริการบล็อกสตอเรจที่เชื่อมต่อผ่านเครือข่ายสำหรับ EC2 instance
- ในช่วงแรกใช้ฮาร์ดดิสก์ไดรฟ์แบบแชร์ (HDD) และปัจจุบันสามารถให้ประสิทธิภาพระดับหลายแสน IOPS แก่ EC2 instance เดียวได้
- ปัจจุบัน EBS ประมวลผลงานมากกว่า 140 ล้านล้านรายการต่อวันผ่าน distributed SSD fleet
-
ทฤษฎีคิว
- วิธีที่ระบบคอมพิวเตอร์โต้ตอบกับสตอเรจนั้นโดยพื้นฐานแล้วยังไม่ได้เปลี่ยนแปลง
- CPU จะนำคำขอเข้าไปใส่ในคิว ส่วนอุปกรณ์สตอเรจจะดึงข้อมูลจากหน่วยความจำของ CPU ไปเก็บลงบนสื่อที่คงทน หรือส่งข้อมูลกลับไปยังหน่วยความจำของ CPU
- ทฤษฎีคิวมีบทบาทสำคัญในการทำความเข้าใจกระบวนการเหล่านี้
-
การเปลี่ยนผ่านจาก HDD ไปสู่ SSD
- EBS ในยุคแรกใช้ HDD ซึ่งมีข้อจำกัดด้านประสิทธิภาพจากขีดจำกัดทางกายภาพ
- เมื่อ SSD ปรากฏขึ้น คำขอแบบสุ่มก็สามารถประมวลผลได้เร็วเกือบเท่าคำขอแบบลำดับ
- ในปี 2012 มีการเปิดตัว storage server type ใหม่ที่ใช้ SSD และ EBS volume type ใหม่ชื่อ Provisioned IOPS
-
การวัดและการจัดการ
- ในปี 2012 EBS ยังมี telemetry เพียงพื้นฐานเท่านั้น
- เพื่อปรับปรุงประสิทธิภาพของระบบ ทีมจำเป็นต้องรู้ให้ได้ว่าปัญหาอยู่ตรงไหน แล้วแก้ไขตามลำดับความสำคัญ
- จึงมีการสร้างวิธีวัด IO ในหลายซับซิสเต็ม และตรวจติดตามอย่างต่อเนื่องเพื่อจับการเปลี่ยนแปลง
-
การแบ่งองค์กรแล้วพิชิตปัญหา
- มีการปรับโครงสร้างทีม storage server ของ EBS ให้เป็นทีมขนาดเล็กที่โฟกัสเฉพาะด้าน เช่น data replication, durability และ snapshot hydration
- แต่ละทีมสามารถทำซ้ำและ commit การเปลี่ยนแปลงได้อย่างอิสระ
-
ท้าทายสมมติฐานเดิม
- ทีมค้นพบว่าการตั้งค่าพื้นฐานของ Xen hypervisor เป็นตัวจำกัดประสิทธิภาพ
- จึงใช้ Nitro offload card เพื่อ offload งานประมวลผลด้านเครือข่ายและสตอเรจไปยังฮาร์ดแวร์
-
การทดลองปรับแต่งเครือข่าย
- เมื่อย้าย EBS ไปยัง Nitro ค่า overhead ของเครือข่ายเองกลับเพิ่มขึ้น
- ทีมจึงพัฒนาโปรโตคอล SRD (Scalable Relatable Diagram) ขึ้นแทน TCP เพื่อปรับปรุงประสิทธิภาพเครือข่าย
-
ข้อจำกัดผลักดันนวัตกรรม
- เพื่อมอบข้อดีของ SSD ให้ลูกค้าทุกคน ทีมได้เพิ่ม SSD เข้าไปโดยไม่ต้องเปลี่ยนฮาร์ดแวร์เดิมทั้งหมด
- มีการเพิ่ม SSD เข้าไปในเซิร์ฟเวอร์ด้วยมือ บันทึกการเขียนใหม่ลง SSD ก่อน แล้วค่อย flush แบบ asynchronous ไปยัง HDD
-
การทบทวนเรื่องการขยายประสิทธิภาพ
- มีเรื่องราวการเติบโตส่วนบุคคล: การเปลี่ยนผ่านจากวัฒนธรรมบริษัทขนาดเล็กไปสู่องค์กรขนาดใหญ่
- การทำ debugging session ร่วมกับเพื่อนร่วมงานช่วยแก้ปัญหาและเพิ่มประสิทธิภาพของทีม
-
บทสรุป
- EBS พัฒนามาได้ไม่ใช่จากการเปลี่ยนแปลงครั้งใหญ่เพียงครั้งเดียว แต่จากการปรับปรุงแบบค่อยเป็นค่อยไปอย่างต่อเนื่อง
- ความต้องการของลูกค้าจะยังเพิ่มขึ้นต่อไป และสิ่งนี้เป็นแรงผลักดันให้เกิดนวัตกรรมและการทำซ้ำอย่างต่อเนื่อง
# สรุปโดย GN⁺
- บทความนี้นำเสนอมุมมองจากคนวงในเกี่ยวกับการที่ EBS ของ AWS พัฒนามาได้อย่างไร
- ครอบคลุมทั้งความท้าทายทางเทคนิคและวิธีแก้ไข เช่น ทฤษฎีคิว การนำ SSD มาใช้ และการปรับแต่งเครือข่าย
- เน้นย้ำความสำคัญของการวัดผลและการจัดการอย่างต่อเนื่องเพื่อปรับปรุงประสิทธิภาพ
- ผลิตภัณฑ์ที่มีความสามารถใกล้เคียงกัน ได้แก่ Google Cloud Persistent Disk และ Microsoft Azure Disk Storage
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ถ้าคุณสนใจระบบขนาดใหญ่ ก็ควรอ่านบทความนี้
หากต้องการแก้ปัญหา ต้องรู้ก่อนว่าอะไรผิดพลาด
โปรเจ็กต์ติดตั้ง SSD ในเซิร์ฟเวอร์ EBS เมื่อปี 2013 เป็นหนึ่งในเรื่องราวที่น่าสนใจของ AWS
เหตุขัดข้องของ AWS ที่ยาวราว 4 วันเกิดจาก EBS และทำให้ความเชื่อมั่นต่อ AWS สั่นคลอน
Reddit เป็นหนึ่งในผู้ใช้ EBS ระยะแรกในปี 2008
การเพิ่ม latency แบบสุ่มให้ผลช่วยลดทั้ง latency เฉลี่ยและค่าผิดปกติ
การทำงานในบริษัทอินเทอร์เน็ตขนาดใหญ่ให้บทเรียนมากมาย
ส่วนที่บอกว่ามีการติดตั้ง SSD ด้วยมือให้กับทุกยูนิต EBS ในปี 2013 น่าสนใจมาก
มีการบรรยายเกี่ยวกับภายในของ Amazon S3 ในปี 2009
ในยุคแรกของคลาวด์ มีการใช้ฮาร์ดแวร์อเนกประสงค์ แต่ตอนนี้ใช้ฮาร์ดแวร์ที่ออกแบบเฉพาะสำหรับแต่ละบริการ
ไดอะแกรมแรกไม่ถูกต้องหรือล้าสมัย
กำลังมองหาวิธีที่ดีที่สุดในการจัดเตรียมไดเรกทอรีชุดข้อมูลขนาด 256GB ที่รวดเร็วให้กับ EC2 instance ใหม่