เนื้อหาในเว็บไซต์นี้ได้รับการแปลโดยใช้ปัญญาประดิษฐ์ (AI) หรือเทคโนโลยีการแปลด้วยเครื่อง และอาจมีข้อผิดพลาด

Skip to content

การส่งมอบความน่าเชื่อถือของแพลตฟอร์มขนาดใหญ่

การดำเนินงานแพลตฟอร์มแบบกระจายที่ปรับขนาดได้ต้องการความมุ่งมั่นต่อความน่าเชื่อถือ เพื่อให้มั่นใจว่าลูกค้าจะได้รับสิ่งที่พวกเขาต้องการเมื่อพวกเขาต้องการ การพึ่งพาอาจมีความซับซ้อนค่อนข้างมาก โดยเฉพาะอย่างยิ่งกับแพลตฟอร์มขนาดใหญ่เช่น Roblox การสร้างบริการที่เชื่อถือได้หมายความว่า ไม่ว่าความซับซ้อนและสถานะของการพึ่งพาจะเป็นอย่างไร บริการใด ๆ ก็จะไม่ถูกขัดจังหวะ (คือ มีให้บริการอย่างต่อเนื่อง) จะทำงานโดยไม่มีข้อผิดพลาด (คือ มีคุณภาพสูง) และไม่มีข้อบกพร่อง (คือ มีความทนทานต่อข้อผิดพลาด)

ทำไมความน่าเชื่อถือจึงสำคัญ

ทีมบัญชีและตัวตนของเรามุ่งมั่นที่จะบรรลุความน่าเชื่อถือที่สูงขึ้น เนื่องจากบริการด้านการปฏิบัติตามข้อกำหนดที่เราสร้างขึ้นนั้นเป็นองค์ประกอบหลักของแพลตฟอร์ม การไม่ปฏิบัติตามข้อกำหนดอาจส่งผลร้ายแรงได้ ต้นทุนของการขัดขวางการทำงานตามธรรมชาติของ Roblox นั้นสูงมาก โดยต้องใช้ทรัพยากรเพิ่มเติมในการกู้คืนหลังจากเกิดความล้มเหลว และประสบการณ์การใช้งานของผู้ใช้ที่อ่อนแอลง

แนวทางทั่วไปในการประเมินความน่าเชื่อถือมักเน้นไปที่ความพร้อมใช้งานเป็นหลัก แต่ในบางกรณีอาจมีการใช้คำศัพท์สับสนหรือใช้ผิดความหมาย การวัดค่าความพร้อมใช้งานส่วนใหญ่มักจะประเมินเพียงว่าบริการนั้นสามารถใช้งานได้หรือไม่ ในขณะที่แง่มุมอื่นๆ เช่น ความทนทานต่อการแบ่งแยกข้อมูลและความสอดคล้องของข้อมูล มักถูกละเลยหรือเข้าใจผิด 

ตามทฤษฎี CAP ระบบแบบกระจายสามารถรับประกันได้เพียงสองในสามแง่มุมต่อไปนี้เท่านั้น ดังนั้นบริการของเราจึงยอมสละความสอดคล้องบางส่วนเพื่อให้มีความพร้อมใช้งานสูงและทนต่อการแบ่งแยกได้ อย่างไรก็ตาม บริการของเราสละเพียงเล็กน้อยและพบกลไกในการบรรลุความสอดคล้องที่ดีด้วยการเปลี่ยนแปลงสถาปัตยกรรมที่เหมาะสมซึ่งจะอธิบายไว้ด้านล่าง

กระบวนการในการบรรลุความน่าเชื่อถือที่สูงขึ้นเป็นกระบวนการที่ทำซ้ำอย่างต่อเนื่อง โดยมีการวัดผลอย่างเข้มงวดควบคู่ไปกับการทำงานอย่างต่อเนื่องเพื่อป้องกัน ค้นหา ตรวจพบ และแก้ไขข้อบกพร่องก่อนที่เหตุการณ์จะเกิดขึ้น ทีมงานของเราได้ระบุถึงคุณค่าที่สำคัญในแนวทางปฏิบัติต่อไปนี้:

  • การวัดที่ถูกต้อง - สร้างการสังเกตการณ์อย่างครบถ้วนเกี่ยวกับวิธีการส่งมอบคุณภาพให้กับลูกค้าและวิธีที่การพึ่งพาอาศัยกันส่งมอบคุณภาพให้กับเรา
  • การคาดการณ์เชิงรุก - ดำเนินกิจกรรมต่างๆ เช่น การตรวจสอบสถาปัตยกรรมและการประเมินความเสี่ยงด้านความพึ่งพา
  • ให้ความสำคัญกับการแก้ไข - ให้ความสนใจเป็นพิเศษกับการแก้ไขรายงานเหตุการณ์สำหรับบริการและสิ่งที่พึ่งพาซึ่งเชื่อมโยงกับบริการของเรา

การสร้างความน่าเชื่อถือที่สูงขึ้นต้องการวัฒนธรรมแห่งคุณภาพ. ทีมของเราได้ลงทุนในด้านการพัฒนาที่ขับเคลื่อนด้วยประสิทธิภาพอยู่แล้ว และทราบดีว่าความสำเร็จของกระบวนการขึ้นอยู่กับการนำไปใช้. ทีมได้ยอมรับกระบวนการนี้อย่างเต็มที่ และนำแนวทางปฏิบัติมาใช้เป็นมาตรฐาน. แผนภาพต่อไปนี้แสดงให้เห็นถึงส่วนประกอบของกระบวนการ:

พลังของการวัดที่ถูกต้อง

ก่อนที่จะลงลึกในตัวชี้วัดต่าง ๆ ขอชี้แจงให้ชัดเจนเกี่ยวกับการวัดระดับการให้บริการ (Service Level) ก่อน

  • SLO (Service Level Objective) คือเป้าหมายด้านความน่าเชื่อถือที่ทีมของเราตั้งไว้ (เช่น 99.999%)
  • SLI (ตัวชี้วัดระดับการให้บริการ) คือความน่าเชื่อถือที่ได้บรรลุในระยะเวลาที่กำหนด (เช่น 99.975% ในเดือนกุมภาพันธ์ที่ผ่านมา)
  • SLA (ข้อตกลงระดับการให้บริการ) คือความน่าเชื่อถือที่ตกลงกันไว้เพื่อให้บริการและคาดหวังโดยผู้บริโภคของเราภายในระยะเวลาที่กำหนด (เช่น 99.99% ต่อสัปดาห์)

SLI ควรสะท้อนถึงความพร้อมใช้งาน (ไม่มีการตอบสนองที่ไม่ได้รับการจัดการหรือขาดหายไป), ความทนทานต่อความล้มเหลว (ไม่มีข้อผิดพลาดในการให้บริการ) และคุณภาพที่ได้รับ (ไม่มีข้อผิดพลาดที่ไม่คาดคิด) ดังนั้น เราจึงกำหนด SLI ของเราเป็น "อัตราความสำเร็จ" ของการตอบสนองที่ประสบความสำเร็จเมื่อเทียบกับคำขอทั้งหมดที่ส่งไปยังบริการ การตอบสนองที่ประสบความสำเร็จคือคำขอที่ถูกส่งในเวลาและรูปแบบที่ถูกต้อง หมายความว่าไม่มีการเชื่อมต่อ, ข้อผิดพลาดในการให้บริการ หรือข้อผิดพลาดที่ไม่คาดคิดเกิดขึ้น

SLI หรืออัตราความสำเร็จนี้ถูกรวบรวมจากมุมมองของผู้บริโภค (เช่น ลูกค้า) โดยมีวัตถุประสงค์เพื่อวัดประสบการณ์จริงตั้งแต่ต้นจนจบที่ส่งมอบให้กับผู้บริโภคของเรา เพื่อให้เรามั่นใจว่า SLA ได้รับการปฏิบัติตาม หากไม่ทำเช่นนี้ จะสร้างความน่าเชื่อถือที่ผิดพลาดซึ่งเพิกเฉยต่อปัญหาโครงสร้างพื้นฐานทั้งหมดที่เกี่ยวข้องกับการเชื่อมต่อกับลูกค้าของเรา เช่นเดียวกับ SLI ของผู้บริโภค เราทำการรวบรวม SLI ด้านความพึ่งพาอาศัยเพื่อติดตามความเสี่ยงที่อาจเกิดขึ้น ในทางปฏิบัติ SLA ของการพึ่งพาทั้งหมดควรสอดคล้องกับ SLA ของบริการและมีความสัมพันธ์โดยตรงกับการพึ่งพาเหล่านั้น การล้มเหลวของหนึ่งหมายถึงการล้มเหลวของทั้งหมด เราติดตามและรายงานตัวชี้วัดจากบริการเอง (เช่น เซิร์ฟเวอร์) แต่ไม่ใช่แหล่งที่มาในทางปฏิบัติสำหรับความน่าเชื่อถือสูง

นอกเหนือจาก SLI แล้ว ทุกการสร้างจะรวบรวมเมตริกคุณภาพที่รายงานโดยเวิร์กโฟลว์ CI ของเรา การปฏิบัตินี้ช่วยบังคับใช้ประตูคุณภาพอย่างเข้มงวด (เช่น การครอบคลุมโค้ด) และรายงานเมตริกที่มีความหมายอื่นๆ เช่น การปฏิบัติตามมาตรฐานการเขียนโค้ดและการวิเคราะห์โค้ดแบบคงที่ หัวข้อนี้เคยถูกกล่าวถึงในบทความอื่นแล้ว คือ การสร้างไมโครเซอร์วิสที่ขับเคลื่อนด้วยประสิทธิภาพ การปฏิบัติตามคุณภาพอย่างเคร่งครัดนั้นสะสมเพิ่มขึ้นเมื่อพูดถึงความน่าเชื่อถือ เพราะยิ่งเราลงทุนเพื่อให้ได้คะแนนที่ยอดเยี่ยมมากเท่าใด เราก็ยิ่งมั่นใจมากขึ้นเท่านั้นว่าระบบจะไม่ล้มเหลวในสภาพที่ไม่เอื้ออำนวย

ทีมของเรามีแดชบอร์ดสองตัว ตัวหนึ่งให้ข้อมูลทั้งหมดเกี่ยวกับทั้ง SLI ของผู้บริโภคและ SLI ของการพึ่งพา ส่วนตัวที่สองแสดงตัวชี้วัดคุณภาพทั้งหมด เรากำลังทำงานเพื่อรวมทุกอย่างไว้ในแดชบอร์ดเดียว เพื่อให้ทุกแง่มุมที่เราให้ความสำคัญถูกรวบรวมและพร้อมที่จะรายงานตามกรอบเวลาที่กำหนด

คาดการณ์ความล้มเหลว

การทบทวนสถาปัตยกรรมเป็นส่วนพื้นฐานของการเป็นที่น่าเชื่อถือ. ประการแรก เราตรวจสอบว่ามีระบบสำรองหรือไม่ และหากบริการมีวิธีการที่จะอยู่รอดได้เมื่อการพึ่งพาไม่สามารถทำงานได้. นอกเหนือจากแนวคิดการจำลองข้อมูลแบบทั่วไปแล้ว บริการส่วนใหญ่ของเราได้นำเทคนิคการเติมข้อมูลแคชแบบคู่ (dual cache hydration) ที่ได้รับการปรับปรุง, กลยุทธ์การกู้คืนแบบคู่ (เช่น การสลับระบบไปยังคิวสำรองในเครื่อง) หรือกลยุทธ์การรับมือกับการสูญหายของข้อมูล (เช่น การรองรับการทำธุรกรรม) มาใช้ หัวข้อเหล่านี้มีความครอบคลุมมากพอที่จะเขียนเป็นบทความแยกต่างหาก แต่คำแนะนำที่ดีที่สุดคือควรนำแนวคิดที่คำนึงถึงสถานการณ์ภัยพิบัติและลดผลกระทบต่อประสิทธิภาพให้น้อยที่สุด

อีกแง่มุมสำคัญที่ควรคาดการณ์คือสิ่งใดก็ตามที่สามารถปรับปรุงการเชื่อมต่อได้ นั่นหมายถึงการให้ความสำคัญกับความหน่วงต่ำสำหรับลูกค้าและการเตรียมความพร้อมสำหรับปริมาณการเข้าใช้งานที่สูงมากโดยใช้เทคนิคการควบคุมแคช, ไซด์คาร์ และนโยบายที่มีประสิทธิภาพสำหรับการหมดเวลา, วงจรตัดไฟ และการลองใหม่ แนวปฏิบัติเหล่านี้ใช้กับลูกค้าทุกราย รวมถึงแคช, สโตร์, คิว และลูกค้าที่พึ่งพาซึ่งกันและกันใน HTTP และ gRPC นอกจากนี้ยังหมายถึงการปรับปรุงสัญญาณสุขภาพจากบริการและการทำความเข้าใจว่าการตรวจสอบสุขภาพมีบทบาทสำคัญในการจัดการคอนเทนเนอร์ทั้งหมด บริการส่วนใหญ่ของเราส่งสัญญาณที่ดีขึ้นสำหรับการเสื่อมสภาพเป็นส่วนหนึ่งของข้อมูลย้อนกลับจากการตรวจสอบสุขภาพ และตรวจสอบให้แน่ใจว่าส่วนประกอบที่สำคัญทั้งหมดทำงานได้ก่อนที่จะส่งสัญญาณสุขภาพ

การแยกบริการออกเป็นส่วนสำคัญและไม่สำคัญได้พิสูจน์แล้วว่ามีประโยชน์ในการมุ่งเน้นไปที่ฟังก์ชันการทำงานที่สำคัญที่สุด เราเคยมีจุดสิ้นสุดสำหรับผู้ดูแลระบบเท่านั้นในบริการเดียวกัน และถึงแม้ว่ามันจะไม่ค่อยถูกใช้งาน แต่มันก็มีผลกระทบต่อเมตริกความล่าช้าโดยรวม การย้ายมันไปยังบริการของตัวเองส่งผลกระทบต่อทุกเมตริกในทิศทางที่ดีขึ้น

การประเมินความเสี่ยงจากการพึ่งพาเป็นเครื่องมือสำคัญในการระบุปัญหาที่อาจเกิดขึ้นจากการพึ่งพา ซึ่งหมายความว่าเราจะระบุการพึ่งพาที่มี SLI ต่ำและขอการปรับให้สอดคล้องกับ SLA การพึ่งพาเหล่านั้นต้องการความสนใจเป็นพิเศษในระหว่างขั้นตอนการรวมระบบ ดังนั้นเราจึงจัดสรรเวลาเพิ่มเติมเพื่อทำการเปรียบเทียบและทดสอบว่าการพึ่งพาใหม่มีความพร้อมเพียงพอสำหรับแผนของเราหรือไม่ ตัวอย่างที่ดีคือการที่เราได้นำ Roblox Storage-as-a-Service มาใช้ในระยะแรก การผสานรวมกับบริการนี้จำเป็นต้องยื่นบักติคเก็ตและจัดการประชุมซิงค์เป็นระยะเพื่อสื่อสารข้อมูลการค้นพบและคำแนะนำ ทุกงานที่ทำใช้แท็ก "ความน่าเชื่อถือ" เพื่อให้เราสามารถระบุแหล่งที่มาและลำดับความสำคัญได้อย่างรวดเร็ว การจำแนกคุณลักษณะเกิดขึ้นบ่อยครั้งจนกว่าเราจะมีความมั่นใจว่าความพึ่งพาใหม่นี้พร้อมสำหรับเราแล้ว งานเพิ่มเติมนี้ช่วยดึงความพึ่งพาให้ถึงระดับความน่าเชื่อถือที่เราคาดหวังว่าจะสามารถทำงานร่วมกันเพื่อเป้าหมายร่วมกันได้

นำโครงสร้างสู่ความวุ่นวาย

การเกิดเหตุการณ์ไม่พึงประสงค์นั้นไม่เคยเป็นสิ่งที่ต้องการ แต่เมื่อเกิดขึ้นแล้ว ก็มีข้อมูลที่มีความหมายให้รวบรวมและเรียนรู้เพื่อเพิ่มความน่าเชื่อถือ ทีมของเรามีรายงานเหตุการณ์ของทีมที่ถูกสร้างขึ้นอย่างละเอียดและเหนือกว่ารายงานทั่วทั้งบริษัททั่วไป ดังนั้นเราจึงให้ความสำคัญกับทุกเหตุการณ์ไม่ว่าจะมีความรุนแรงหรือผลกระทบเพียงใด เราชี้ให้เห็นถึงสาเหตุที่แท้จริงและให้ความสำคัญกับงานทั้งหมดเพื่อลดผลกระทบในอนาคต ในส่วนของรายงานนี้ เราจะเรียกทีมอื่น ๆ เข้ามาแก้ไขเหตุการณ์ที่เกิดจากการพึ่งพาซึ่งมีความสำคัญสูง ติดตามผลให้มีการแก้ไขอย่างถูกต้อง ทบทวนและค้นหาแนวโน้มที่อาจเกิดขึ้นกับเราได้

ทีมจัดทำรายงานความน่าเชื่อถือรายเดือนต่อบริการ ซึ่งประกอบด้วย SLI ทั้งหมดที่ได้อธิบายไว้ที่นี่ ตั๋วที่เราได้เปิดไว้เนื่องจากปัญหาความน่าเชื่อถือ และเหตุการณ์ที่อาจเกิดขึ้นได้ซึ่งเกี่ยวข้องกับบริการนั้น ๆ เราคุ้นเคยกับการจัดทำรายงานเหล่านี้มากจนขั้นตอนต่อไปที่เป็นธรรมชาติคือการทำให้การดึงข้อมูลเป็นไปโดยอัตโนมัติ การทำกิจกรรมนี้เป็นประจำมีความสำคัญ และเป็นการเตือนให้เราทราบว่าความน่าเชื่อถือถูกติดตามและนำมาพิจารณาอย่างต่อเนื่องในกระบวนการพัฒนาของเรา

เครื่องมือของเราประกอบด้วยเมตริกที่ปรับแต่งเองและการแจ้งเตือนที่ได้รับการปรับปรุง เพื่อให้เราได้รับการแจ้งเตือนทางเพจโดยเร็วที่สุดเมื่อเกิดปัญหาที่ทราบหรือคาดการณ์ไว้ การแจ้งเตือนทั้งหมด รวมถึงการแจ้งเตือนที่ผิดพลาด จะได้รับการตรวจสอบทุกสัปดาห์ ในขั้นตอนนี้ การปรับปรุงเอกสารทั้งหมดให้สมบูรณ์เป็นสิ่งสำคัญ เพื่อให้ผู้ใช้ของเราทราบว่าจะคาดหวังอะไรเมื่อมีการแจ้งเตือนและเมื่อเกิดข้อผิดพลาด และทุกคนจะทราบว่าจะต้องดำเนินการอย่างไร (เช่น คู่มือการปฏิบัติและแนวทางบูรณาการได้รับการจัดให้สอดคล้องและอัปเดตอย่างสม่ำเสมอ)

ในที่สุด การนำคุณภาพมาใช้ในวัฒนธรรมของเราคือปัจจัยที่สำคัญที่สุดและเป็นตัวตัดสินในการบรรลุความน่าเชื่อถือที่สูงขึ้น เราสามารถสังเกตได้ว่าการนำแนวทางปฏิบัติเหล่านี้มาใช้ในงานประจำวันของเราได้ให้ผลตอบแทนแล้ว ทีมของเราหลงใหลในความน่าเชื่อถือ และนี่คือความสำเร็จที่สำคัญที่สุดของเรา เราได้เพิ่มความตระหนักถึงผลกระทบที่อาจเกิดขึ้นจากข้อบกพร่องที่อาจเกิดขึ้น และเวลาที่อาจเกิดขึ้นได้ บริการที่ได้นำแนวทางปฏิบัติเหล่านี้ไปใช้ได้บรรลุเป้าหมาย SLO และ SLA อย่างต่อเนื่อง รายงานความน่าเชื่อถือที่ช่วยให้เราติดตามงานทั้งหมดที่เราได้ทำมานั้น เป็นเครื่องพิสูจน์ถึงการทำงานของทีมเรา และเป็นบทเรียนที่มีค่าอย่างยิ่งในการให้ข้อมูลและส่งอิทธิพลต่อทีมอื่น ๆ นี่คือวิธีที่วัฒนธรรมความน่าเชื่อถือสัมผัสกับทุกส่วนประกอบของแพลตฟอร์มของเรา

เส้นทางสู่ความน่าเชื่อถือที่สูงขึ้นไม่ใช่เรื่องง่าย แต่หากต้องการสร้างแพลตฟอร์มที่ได้รับความไว้วางใจซึ่งพลิกโฉมวิธีที่ผู้คนมารวมตัวกัน ก็จำเป็นต้องเดินบนเส้นทางนี้

อัลแบร์โตเป็นวิศวกรซอฟต์แวร์อาวุโสในทีม Account Identity ที่ Roblox เขามีประสบการณ์ยาวนานในอุตสาหกรรมเกม โดยมีผลงานในหลายเกม AAA และแพลตฟอร์มโซเชียลมีเดียที่เน้นสถาปัตยกรรมที่สามารถขยายขนาดได้สูง ปัจจุบันเขากำลังช่วยให้ Roblox เติบโตและพัฒนาอย่างเต็มที่ด้วยการประยุกต์ใช้แนวปฏิบัติที่ดีที่สุดในการพัฒนา