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

Skip to content

วิธีที่เราทำให้โครงสร้างพื้นฐานของ Roblox มีประสิทธิภาพและความยืดหยุ่นมากขึ้น

ตลอดระยะเวลา 16 ปีที่ผ่านมา Roblox ได้เติบโตขึ้นอย่างต่อเนื่อง ซึ่งส่งผลให้โครงสร้างพื้นฐานทางเทคนิคที่รองรับประสบการณ์ร่วมกันในโลกเสมือนจริง 3 มิติของผู้ใช้หลายล้านคนมีความซับซ้อนและขนาดใหญ่ขึ้นตามไปด้วย จำนวนเครื่องเซิร์ฟเวอร์ที่เราต้องรองรับได้เพิ่มขึ้นมากกว่าสามเท่าในช่วงสองปีที่ผ่านมา จากประมาณ 36,000 เครื่อง ณ วันที่ 30 มิถุนายน 2021 เป็นเกือบ 145,000 เครื่องในปัจจุบัน การสนับสนุนประสบการณ์ที่พร้อมใช้งานตลอดเวลาสำหรับผู้คนทั่วโลกนั้นต้องการบริการภายในมากกว่า 1,000 รายการ เพื่อช่วยควบคุมค่าใช้จ่ายและความหน่วงของเครือข่าย เราจึงติดตั้งและจัดการเครื่องจักรเหล่านี้เป็นส่วนหนึ่งของโครงสร้างพื้นฐานคลาวด์ส่วนตัวแบบไฮบริดที่สร้างขึ้นเฉพาะ ซึ่งทำงานหลักภายในองค์กร  

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

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

การสร้างแนวป้องกัน

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

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

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

การย้ายไปยังโครงสร้างพื้นฐานเซลลูลาร์

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

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

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

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

การแก้ไขปัญหาที่ใหญ่ขึ้น

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

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

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

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

การย้ายระบบโครงสร้างพื้นฐานที่ทำงานตลอดเวลา

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

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

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

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

การเตรียมพร้อมสำหรับอนาคตเมื่อเราขยายตัว

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

สรุปแล้ว ณ ปัจจุบัน เราได้: 

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

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

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

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