0
0
Lập trình
Admin Team
Admin Teamtechmely

Nguyên nhân một dòng mã khiến AT&T bị tổn thất 60 triệu USD

Đăng vào 3 ngày trước

• 4 phút đọc

Chủ đề:

TechMely

Giới thiệu về AT&T

AT&T Inc. (American Telephone and Telegraph Company) là một tập đoàn viễn thông đa quốc gia nổi tiếng của Mỹ. Trụ sở chính của họ nằm tại Whitacre Tower ở trung tâm thành phố Dallas, Texas. AT&T hiện đang đứng thứ tư thế giới về doanh thu trong lĩnh vực viễn thông và là nhà cung cấp dịch vụ di động lớn nhất tại Hoa Kỳ.

Sự cố nghiêm trọng vào năm 1990

Vào ngày 15 tháng 1 năm 1990, trung tâm điều hành của AT&T ở New Jersey đã phát hiện ra một sự cố trục trặc hệ thống nghiêm trọng. Hàng loạt cảnh báo màu đỏ xuất hiện trên màn hình mạng, cho thấy một tình huống khẩn cấp.

Mặc dù nỗ lực khắc phục, mạng của AT&T bị sự cố trong suốt 9 giờ, với tỷ lệ kết nối cuộc gọi thất bại lên đến 50%. Hậu quả của sự cố này khiến AT&T thiệt hại trên 60 triệu USD, ảnh hưởng đến hơn 60.000 người dùng ở Mỹ bị mất liên lạc hoàn toàn, cũng như làm trì hoãn 500 chuyến bay thương mại, tác động đến 85.000 hành khách.

Nguyên nhân của sự cố

Vấn đề bắt nguồn từ một thiết bị chuyển đổi tại New York, nơi mà một lỗi phần mềm từ bản cập nhật gần đây đã gây ra sự gián đoạn rộng rãi. Lỗi này không được phát hiện trong quá trình kiểm tra nhiều lớp, điều này thật bất ngờ vì AT&T nổi tiếng với quy trình kiểm tra kỹ lưỡng của họ.

Lỗi mã hóa nghiêm trọng

Nguyên nhân gốc rễ được xác định là một lỗi trong mã phần mềm được triển khai cho tất cả các thiết bị chuyển đổi. Lỗi này, nằm trong chương trình C, dẫn đến việc ghi đè dữ liệu và reset hệ thống. Dưới đây là mã giả xác định vấn đề:

c Copy
1  while (ring receive buffer not empty 
          and side buffer not empty):

2    Initialize pointer to first message in side buffer
        or ring receive buffer

3    get copy of buffer

4    switch (message):

5       case (incoming_message):

6             if (sending switch is out of service):

7                 if (ring write buffer is empty):

8                     send "in service" to status map

9                 else:

10                    break // Lỗi phát sinh ở đây!
                  end if

11           process incoming message, set up pointers to
                              optional parameters

12           break
       END SWITCH

13   do optional parameter work
  • Nếu ring write buffer KHÔNG rỗng, câu lệnh if ở dòng 7 sẽ bị bỏ qua và câu lệnh break ở dòng 10 sẽ được thực hiện.
  • Tuy nhiên, để chương trình hoạt động bình thường, dòng 11 cần phải được thực thi.
  • Hậu quả là dữ liệu bị ghi đè, dẫn tới việc phần mềm tự sửa lỗi phát hiện được và tự động khởi động lại thiết bị chuyển đổi.

Giải pháp và khôi phục

Phải mất 9 giờ để kỹ sư của AT&T khôi phục lại hệ thống. Họ chủ yếu thực hiện việc rollback các thiết bị chuyển mạch về phiên bản mã trước đó, tức là phiên bản đã hoạt động bình thường. Để hiểu rõ nguyên nhân lỗi, các kỹ sư mất tới hai tuần.

Bài học rút ra

Sự cố này không chỉ là một chuỗi sự kiện đơn lẻ; đó là một thất bại trong toàn bộ quy trình. Mặc dù AT&T đã có hệ thống mạng mạnh mẽ với khả năng tự phục hồi, nhưng chỉ một dòng mã sai đã gây ra sự cố nghiêm trọng, cắt đứt một nửa đường dây liên lạc chính của cả nước.

Hầu hết các sự cố lớn trong các công ty ngày nay đều được gây ra bởi lỗi thiếu sót hoặc bất cẩn trong quy trình. Các công ty hiện đại có quy trình tốt hơn, nhưng cũng không hoàn toàn miễn nhiễm với sai lầm, như Google đã phản ánh về sự gián đoạn toàn cầu của YouTube vào năm 2016.

Hy vọng qua câu chuyện trên, bạn sẽ nhận ra tầm quan trọng của quy trình kiểm soát chất lượng trong công nghệ.

Chúc mừng năm mới!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào