Việc chạy bất kỳ nền tảng phân tán có thể mở rộng nào đều đòi hỏi một cam kết về độ tin cậy, để đảm bảo khách hàng có những gì họ cần khi họ cần. Các yếu tố phụ thuộc có thể khá phức tạp, đặc biệt là với một nền tảng lớn như Roblox. Xây dựng các dịch vụ đáng tin cậy có nghĩa là, bất kể mức độ phức tạp và trạng thái của các phụ thuộc như thế nào, bất kỳ dịch vụ cụ thể nào sẽ không bị gián đoạn (tức là rất có sẵn), sẽ hoạt động không có lỗi (tức là cao chất lượng) và không có lỗi (tức là khả năng chịu lỗi).
Tại sao độ tin cậy lại quan trọng
Nhóm Nhận dạng Tài khoản của chúng tôi cam kết đạt được độ tin cậy cao hơn, vì các dịch vụ tuân thủ mà chúng tôi đã xây dựng là thành phần cốt lõi của nền tảng. Việc tuân thủ vi phạm có thể gây ra những hậu quả nghiêm trọng. Chi phí cho việc chặn hoạt động tự nhiên của Roblox là rất cao, với các tài nguyên bổ sung cần thiết để khôi phục sau sự cố và trải nghiệm người dùng bị suy yếu.
Cách tiếp cận điển hình đối với độ tin cậy chủ yếu tập trung vào tính khả dụng, nhưng trong một số trường hợp, các thuật ngữ được trộn lẫn và sử dụng sai. Hầu hết các phép đo về tính khả dụng chỉ đánh giá xem các dịch vụ có đang hoạt động hay không, trong khi các khía cạnh như dung sai phân vùng và tính nhất quán đôi khi bị lãng quên hoặc hiểu sai.
Theo định lý CAP, bất kỳ hệ thống phân tán nào cũng chỉ có thể đảm bảo hai trong ba khía cạnh này, do đó, các dịch vụ tuân thủ của chúng tôi hy sinh một số tính nhất quán để có tính khả dụng cao và khả năng chịu phân vùng. Tuy nhiên, các dịch vụ của chúng tôi đã hy sinh rất ít và tìm thấy các cơ chế để đạt được tính nhất quán tốt với những thay đổi kiến trúc hợp lý được giải thích bên dưới.
Quá trình để đạt được độ tin cậy cao hơn là lặp đi lặp lại, với phép đo chặt chẽ phù hợp với công việc liên tục nhằm ngăn ngừa, tìm kiếm, phát hiện và sửa chữa các khuyết tật trước khi sự cố xảy ra. Nhóm của chúng tôi đã xác định giá trị mạnh mẽ trong các hoạt động sau:
- Đo lường đúng - Xây dựng khả năng quan sát đầy đủ về cách chất lượng được cung cấp cho khách hàng và cách những người phụ thuộc cung cấp chất lượng cho chúng tôi.
- Dự đoán chủ động - Thực hiện các hoạt động như đánh giá kiến trúc và đánh giá rủi ro phụ thuộc.
- Ưu tiên chỉnh sửa - Tập trung cao hơn vào việc giải quyết báo cáo sự cố đối với dịch vụ và các phụ thuộc được liên kết với dịch vụ của chúng tôi.
Xây dựng độ tin cậy cao hơn đòi hỏi một văn hóa chất lượng. Nhóm của chúng tôi đã đầu tư vào phát triển dựa trên hiệu suất và biết rằng sự thành công của một quy trình phụ thuộc vào việc áp dụng quy trình đó. Nhóm đã áp dụng đầy đủ quy trình này và áp dụng các thực hành như một tiêu chuẩn. Sơ đồ sau đây nêu bật các thành phần của quy trình:
Sức mạnh của phép đo đúng
Trước khi đi sâu hơn vào các chỉ số, cần làm rõ nhanh chóng về các phép đo Mức độ dịch vụ.
- SLO (Mục tiêu mức độ dịch vụ) là mục tiêu độ tin cậy mà nhóm của chúng tôi hướng tới (tức là 99.999%).
- SLI (Chỉ báo mức độ dịch vụ) là độ tin cậy đạt được trong một khung thời gian (tức là 99.975% vào tháng XNUMX năm ngoái).
- SLA (Thỏa thuận mức dịch vụ) là độ tin cậy được người tiêu dùng của chúng tôi đồng ý cung cấp và mong đợi tại một khung thời gian nhất định (tức là 99.99% một tuần).
SLI phải phản ánh tính khả dụng (không có phản hồi chưa được khắc phục hoặc bị thiếu), khả năng chịu lỗi (không có lỗi dịch vụ) và chất lượng đạt được (không có lỗi không mong muốn). Do đó, chúng tôi đã xác định SLI của mình là “Tỷ lệ thành công” của các phản hồi thành công so với tổng số yêu cầu được gửi đến một dịch vụ. Phản hồi thành công là những yêu cầu được gửi đúng thời gian và hình thức, có nghĩa là không kết nối, dịch vụ hoặc các lỗi không mong muốn đã xảy ra.
SLI hoặc Tỷ lệ thành công này được thu thập theo quan điểm của người tiêu dùng (tức là khách hàng). Mục đích là đo lường trải nghiệm thực tế từ đầu đến cuối được cung cấp cho người tiêu dùng của chúng tôi để chúng tôi cảm thấy các SLA tự tin được đáp ứng. Không làm như vậy sẽ tạo ra cảm giác tin cậy sai lầm, bỏ qua tất cả các mối quan tâm về cơ sở hạ tầng để kết nối với khách hàng của chúng tôi. Tương tự như SLI của người tiêu dùng, chúng tôi thu thập SLI phụ thuộc để theo dõi bất kỳ rủi ro tiềm ẩn nào. Trên thực tế, tất cả SLA phụ thuộc phải phù hợp với SLA dịch vụ và có sự phụ thuộc trực tiếp với chúng. Sự thất bại của một người bao hàm sự thất bại của tất cả. Chúng tôi cũng theo dõi và báo cáo các số liệu từ chính dịch vụ (tức là máy chủ) nhưng đây không phải là nguồn thực tế để có độ tin cậy cao.
Ngoài SLI, mọi bản dựng đều thu thập các chỉ số chất lượng được báo cáo bởi quy trình làm việc CI của chúng tôi. Thực tiễn này giúp thực thi mạnh mẽ các cổng chất lượng (tức là độ phủ mã) và báo cáo các số liệu có ý nghĩa khác, chẳng hạn như tuân thủ tiêu chuẩn mã hóa và phân tích mã tĩnh. Chủ đề này trước đây đã được đề cập trong một bài báo khác, Xây dựng các dịch vụ vi mô được thúc đẩy bởi hiệu suất. Siêng năng tuân thủ chất lượng sẽ tăng thêm khi nói về độ tin cậy, bởi vì chúng ta càng đầu tư nhiều hơn để đạt được điểm xuất sắc, chúng ta càng tự tin rằng hệ thống sẽ không bị lỗi trong điều kiện bất lợi.
Nhóm của chúng tôi có hai bảng điều khiển. Một cung cấp tất cả khả năng hiển thị vào cả SLI người tiêu dùng và SLI phụ thuộc. Cái thứ hai hiển thị tất cả các chỉ số chất lượng. Chúng tôi đang làm việc để hợp nhất mọi thứ thành một trang tổng quan duy nhất, để tất cả các khía cạnh chúng tôi quan tâm đều được hợp nhất và sẵn sàng được báo cáo theo bất kỳ khung thời gian nhất định nào.
Dự đoán thất bại
Đang làm Đánh giá kiến trúc là một phần cơ bản của việc đáng tin cậy. Đầu tiên, chúng tôi xác định xem liệu dự phòng có tồn tại hay không và liệu dịch vụ có phương tiện để tồn tại khi các phụ thuộc giảm xuống hay không. Ngoài các ý tưởng sao chép điển hình, hầu hết các dịch vụ của chúng tôi đều áp dụng các kỹ thuật hydrat hóa bộ đệm kép được cải tiến, chiến lược khôi phục kép (chẳng hạn như hàng đợi cục bộ chuyển đổi dự phòng) hoặc chiến lược mất dữ liệu (chẳng hạn như hỗ trợ giao dịch). Những chủ đề này đủ rộng để đảm bảo một mục nhập blog khác, nhưng cuối cùng, khuyến nghị tốt nhất là triển khai các ý tưởng có xem xét các tình huống thảm họa và giảm thiểu bất kỳ hình phạt hiệu suất nào.
Một khía cạnh quan trọng khác cần dự đoán là bất kỳ thứ gì có thể cải thiện khả năng kết nối. Điều đó có nghĩa là phải tích cực về độ trễ thấp cho khách hàng và chuẩn bị cho họ để có lưu lượng truy cập rất cao bằng cách sử dụng các kỹ thuật kiểm soát bộ nhớ cache, các thanh phụ và các chính sách hiệu suất cho thời gian chờ, ngắt mạch và thử lại. Các phương pháp này áp dụng cho bất kỳ máy khách nào bao gồm bộ nhớ đệm, cửa hàng, hàng đợi và các máy khách phụ thuộc lẫn nhau trong HTTP và gRPC. Điều đó cũng có nghĩa là cải thiện các tín hiệu lành mạnh từ các dịch vụ và hiểu rằng việc kiểm tra sức khỏe đóng một vai trò quan trọng trong tất cả việc điều phối vùng chứa. Hầu hết các dịch vụ của chúng tôi đều phát tín hiệu tốt hơn cho sự xuống cấp như một phần của phản hồi kiểm tra sức khỏe và xác minh tất cả các thành phần quan trọng còn hoạt động trước khi gửi tín hiệu khỏe mạnh.
Việc chia nhỏ các dịch vụ thành các phần quan trọng và không quan trọng đã được chứng minh là hữu ích để tập trung vào chức năng quan trọng nhất. Chúng tôi đã từng có các điểm cuối chỉ dành cho quản trị viên trong cùng một dịch vụ và trong khi chúng không được sử dụng thường xuyên, chúng đã ảnh hưởng đến các chỉ số độ trễ tổng thể. Việc chuyển họ sang dịch vụ của riêng họ đã tác động đến mọi chỉ số theo hướng tích cực.
Đánh giá rủi ro phụ thuộc là một công cụ quan trọng để xác định các vấn đề tiềm ẩn với sự phụ thuộc. Điều này có nghĩa là chúng tôi xác định các phụ thuộc có SLI thấp và yêu cầu căn chỉnh SLA. Những phần phụ thuộc đó cần được chú ý đặc biệt trong các bước tích hợp, vì vậy chúng tôi cam kết có thêm thời gian để đánh giá điểm chuẩn và kiểm tra xem các phần phụ thuộc mới có đủ trưởng thành cho kế hoạch của chúng tôi hay không. Một ví dụ điển hình là việc chúng tôi áp dụng sớm Roblox Storage-as-a-Service. Việc tích hợp với dịch vụ này yêu cầu nộp phiếu lỗi và các cuộc họp đồng bộ định kỳ để truyền đạt các phát hiện và phản hồi. Tất cả công việc này sử dụng thẻ “độ tin cậy” để chúng tôi có thể nhanh chóng xác định nguồn và các ưu tiên của nó. Đặc tính hóa xảy ra thường xuyên cho đến khi chúng tôi tự tin rằng sự phụ thuộc mới đã sẵn sàng cho chúng tôi. Công việc bổ sung này đã giúp kéo sự phụ thuộc đến mức độ tin cậy cần thiết mà chúng tôi mong đợi để thực hiện cùng nhau vì mục tiêu chung.
Mang cấu trúc đến sự hỗn loạn
Không bao giờ mong muốn có sự cố. Nhưng khi chúng xảy ra, có những thông tin có ý nghĩa cần thu thập và học hỏi để đáng tin cậy hơn. Nhóm của chúng tôi có một báo cáo sự cố nhóm được tạo ở trên và ngoài báo cáo thông thường của toàn công ty, vì vậy chúng tôi tập trung vào tất cả các sự cố bất kể quy mô ảnh hưởng của chúng. Chúng tôi chỉ ra nguyên nhân gốc rễ và ưu tiên tất cả các công việc để giảm thiểu nó trong tương lai. Là một phần của báo cáo này, chúng tôi kêu gọi các nhóm khác khắc phục các sự cố phụ thuộc với mức độ ưu tiên cao, theo dõi với cách giải quyết phù hợp, xem xét lại và tìm kiếm các mẫu có thể áp dụng cho chúng tôi.
Nhóm sản xuất một Báo cáo độ tin cậy hàng tháng cho mỗi dịch vụ bao gồm tất cả SLI được giải thích ở đây, bất kỳ vé nào chúng tôi đã mở vì độ tin cậy và mọi sự cố có thể xảy ra liên quan đến dịch vụ. Chúng tôi đã quá quen với việc tạo các báo cáo này nên bước tự nhiên tiếp theo là tự động hóa việc trích xuất chúng. Thực hiện hoạt động định kỳ này là quan trọng và đó là lời nhắc nhở rằng độ tin cậy liên tục được theo dõi và xem xét trong quá trình phát triển của chúng tôi.
Công cụ đo lường của chúng tôi bao gồm các chỉ số tùy chỉnh và các cảnh báo được cải thiện để chúng tôi được phân trang sớm nhất có thể khi các vấn đề đã biết và dự kiến xảy ra. Tất cả các cảnh báo, bao gồm cả dương tính giả, đều được xem xét hàng tuần. Tại thời điểm này, việc hoàn thiện tất cả tài liệu là quan trọng để người tiêu dùng của chúng tôi biết điều gì sẽ xảy ra khi cảnh báo kích hoạt và khi lỗi xảy ra, và sau đó mọi người biết phải làm gì (ví dụ: sách phát và hướng dẫn tích hợp được căn chỉnh và cập nhật thường xuyên).
Cuối cùng, việc chấp nhận chất lượng trong nền văn hóa của chúng ta là yếu tố quan trọng nhất và quyết định nhất để đạt được độ tin cậy cao hơn. Chúng ta có thể quan sát thấy những phương pháp này được áp dụng cho công việc hàng ngày của chúng ta đã mang lại hiệu quả như thế nào. Nhóm của chúng tôi bị ám ảnh bởi độ tin cậy và đó là thành tựu quan trọng nhất của chúng tôi. Chúng tôi đã nâng cao nhận thức của mình về tác động mà các khiếm khuyết tiềm ẩn có thể gây ra và khi nào chúng có thể được đưa vào. Các dịch vụ thực hiện các phương pháp này đã đạt được SLO và SLA một cách nhất quán. Các báo cáo độ tin cậy giúp chúng tôi theo dõi tất cả công việc chúng tôi đã và đang làm là minh chứng cho công việc mà nhóm của chúng tôi đã thực hiện và là bài học vô giá để cung cấp thông tin và ảnh hưởng đến các nhóm khác. Đây là cách văn hóa độ tin cậy chạm vào tất cả các thành phần của nền tảng của chúng tôi.
Con đường đến với độ tin cậy cao hơn không phải là dễ dàng, nhưng nó là cần thiết nếu bạn muốn xây dựng một nền tảng đáng tin cậy để hình dung lại cách mọi người đến với nhau.
Alberto là Kỹ sư phần mềm chính trong nhóm Nhận dạng Tài khoản tại Roblox. Anh ấy đã làm việc trong ngành công nghiệp trò chơi một thời gian dài, với công sức trên nhiều tựa game AAA và các nền tảng truyền thông xã hội, tập trung mạnh vào các kiến trúc có khả năng mở rộng cao. Giờ đây, anh ấy đang giúp Roblox đạt được sự phát triển và trưởng thành bằng cách áp dụng các phương pháp phát triển tốt nhất.
Các bài viết Mang lại độ tin cậy cho nền tảng quy mô lớn xuất hiện đầu tiên trên Blog Roblox.
- "
- a
- Giới thiệu
- Tài khoản
- Đạt được
- đạt được
- hoạt động
- hoạt động
- Ngoài ra
- thêm vào
- Nhận con nuôi
- bất lợi
- Hiệp định
- Tất cả
- Đã
- phân tích
- Một
- dự đoán
- áp dụng
- Đăng Nhập
- Nộp đơn
- phương pháp tiếp cận
- kiến trúc
- xung quanh
- bài viết
- liên kết
- sự chú ý
- tự động hóa
- sẵn có
- có sẵn
- nhận thức
- bởi vì
- trước
- được
- phía dưới
- điểm chuẩn
- BEST
- Ngoài
- Blog
- mang lại
- Bug
- xây dựng
- cuộc gọi
- mà
- trường hợp
- Nguyên nhân
- Séc
- khách hàng
- mã
- Lập trình
- thu thập
- Đến
- cam kết
- cam kết
- cam kết
- Chung
- giao tiếp
- so
- tuân thủ
- các thành phần
- điều kiện
- sự tự tin
- tự tin
- Kết nối
- Kết nối
- Hãy xem xét
- liên tục
- người tiêu dùng
- Người tiêu dùng
- Container
- Trung tâm
- có thể
- tạo
- tạo ra
- tín
- quan trọng
- văn hóa
- khách hàng
- khách hàng
- bảng điều khiển
- dữ liệu
- sâu sắc hơn
- giao
- phân phối
- cung cấp
- nhu cầu
- phụ thuộc
- Xác định
- Phát triển
- trực tiếp
- thiên tai
- phân phối
- xuống
- điều khiển
- suốt trong
- Đầu
- Cuối cùng đến cuối
- ky sư
- đặc biệt
- mọi người
- tất cả mọi thứ
- ví dụ
- tuyệt vời
- mong đợi
- dự kiến
- kinh nghiệm
- mở rộng
- Không
- thông tin phản hồi
- Tên
- Sửa chữa
- Tập trung
- tập trung
- tập trung
- theo
- tiếp theo
- hình thức
- tìm thấy
- từ
- Full
- chức năng
- chức năng
- cơ bản
- tương lai
- trò chơi
- Gates
- tạo ra
- mục tiêu
- tốt
- Tăng trưởng
- Bảo hành
- hướng dẫn
- xảy ra
- đã xảy ra
- cho sức khoẻ
- giúp đỡ
- giúp đỡ
- giúp
- tại đây
- Cao
- cao hơn
- nổi bật
- cao
- Độ đáng tin của
- HTTPS
- ý tưởng
- xác định
- Bản sắc
- Va chạm
- thực hiện
- thực hiện
- quan trọng
- nâng cao
- cải thiện
- cải thiện
- Mặt khác
- bao gồm
- Bao gồm
- tăng
- ngành công nghiệp
- ảnh hưởng
- thông tin
- Cơ sở hạ tầng
- hội nhập
- Ý định
- đầu tư
- IT
- chính nó
- Biết
- nổi tiếng
- LEARN
- Cấp
- ít
- địa phương
- dài
- Xem
- làm cho
- phù hợp
- Vấn đề
- trưởng thành
- trưởng thành
- có nghĩa là
- có ý nghĩa
- có nghĩa
- đo
- Phương tiện truyền thông
- các cuộc họp
- Metrics
- hỗn hợp
- chi tiết
- hầu hết
- di chuyển
- Tự nhiên
- cần thiết
- Tuy nhiên
- hoạt động
- hoạt động
- dàn nhạc
- gọi món
- Nền tảng khác
- tổng thể
- riêng
- một phần
- người
- hiệu suất
- miếng
- kế hoạch
- nền tảng
- Nền tảng
- Play
- Điểm
- Quan điểm
- Chính sách
- tích cực
- có thể
- tiềm năng
- quyền lực
- thực hành
- trình bày
- Hiệu trưởng
- ưu tiên
- vấn đề
- quá trình
- chất lượng
- Nhanh chóng
- Mau
- đạt
- hợp lý
- Phục hồi
- phục hồi
- phản ánh
- về
- đáng tin cậy
- báo cáo
- Báo cáo
- yêu cầu
- cần phải
- Thông tin
- Đánh giá
- Nguy cơ
- đường
- ROBLOX
- Vai trò
- nguồn gốc
- chạy
- tương tự
- khả năng mở rộng
- Quy mô
- ý nghĩa
- dịch vụ
- DỊCH VỤ
- tương tự
- kể từ khi
- duy nhất
- So
- Mạng xã hội
- truyền thông xã hội
- phương tiện truyền thông xã hội nền tảng
- Phần mềm
- Kỹ sư phần mềm
- một số
- đặc biệt
- đứng
- Tiêu chuẩn
- Trạng thái
- cửa hàng
- chiến lược
- mạnh mẽ
- thành công
- thành công
- hỗ trợ
- hệ thống
- nói
- nhóm
- kỹ thuật
- về
- thử nghiệm
- Sản phẩm
- vì thế
- số ba
- vé
- thời gian
- khung thời gian
- bên nhau
- khoan dung
- công cụ
- chủ đề
- Chủ đề
- theo dõi
- giao thông
- sự hiểu biết
- us
- giá trị
- xác minh
- Xem
- khả năng hiển thị
- tuần
- Điều gì
- liệu
- trong khi
- không có
- Công việc
- đang làm việc
- sẽ