Calvin đang ngồi trên xe bus để tới văn phòng. Hôm nay Menlo Park se se lạnh và âm u. Một ngày thứ 3 buồn tẻ chẳng khác gì thời tiết ngoài ô cửa. Anh thiu thiu ngủ, cố thiếp đi thêm chút để khỏi phải uống thứ cà phê chán ngắt trên công ty.
Một tiếng chuông vang lên từ điện thoại, phá tan giấc ngủ đang trên đà yên ả. Noti từ app trực hệ thống. Nhìn lướt qua thấy dòng chữ: “Độ nghiêm trọng: Critical”.
Anh vào Slack, kiểm tra lại mấy tin nhắn báo động. Số lượt đăng nhập thất bại tăng mạnh. Số lượt yêu cầu reset mật khẩu cũng tăng chóng mặt. Lượng traffic vào trong trang chủ giảm về gần 0.
“Cái đ gì vậy” Calvin lẩm bẩm. Anh lẹ làng mở Facebook trên điện thoại. Anh thấy News Feed hiện ra, rồi ngay lập tức anh bị văng ra ngoài màn hình đăng nhập. Cố nhập mật khẩu và đăng nhập lại nhưng bất thành. Thử với Insta, cũng tương tự. Vào trên máy tính chẳng khác gì.
Calvin nghĩ đây là sập hệ thống. Ít nhất là hệ thống đăng nhập. Và có thể là sập những phần khác nữa, anh không biết. Nếu đúng vậy thì cực kì nghiêm trọng.
Calvin mở Slack, nhắn vào trong kênh của nhóm trực: “Xin chào. Calvin từ team Authentication. Lượng đăng nhập thất bại và yêu cầu reset mật khẩu tăng mạnh. Traffic giảm về gần 0. Cá nhân tôi không thể đăng nhập Facebook hay Insta. Tôi nghĩ đây là outage*”. Rồi anh tag kỹ sư trưởng nhóm trực, Sarah.
Sau 2 phút, Sarah phản hồi “Hệ thống của team Authentication đang không hoạt động. Ngoài ra, hệ thống của team Marketing Platform cũng đang sập. Team Messenger cũng báo cáo rằng hệ thống của họ đang có vấn đề”. Tin nhắn tiếp theo của Sarah cụt lủn nhưng súc tích: "Tôi đã tạo phòng zoom cho ai đang làm ở nhà, và đã đặt phòng họp 1A trên văn phòng. Các team liên quan hãy vào họp càng nhanh càng tốt".
Vừa hay xe bus đã đến công ty. Adrenaline như chảy khắp cơ thể Calvin. Anh lao vào, quẹt thẻ, bấm thang máy, cắn móng tay trái và lướt Slack tay phải. Vài người xung quanh anh cũng đang cắm mặt vào điện thoại, mặt nhăn nhó đăm chiêu. Josh từ team Messenger ngước lên nhìn anh, động viên: “Buổi sáng chẳng vui vẻ gì nhỉ, Calvin”. Calvin gượng cười, biết thừa rằng lời động viên này cũng là Josh muốn nói với bản thân. Cửa thang máy mở ra, họ rảo bước về cùng một phòng. Phòng họp 1A, phòng họp lớn nhất ở văn phòng, hay trong bối cảnh này, còn được gọi là phòng chiến tranh.
War room, như tên gọi của nó, xuất phát từ đầu những năm 1900, nơi các tướng lĩnh hội họp và đưa ra chiến lược.
Và ở đây hôm nay, có tướng lĩnh thật. Đủ mặt anh tài, từ những kỹ sư trưởng, đến những quản lý cấp cao của các department, và có cả CTO.
Sarah dõng dạc: “Được rồi mọi người. Nhiều hệ thống của chúng ta đang không hoạt động. Quy mô ảnh hưởng là toàn bộ các nền tảng của chúng ta, trên toàn cầu. Cụ thể những hệ thống sau đang sập:
1. Hệ thống đăng nhập (Authentication): người dùng không thể đăng nhập vào các sản phẩm của chúng ta, bao gồm Facebook, Instagram, Threads
2. Hệ thống Marketing (Marketing Platform): các đối tác không thể chạy campaign.
3. Hệ thống Messenger (Messaging Platform): người dùng không thể chat với nhau và các chatbot doanh nghiệp cũng bị tê liệt”
Sarah tiếp tục "Giờ thì mọi người đã biết chuyện gì đang xảy ra. Đây là một sự cố vô cùng nghiêm trọng, và chúng ta cần giải quyết càng nhanh càng tốt. Leader của các team Authentication, Marketing Platform và Messenger ngay lập tức báo lại cho tôi khi tìm ra gốc rễ vấn đề".
Vừa tìm xong cho mình một chỗ ngồi, đồng thời vừa nhảy vào zoom, Calvin thấy mình đang nhìn chằm chằm vào một loạt khuôn mặt đầy lo lắng và mệt mỏi.
Tiếp theo là một sự im lặng căng thẳng, thi thoảng bị phá vỡ bởi tiếng bàn bạc khẽ khàng ở vài góc hoặc tiếng gõ phím nhịp nhàng khi các kỹ sư xem xét và xử lí đống thông tin từ những hệ thống giám sát (gọi là monitoring system). Calvin nhíu mày tập trung, quan sát những dòng lỗi mà hệ thống giám sát bắt được. Có một số chỗ khá lạ. Bình thường sau khi người dùng cố đăng nhập, thông tin sẽ được gửi lên một hệ thống nhỏ để kiểm tra thời gian hết hạn của thông tin đăng nhập. Hệ thống này, một cách nào đó, đang tự động từ chối mọi thông tin đăng nhập, kể cả có hợp lệ hay không. Calvin chạy thử hệ thống này trên máy cá nhân, test thử với thông tin đăng nhập giả lập. Hoá ra có một đoạn code đã lấy sai thời gian hết hạn, khiến nó tự động coi mọi thông tin đăng nhập đều đã hết hạn rồi. Calvin thử sửa và chạy lại, vấn đề đã được giải quyết. Hoặc ít nhất là trên máy anh.
Calvin tạo ngay một yêu cầu sửa code và thông báo cho leader của mình, Phil. “Hay đấy, Calvin. Chạy trên môi trường kiểm thử xem sao” Phil nói. Calvin, nhanh nhẹn đưa đoạn sửa lên môi trường kiểm thử (hay còn gọi là staging environment), và kêu cả team Authentication vào xác minh. Từng người vào test, và họ xác nhận là vấn đề đã được sửa. Phil thở phào nhẹ nhõm, lập tức báo cho Sarah.
Trong khi đó, các team khác cũng đang chạy đua với thời gian. Team Messenger, dưới quyền Alex, sếp của Josh, đã phát hiện ra vấn đề liên quan đến các máy chủ bị quá tải. Team Marketing Platform, dưới quyền Mitch, thì đã chỉ điểm được vấn đề cốt lõi nằm ở việc hệ thống của team này quá phụ thuộc vào hệ thống của team Authentication và không xử lí tốt khi mà hệ thống Authentication sập.
Các leader đã báo cáo lại với Sarah và các quản lý về việc họ đã tìm ra lỗi và đã sửa thành công trên môi trường kiểm thử. Sarah trầm ngâm một lúc, rồi bảo “Phil, anh cứ đưa phần sửa lỗi của team Authentication lên luôn, do phần này đang block các hệ thống còn lại. Mitch và Alex, khi nào Phil xong thì các anh hãy cho phần sửa lên.”
Sức nặng của hàng triệu người dùng cảm thấy thất vọng, cùng với nguy cơ tổn hại đến Meta, cả về doanh thu và danh tiếng, đè nặng bầu không khí. “Phần sửa đã lên.” Sarah thông báo. Calvin lôi điện thoại ra, thử đăng nhập Facebook. “Được rồi” anh thở phào. Anh nhìn thấy gương mặt nhẹ nhõm của Josh và nhiều người khác.
Mọi người nín thở theo dõi số liệu của máy chủ. Dần dần, các con số bắt đầu quay lại bình thường. Hệ thống giám sát không còn bị ngập bởi lỗi. Traffic tăng dần. Không khí lạc quan quay trở lại. Bản sửa lỗi đã có hiệu quả và hầu hết người dùng đã lấy lại được quyền truy cập vào tài khoản của họ.
Tuy nhiên, niềm vui ngắn chẳng tày gang. Sửa chữa chỉ là nửa đầu công việc. Nửa sau là quá trình phân tích mổ xẻ outage, đặt ra những câu hỏi nối tiếp nhau như “tại sao hệ thống đăng nhập lại sập”, “tại sao hệ thống kiểm tra thời gian hiệu lực lại có lỗi”, “tại sao lại có đoạn code gây lỗi”, “tại sao đoạn code này lại vượt qua được các vòng review”, “tại sao không ai phát hiện ra lỗi trên môi trường kiểm thử”, và nhiều câu hỏi sâu hoắm khác.
Ngoài những việc kỹ thuật ra, các bên khác sẽ làm việc để đánh giá lượng tiền bị mất vì sập hệ thống, phản ứng của người dùng và truyền thông, ghi chép và đưa ra thông cáo báo chí cho sự cố lần này.
Khi những câu hỏi trên được trả lời, sẽ có những cải thiện liên quan đến quy trình và cách quản lý, dù ít hay nhiều, để tránh được những lỗi lầm tương tự trong tương lai.
Xin được trích một đoạn hay ho từ anh @wasabi, 1 kỹ sư ở Tesla, nói về sự cố sập Facebook vào tháng 10/2021:
Tới giờ, mình cảm thấy diễm phúc của những gì mình đang làm là sự tự tin vào việc mình có thể được làm những việc đòi hỏi sự chính xác tin cậy cao độ, vì sự mất mát khi ta mắc lỗi là rất lớn. Bí quyết đó chắc chắn không phải là cách nghĩ đi phạt, đi cấm, đi kiểm duyệt, đi đổ lỗi. Vì tất cả những hình thức đó sẽ một phần ngăn cản người ta làm được việc. Một phần bí quyết đó là sự trung dung bình tĩnh để có những quy trình làm người tham gia ít mắc lỗi hơn, và nếu có cá nhân nào mắc lỗi thì ảnh hưởng xấu được giảm thiểu.Và khi ta làm tất cả điều đó rồi mà vẫn có lỗi, thì nhận lỗi, xin lỗi, sửa lỗi, rồi đi tiếp. Như Facebook hôm nay.
* Outage: khái niệm này trong ngành công nghệ có thể được dịch nôm na là hệ thống ngừng hoạt động
Disclaimer: đây là chuyện bịa, dặm thêm chút kiến thức moi mót được về ngành phần mềm =)))))