Netflix Simian – Sự Ra Đời Của Biệt Đội Phá Hoại
Mục lục
Gần đây, chúng tôi có tập trung vào các cách thức để cải thiện độ sẵn sàng, tin cậy và muốn chia sẻ một số sự tiến triển và suy nghĩ.
Nhắc đến Cloud là nhắc đến độ dư thừa và khả năng chịu lỗi. Bởi không có một thành phần đơn lẻ nào trong hệ thống có thể đảm bảo 100% sẽ luôn luôn hoạt động (và kể cả những phần cứng đắt tiền nhất suy cho cùng vẫn hỏng), chúng tôi phải thiết kế một kiến trúc Cloud mà khi những thành phần đơn lẻ này có gì xảy ra thì độ sẵn sàng của hệ thống vẫn cao. Khi có gì xảy ra, chúng tôi phải mạnh mẽ hơn những thành phần và mối liên kết yếu ớt này. Chúng tôi có thể dùng các công nghệ như Graceful Degradation (khả năng cho phép dịch vụ hoạt động một cách giới hạn kể cả một lượng lớn thành phần của hệ thống bị hủy hoại hay gặp sự cố) cho các sự cố có liên kết và các cách thức triển khai dịch vụ giống nhau trên khu vực, data center, rack, node… Nhưng chỉ thiết kế kiến trúc với khả năng chịu lỗi là chưa đủ. Chúng tôi phải liên tục thử nghiệm khả năng sống còn của kiến trúc này khi có sự cố hiếm nhất xảy ra.
Hãy tưởng tượng khi bị xì bánh xe. Ngay cả khi bạn có chuẩn bị sẵn một bánh xe dự phòng đi nữa, bạn có biết thổi phồng nó đúng cách? Bạn có công cụ để chuyển đổi? Và, quan trọng nhất, bạn có nhớ cách thực hiện nó theo đúng trình tự? Một cách để đảm bảo bạn có thể giải quyết vấn đề “xì bánh xe” ngay trên đại lộ, trong cơn mưa, hay giữa đêm là đục một lỗ vào bánh xe của bạn mỗi tuần vào buổi trưa ngày Chủ nhật và đi qua công đoạn thay thế nó. Cách thức này rất tốn kém và mất thời gian trong thực tế, nhưng có thể (gần như) miễn phí và tự động trên nền Cloud.
Đó là triết lý khi chúng tôi tạo ra Chaos Monkey – Chú khỉ Hỗn độn, một công cụ ngẫu nhiên vô hiệu hóa những server đang cung cấp dịch vụ của chúng tôi để đảm bảo rằng hệ thống vẫn hoạt động trơn tru khi sự cố phổ biến này xảy ra mà không có bất cứ ảnh hưởng nào đến khách hàng. Tên gọi này đến từ ý tưởng của việc giải phóng một chú khỉ hoang dã với một cây súng vào hệ thống dữ liệu của bạn để ngẫu nhiên bắn bỏ những server và nhai ngấu nghiến những sợi cáp – tất cả thứ đó trong khi chúng tôi vẫn cung cấp dịch vụ cho khách hàng mà không có sự gián đoạn. Bằng việc chạy “Chú khỉ Hỗn độn” này giữa ngày làm việc, trong một môi trường giám sát chặt chẽ với các kỹ sư luôn sẵn sàng giải quyết mọi vấn đề, chúng tôi vẫn có thể học được những điểm yếu trong hệ thống, và xây dựng phương thức khôi phục tự động để giải quyết chúng. Lần kế tiếp khi server bị lỗi lúc 3 giờ sáng trong ngày Chủ nhật, chúng tôi sẽ không cần biết đến.
Lấy cảm hứng từ sự thành công của Chú khỉ Hỗn độn, chúng tôi bắt đầu tạo ra thêm nhiều “loại khỉ” với những kiểu phá hoại khác nhau hoặc phát hiện những điều kiện bất thường, và thử nghiệm khả năng sống sót của hệ thống chúng tôi; Một Biệt đội những chú khỉ ảo giữ cho Cloud an toàn, bảo mật và sãn sàng cao.
Chú khỉ Độ trễ gây ra sự chậm trễ nhân tạo ở tầng giao tiếp giữa client và server của chúng tôi để mô phỏng sự giảm sút chất lượng dịch vụ và đo lường sự phản hồi thích hợp của những dịch vụ thượng nguồn. Thêm nữa, bằng việc tạo sự chậm trễ lớn, chúng tôi có thể mô phỏng một node hoặc ngay cả toàn bộ dịch vụ bị đình trệ (và kiểm chứng khả năng tiếp tục hoạt đông của nó) không thông qua việc tự tay làm cho những server này ngưng trệ. Đây có thể thực sự hữu dụng khi kiểm chứng khả năng chịu lỗi của những dịch vụ mới bằng việc mô phòng sự thất bại của những dịch vụ phụ thuộc, mà không phải làm cho những dịch vụ phụ thuộc này bị mất đi tạm thời trong hệ thống.
Chú khỉ Tuân thủ tìm những máy ảo không theo sát những best practice và tắt ngúm nó đi. Ví dụ, chúng tôi biết rằng nếu chúng tôi tìm được những máy ảo không thuộc bất cứ nhóm auto-scaling nào, thì đó là vấn đề đang chờ để xảy ra. Chúng tôi tắt nó đi để cho những dịch vụ quản lý nó có cơ hội để chạy nó đúng đắn hơn.
Chú khỉ Bác sĩ kiểm tra “sức khỏe” bằng cách gõ nhẹ vào những máy ảo cũng như giám sát những tín hiệu bên ngoài khác (như tải CPU) để phát hiện những máy ảo không khỏe mạnh. Một những máy ảo không khỏe mạnh được phát hiện, bọn chúng sẽ được loại bỏ khỏi dịch vụ và cho dịch vụ quản lý nó thời gian để tìm hiểu nguyên nhân vấn đề, và cuối cùng là bị hủy.
Chú khỉ Tạp vụ đảm bảo môi trường Cloud của chúng tôi hoạt động thoát khỏi sự bừa bãi và thừa thải. Nó tìm kiếm những nguồn tài nguyên không sử dụng và loại bỏ chúng.
Chú khỉ Bảo mật là một phần mở rộng của Chú khỉ Tuân thủ. Nó tìm kiếm những vi phạm và lỗ hổng về bảo mật. Như cấu hình sai AWS Security Groups, và tiêu hủy những máy ảo có những việc liên quan. Nó cũng bảo đảm tất cả những chứng chỉ SSL và DRM của chúng tôi còn hiệu lực hoặc cần gia hạn.
Chú khỉ 10-18 (đại diện cho Localization-Internationalization, hay L10-I18) phát hiện những vấn đề về cấu hình và khởi chạy trong các máy ảo đang phục vụ khách hàng ở nhiều khu vực địa lý khác nhau, sử dụng nhiều ngôn ngữ và bộ ký tự khác nhau.
Khỉ đột Hỗn độn tương tự như Chú khỉ Hỗn độn, nhưng mô phỏng một sự cố lớn đến toàn hệ thống Availability Zone (nhóm Data Center) của Amazon. Chúng tôi muốn kiểm chứng rằng dịch vụ của chúng tôi tự động tái cân bằng tới những Availability Zone khác mà hoàn toàn trong suốt với người dùng hay không có bất cứ sự can thiệp bằng tay nào.
Với Biệt đội Netflix Simian bên cạnh, liên tục thử nghiệm từ khả năng phục hồi đến tất cả những loại vấn đề khác, chúng tôi cảm thấy rất tự tin về khả năng của chúng tôi trong việc xử lý những vấn đề không thể tránh khỏi mà chúng tôi phải trạm chán trong môi trường hoạt động thường nhật và để tối giảm hoặc loại bỏ sự ảnh hưởng của nó đến những khách hàng. Mô hình Cloud khá là mới cho chúng tôi (và tất cả những người khác trong lĩnh vực); khả năng chịu lỗi là một phần công việc tiến triển hằng ngày và chúng tôi có những cách thức để hoàn toàn nhận ra những lợi ích của nó. Nhiều phần của Biệt đội những chú khỉ đã được xây dựng, nhưng phần nhiều vẫn còn nằm trong sự khát vọng – chờ đợi cho những kỹ sư thiên tài gia nhập và biến nó thành một điều thực tế.
Những ý tưởng cho các chú khỉ đang tiến triển nhanh hơn mức chúng tôi có thể bám theo và nếu bạn có những ý tưởng, chúng tôi rất vinh hạnh được nghe thêm! Biệt đội những chú khỉ là một trong những sáng kiến chúng tôi đã thực hiện để nâng cao độ tin cậy của dịch vụ chúng tôi và truyền tải cho khách hàng một dòng chảy giải trí không gián đoạn.
- Yury Izrailevsky, Giám đốc Hạ tầng Hệ thống và Cloud
- Ariel Tseitlin, Giám đốc Giải pháp Cloud
Source: https://medium.com/netflix-techblog/the-netflix-simian-army-16e57fbab116