Lỗi đánh máy nhỏ khiến một hãng hàng không tê liệt
Khám phá cách một lỗi nhập dữ liệu cực nhỏ trong hệ thống máy tính cũ đã gây ra một chuỗi thất bại khiến hàng nghìn chuyến bay bị đình trệ.
Gót chân Achilles của kỷ nguyên số
Sự thật là, vụ đình trệ hàng không kỳ quặc nhất trong lịch sử hiện đại chẳng liên quan gì đến thời tiết xấu hay hỏng động cơ. Tất cả chỉ gói gọn trong một lỗi nhập dữ liệu nhỏ xíu. Bạn có thể nghĩ rằng phải cần đến một cuộc tấn công mạng quy mô lớn mới có thể làm tê liệt cả một đội bay thương mại. Nhưng một sai lệch nhỏ đến mức vi mô - về bản chất là một lỗi đánh máy trị giá 12 xu trong cơ sở dữ liệu hệ thống - đã đủ để kích hoạt sự sụp đổ của toàn bộ hệ thống.
Hãy tưởng tượng một nhà ga nhộn nhịp vào dịp cuối tuần lễ hội bận rộn. Hàng nghìn hành khách đang ngước nhìn bảng thông báo khởi hành. Đột nhiên, các màn hình đóng băng, và mọi chuyến bay đều chuyển sang trạng thái bị hoãn. Các nhân viên tại cổng bị khóa khỏi máy tính, và toàn bộ sân bay rơi vào trạng thái đình trệ.
Đằng sau hậu trường, hệ thống máy tính trung tâm (mainframe) của hãng hàng không đang phải chịu thua trong một cuộc chiến vô vọng. Hàng không thương mại vận hành trên các phần mềm chuyên dụng cao, thường có nguồn gốc từ các hệ thống cũ (legacy systems) từ nhiều thập kỷ trước. Các hệ thống này được thiết kế để xử lý khối lượng dữ liệu khổng lồ với tốc độ ánh sáng.
Nhưng chúng cũng cực kỳ cứng nhắc. Theo các ghi chép lịch sử về Transaction Processing Facility, kiến trúc này ban đầu được phát triển để xử lý hàng nghìn tin nhắn mỗi giây. Các hệ điều hành này quản lý mọi thứ, từ việc xếp chỗ ngồi cho đến các tính toán quan trọng về trọng lượng và cân bằng của máy bay.
Cái giá của những đồng tiền lẻ
Đây chính là nơi lỗi vi mô bắt đầu phát huy tác dụng. Một bản cập nhật định kỳ cho mã số thuế khu vực chứa một lỗi nhỏ. Một dấu thập phân đặt sai vị trí dẫn đến việc tính toán giá vé bị lệch chỉ vỏn vẹn 12 xu.
Nghe có vẻ vô hại. Nhưng máy tính không hiểu khái niệm “gần đúng”. Khi phần mềm bán vé cố gắng xác thực giá vé của hành khách, sự chênh lệch 12 xu đó đã gây ra một lỗi logic nghiêm trọng.
Hệ thống đã cố gắng giải quyết sự sai lệch bằng cách thực hiện lại phép tính. Lần nữa. Và lần nữa. Nó tạo ra một vòng lặp vô hạn (infinite loop). Chỉ trong vòng vài phút, toàn bộ sức mạnh xử lý của máy tính trung tâm đã bị tiêu tốn hoàn toàn bởi chu kỳ không hồi kết này, làm sập mạng lưới dưới sức nặng của một vụ “tắc nghẽn giao thông ảo” gây ra bởi lỗi toán học từ những đồng tiền lẻ.
Không có máy tính trung tâm, các điều phối viên không thể phát lệnh bay. Phi công không thể nhận thông tin về tải lượng nhiên liệu. Các tổ bay ngồi trong buồng lái chỉ biết hoang mang. Họ có đầy bình nhiên liệu và bầu trời quang đãng phía trước. Nhưng nếu không có sự phê duyệt kỹ thuật số từ máy chủ trung tâm, các quy định liên bang nghiêm cấm họ khởi hành từ cửa ra máy bay.
Di sản của những sai lầm nhỏ bé
Đây không phải là lần duy nhất một sơ suất toán học nhỏ gây ra thảm họa. Nếu nhìn lại lịch sử, những con số nhỏ bé thường có thói quen gây ra những sự hủy diệt to lớn. Hãy xem xét bài viết Bài toán tiểu học đã tiêu diệt một con tàu vũ trụ. Trong cả hai trường hợp, logic của con người đã không lường trước được cách máy tính diễn giải dữ liệu một cách máy móc.
Sự mong manh của hạ tầng hiện đại là một bí mật không mấy kín kẽ. Chúng ta xây dựng những mạng lưới khổng lồ, phức tạp bao phủ khắp toàn cầu. Tuy nhiên, chúng lại dựa trên hàng triệu dòng mã, nơi mà chỉ cần một ký tự đặt sai chỗ cũng có thể đánh sập tất cả.
Bạn có thể thấy những lỗ hổng tương tự trong quy hoạch đô thị. Một sai số nhỏ trong kỹ thuật kết cấu từng dẫn đến Lỗi toán học bí mật suýt xóa sổ New York. Chúng ta đặt niềm tin vào những hệ thống vô hình này mỗi ngày mà không nhận ra chúng thực sự mỏng manh đến nhường nào.
Các bộ phận IT của hãng hàng không cuối cùng đã triển khai các biện pháp bảo vệ chống lại các vòng lặp vô hạn do sai lệch giá nhỏ gây ra. Hạ tầng đám mây hiện đại giờ đây sử dụng các “cầu dao kỹ thuật số” để ngăn chặn các vòng lặp vô tận này trước khi chúng đánh sập mạng lưới.
Nhưng di sản của lỗi đánh máy nhỏ bé đó vẫn là một lời nhắc nhở đanh thép. Chúng ta bay trên bầu trời trong những ống kim loại được cung cấp năng lượng bởi những động cơ phản lực gầm rú. Chúng ta tin tưởng vào vật lý và các phi công được đào tạo bài bản.
Tuy nhiên, chúng ta hiếm khi nghĩ về những sợi chỉ kỹ thuật số mong manh đang giữ toàn bộ hoạt động đó lại với nhau. Nếu một lỗi 12 xu có thể khiến hàng nghìn người bị mắc kẹt, thì còn những lỗi nhỏ nào khác đang ẩn mình trong các hệ thống mà chúng ta đang dựa dẫm vào ngay lúc này?