Một trong những tranh luận lớn nhất trong cộng đồng công nghệ thế giới, và lan cả về Việt Nam trong tuần qua, là “tech carbon foot print – sự ô nhiễm môi trường của công nghệ” cùng với sự rò rỉ thông tin ngày càng khủng khiếp.
Và chuỗi bài viết của nhóm The Atlantic về việc thay đổi cách chúng ta đang lập trình, trước khi đại họa ập đến chính là tâm điểm của tranh luận này.
Phần mềm đang “ăn” cả thế giới
Suốt 6 tiếng đồng hồ, đêm ngày 10/4/2014, toàn bộ đường dây liên lạc với cảnh sát, 911, bị gián đoạn. Tất cả những ai gọi đến cảnh sát đều nhận tín hiệu báo bận ở đầu bên kia. Một người phụ nữ ở Seattle đã cố gọi 911 ít nhất 37 lần, khi một kẻ lạ mặt đang cố gắng đột nhập vào nhà. Đến khi hắn ta vào được phòng khách qua cửa sổ, không còn cách nào khác, cô nắm lấy dao bếp để tự vệ.
Sự cố 911 bị gián đoạn, không phải chỉ xảy ra một lần duy nhất. Theo báo cáo, sự cố được truy nguyên từ phần mềm chạy trên máy chủ ở Englewood, Colorado. Được vận hành bởi nhà cung cấp hệ thống có tên Intrado, máy chủ này giữ bộ đếm số lượng cuộc gọi đến 911 được chuyển đến điều phối viên trên toàn nước Mỹ. Các lập trình viên của Intrado đã đặt mức trần của bộ đếm và họ đã chọn một số thuộc hàng triệu.
Ngay trước nửa đêm ngày 10 tháng 4, bộ đếm đã vượt quá con số được chọn, dẫn đến sự hỗn loạn. Vì nó được dùng để tạo ra mã định danh duy nhất cho mỗi cuộc gọi, nên khi vượt quá số lượng đặt ra, bộ đếm từ chối nhận các cuộc gọi mới. Và bởi vì các lập trình viên không lường trước được vấn đề, họ đã không tạo ra hệ thống cảnh báo khi số lượng cuộc gọi sắp vượt ngưỡng. Không một ai biết chuyện gì đang xảy ra. Các trung tâm điều phối ở Washington, California, Florida, Carolinas và Minnesota, phục vụ 11 triệu người Mỹ, đã vật lộn để tìm ra lý do các cuộc gọi đến đều bị báo bận. Phải đến sáng hôm sau, họ mới xác định nguyên nhân là do phần mềm của Intrado ở Englewood và cách xử lý chỉ là thay một con số, mức trần.
Cách đây không lâu, các cuộc gọi khẩn cấp đến 911 đều được xử lý tại địa phương. Việc mất liên lạc không quá nghiêm trọng, dễ dàng tìm ra nguyên nhân và khắc phục. Nhưng ngày nay, với sự gia tăng phổ biến điện thoại di động, sẽ ra sao khi mọi người đều có thể nhắn tin hay gửi video cho nhân viên trực 911? Thực tế này đã thúc đẩy việc phát triển một hệ thống phức tạp hơn dựa trên internet. Cũng từ đó, lần đầu tiên, nước Mỹ xảy ra sự cố mất liên lạc đến 911 trên toàn quốc. Và cho đến nay, vấn đề này đã xảy ra 4 lần.
Người ta nói rằng phần mềm đang “ăn” cả thế giới. Càng ngày càng nhiều các hệ thống quan trọng từng được vận hành một cách máy móc hay thủ công, đang chuyển sang phụ thuộc vào những đoạn code. Hậu quả tai hại trở nên rõ ràng vào mùa hè năm 2015. Chỉ trong cùng một ngày, hãng hàng không United Airline hạ cánh toàn đội bay của mình vì một vấn đề với hệ thống quản lý khởi hành; toàn giao dịch bị đình chỉ trên thị trường chứng khoáng New York sau khi phần mềm cập nhật; trang chủ của tạp chí trực tuyến phố Wall bị sập; và hệ thống 911 ở Seattle bị gián đoạn một lần nữa, lần này vì một bộ định tuyến khác bị lỗi. Việc sập đồng loạt của quá nhiều phần mềm hệ thống ban đầu có vẻ là dấu hiệu của một cuộc tấn công mạng diện rộng. Tuy nhiên, điều đáng sợ là, tất cả vấn đề trên chỉ xảy ra một cách... ngẫu nhiên.
Vượt quá khả năng quản lý của người
“Lúc chúng ta còn sử dụng hệ thống cơ điện, chúng ta thường có thể kiểm tra chúng một cách triệt để, và biết khi nào chúng quá tải.” - Nancy Leveson, giáo sư hàng không và du hành vũ trụ tại Viện Công nghệ Massachusett, chia sẻ. Cô là người đã nghiên cứu về an toàn phần mềm trong 35 năm. Nancy được biết đến với nghiên cứu về Therac-25, một cỗ máy xạ trị đã dẫn đến cái chết của 6 bệnh nhân vì lỗi phần mềm. “Chúng ta có thể nghĩ ra được tất cả những gì hệ thống đó có thể làm, tất cả những trường hợp có thể xảy ra.” Chẳng hạn, các khóa liên động điện cơ điều khiển vị trí của đường ray ở các điểm giao nhau. Chúng chỉ có một vài cấu hình nhất định. Chỉ cần một vài trang tài liệu đã có thể mô tả toàn bộ hệ thống và hoàn toàn có thể cho tàu chạy thử trên từng cấu hình để xem nó hoạt động như thế nào. Có nghĩa là, một khi ai đó xây dựng và thử nghiệm hệ thống cơ điện, họ hoàn toàn biết chính xác những gì họ sẽ gặp phải.
Phần mềm thì khác. Chỉ cần chỉnh sửa một đoạn trong một file nào đó, cùng là một khối nhựa vô thức có thể trở thành hệ thống lái tự động hoặc hệ thống kiểm soát hàng tồn kho. Tính linh hoạt chính là điều kỳ diệu của phần mềm, nhưng cũng là một lời nguyền. Bởi vì các đoạn code vô cùng dễ dàng bị thay đổi, nên phần mềm cũng biến đổi liên tục. Và vì nó cũng không bị giới hạn về vật lý, một cỗ máy chạy phần mềm phức tạp hơn gấp hàng ngàn lần so với một cỗ máy cơ - chúng có xu hướng phát triển mà không bị ràng buộc. “Vấn đề là”, Nancy viết trong một cuốn sách, “con người đang cố gắng xây dựng hệ thống có trí tuệ vượt quá khả năng quản lý của họ”.
Khung tiêu chuẩn nhằm kiểm soát các sai sót kỹ thuật được người ta phát triển ngay sau Thế chiến Thứ 2, thời mà trước khi phần mềm ra đời, cho các hệ thống cơ điện. Ý tưởng là, chúng ta có thể làm cho cả hệ thống dễ kiểm soát bằng cách khiến cho từng phần của nó dễ kiểm soát (make something reliable by making its parts reliable). Ví dụ, với mỗi động cơ máy bay có thể chịu được 40.000 chu kỳ cất cánh và hạ cánh, người ta kiểm soát rủi ro bằng cách lập kế hoạch dự phòng cho các sự cố có thể xảy ra, và đó là lý do mỗi máy bay có hai động cơ. Nhưng phần mềm thì không bị hỏng được. Lỗi của phần mềm Intrado không giống như đinh tán bị lỗi dẫn đến sự cố máy bay. Phần mềm hoạt động đúng như những gì nó được bảo phải làm. Lý do phần mềm “bị lỗi” là do nó bị bảo làm những điều sai. Sai sót của phần mềm là sai sót trong quá trình nhận thức và tưởng tượng. Intrado thật sự có một bộ định tuyến dự phòng, thứ mà nếu được chuyển sang tự động, sẽ khắc phục sự cố 911 ngay lập tức. Tuy nhiên, theo mô tả báo cáo trên FCC, “tình huống xảy ra tại điểm logic trong phần mềm mà nó không được lập trình để chạy bất cứ hành động khắc phục tự động nào.”
Đây chính là vấn đề với việc viết code, nó khác hoàn toàn với việc chế tạo những công cụ hữu hình. “Sự phức tạp và tinh vi,” như Nancy nói, “hoàn toàn trở nên vô hình trước mắt.”