Máy chủ dăm ba hôm lại sập? Cùng hóng xem các pháp sư NASA thiết kế máy tính cho tàu Artemis II thế nào để không bị màn hình xanh giữa vũ trụ.

Đang code dạo mà app sập lên sập xuống vì memory leak hay đứt cáp quang? Xoàng thôi các ông. Tưởng tượng các ông đang ngồi trên một quả phao khổng lồ lao ra ngoài không gian với vận tốc xé gió, xung quanh là bức xạ vũ trụ chực chờ nướng chín bo mạch, và nếu cái máy tính điều khiển nó hiện màn hình xanh (Blue Screen of Death)... thì đ*o có ai ở đó để bấm nút Reset hay tung hotfix đâu.
Đó chính xác là bài toán sinh tử mà các lão quái vật ở NASA phải đối mặt khi chế tạo máy tính cho tàu vũ trụ Artemis II. Cùng tôi chém gió xem họ đã làm cái trò ma giáo gì để con tàu này không bị toang giữa đường nhé.
Nhiều anh em thắc mắc: "Sao NASA không ra mẹ TNC hay GearVN mua con chip Intel Core i9 mới nhất mà lắp vào tàu vũ trụ cho nó mượt, cắn RAM cho sướng?"
Câu trả lời ngắn gọn: Lên vũ trụ, mấy con chip xịn xò đấy chỉ có nước vứt đi.
Ở ngoài không gian, không có tầng khí quyển bảo vệ như ở Trái Đất. Các hạt năng lượng cao và bức xạ vũ trụ (cosmic rays) bay lung tung. Lâu lâu, một hạt bay xuyên qua con chip của bạn, va vào một ô nhớ và vô tình lật giá trị từ 0 sang 1 (hoặc ngược lại). Hiện tượng này gọi là Bit Flip hay Single Event Upset (SEU).
Ở Trái Đất, lâu lâu máy bạn bị lỗi vặt do bức xạ thì cùng lắm là crash game. Còn ở ngoài không gian, một cái bit bị lật sai chỗ có thể khiến hệ thống điều hướng chỉ nhầm tàu của bạn đâm thẳng vào Mặt Trăng thay vì bay quanh nó. Thế nên, phần cứng cho không gian không cần chạy nhanh nhất, mà cần phải "lì đòn" nhất.
Để giải bài toán này, các pháp sư NASA không chơi trò bọc chì toàn bộ con tàu (vì nó quá nặng). Thay vào đó, họ dùng một kỹ thuật kinh điển nhưng cực kỳ hiệu quả: Triple Modular Redundancy (TMR) - hiểu nôm na là trò "Dân chủ 3 người".
Thay vì dùng 1 máy tính, họ chạy 3 cái máy tính độc lập song song với nhau (Lockstep execution). Cả 3 thằng này cùng xử lý một lượng dữ liệu giống hệt nhau, cùng chạy một hàm, và cùng đưa ra kết quả.
Sẽ có một thằng "Trọng tài" (Voter) đứng ra so kết quả.
Đây là cách NASA đảm bảo hệ thống Fault-Tolerant (chịu lỗi) hoạt động trơn tru. Dù một phần hệ thống có ngỏm củ tỏi thì tổng thể vẫn sống nhăn răng.
Dù bài viết gốc trên Hacker News được vote lên tận hơn 500 điểm, dân tình cũng chia phe combat khá xôm:
Anh em mình làm web, làm app có thể không phải đối mặt với bức xạ vũ trụ, nhưng "bức xạ" của chúng ta là gì? Là đứt cáp quang biển, là AWS sập region, là ông dev thực tập lỡ tay drop database, hoặc một cái API bên thứ 3 tự nhiên lăn đùng ra chết.
Bài học từ NASA rất rõ ràng:
Hệ thống xịn không phải là hệ thống không bao giờ có bug, mà là hệ thống có bug nhưng vẫn đ*o sập.
Nguồn hóng hớt: