Chuyện về cái hộp đen trong máy bay, và những “hộp đen” trong ngành lập trình

Có thể bạn chưa biết: Cách đây tầm 5-60 năm, đi máy bay là một hình thức di chuyển cực kì nguy hiểm. Thời đấy, máy bay rơi hoặc tai nạn là chuyện … như cơm bữa, nhiều hãng hàng không bị tận 4-5 vụ tai nạn trong 1-2 năm.

Thế nhưng, nhờ 1 thiết bị nho nhỏ mà vô cùng quan trọng, ngành hàng không có thể tìm hiểu lý do máy bay rơi, từ đó cải thiện dần sau mỗi tai nạn. Sau hơn 60 năm, cho đến nay, đi máy bay đã trở thành 1 trong những phương pháp di chuyển an toàn nhất.

Muốn biết thiết bị nho nhỏ này là gì, nó có dính dáng gì đến ngành lập trình, bạn hãy đọc bài viết nhé!

Từ chiếc hộp đen trong máy bay

Ngày xưa, mỗi lần máy bay rơi, các hãng hàng không gần như … bó tay khi điều tra nguyên nhân dựa theo hiện trường vụ tai nạn. Thế là, họ nghĩ ra 1 cách: Tại sao không lưu trữ lại những gì đã xảy ra trong quá trình bay để xem lại cho dễ?

Hộp đen ra đời từ đó! Mỗi máy bay thường được trang bị 2 hộp đen, 1 hộp để ghi âm trong buồng lái, 1 hộp khác để ghi lại những thông số kĩ thuật của máy bay (tốc độ, độ cao v…v). Hai hộp này phải đảm bảo chống ăn mòn, chống sốc, chống nhiệt cực mạnh, để có thể sống sót khi có tai nạn máy bay.

Lêu lêu, hộp màu cam chứ không phải đen!

Nhờ những hộp đen này, mỗi khi có tai nạn, các nhà nghiên cứu có thể đọc thông tin và tìm hiểu nguyên nhân tai nạn xảy ra (phi công xử lý sai, động cơ lỗi v…v), từ đó có cách giải quyết phù hợp.

Những hộp đen trong ngành lập trình

So với ngành hàng không, số lượng những vụ “tai nạn” trong ngành lập trình chắc nhiều gấp cả trăm cả ngàn lần. Nhẹ thì chỉ lệch vài cái nút trong giao diện, nặng thì gây chết người, sập luôn hệ thống, thiệt hại cả chục ty đồng!

Do vậy, ngành lập trình cũng có 1, 2 thứ na ná cái hộp đen, giúp anh em lập trình viên tìm hiểu mỗi khi hệ thống bị sập hoặc bị sai:

  • Memory Dump/Crash Dump: Khi chương trình/hệ điều hành bị crash, ta sẽ lưu trữ toàn bộ thông tin trong RAM hiện hành xuống 1 file. Sau này, mở file dump này lên, ta có thể điều ra những tác vụ đọc/ghi nào, đụng tới vùng nhớ nào đã gây crash.
  • Log: Như mình đã giới thiệu trong bài viết về logging, log cũng giống như hộp đen, ghi lại những trạng thái của server, của chươn trình. Khi hệ thống bị sập, ta cũng kiểm tra log để xem đoạn code này gây lỗi, làm sập hệ thống

Nhờ những “hộp đen” này, ta có thể tìm hiểu và sửa lỗi, giúp chương trình hoạt động tốt hơn. Còn nếu bạn code mà không lưu log, không có monitoring thì… RIP bạn, mỗi lần crash là ói máo nha =)).

Mỗi lần Window bị màn hình xanh, nó cũng sẽ lưu lại crash dump để sau này điều tra

Một số điểm cần lưu ý khi dùng log

Tất nhiên, các hộp đen này không phải vạn năng. Hộp đen máy bay chứa rất nhiều thông tin, nhưng nếu máy bay… rơi xuống biển, rớt mất xác thì không thể nào tìm ra hộp đen mà lấy thông tin được (MH370 là 1 ví dụ).

Các chuyên gia đang đề xuất để hộp đen truyền thông tin real-time, nhưng còn lo ngại nhiều vấn đề như riêng tư/bảo mật v..v.

Trong ngành lập trình cũng vậy. Nếu các bạn viết log, tạo crash dump nhưng không access được để xem log thì cũng coi như vô dụng. Một số hệ thống stream log, có thể xem log real-time. Tuy vậy, ta cũng nên cẩn thận về những thông tin lộ ra trong file log (Như Facebook cũng từng lộ hành triệu password trong file log).

Ngoài ra, trong ngành lập trình, số lượng log rất nhiều và khủng. Ta còn phải nghĩ cách lưu trữ log, làm sao đọc và query, tìm thông tin hữu ích từ log. Các bạn có thể xem lại bài viết về ELK Stack, và chuyện nên làm sao khi sập server để tìm hiểu thêm nha.

Với Kibana + Elasticsearch, bạn có thể dễ dàng query, filter log, vẽ biểu đồ cool ngầu v..v

Tạm kết

Các bạn thấy đấy, bản thân ngành hàng không cũng phải trải qua hơn 60 năm mới làm cho các chuyến bay an toàn như bây giờ.

Làm app cũng vậy, app vừa ra mắt, chức năng mới thêm thế nào cũng sẽ có lỗi, có vấn đề, xui xui thì crash. Chuyện này là hoàn toàn bình thường, không sao cả. Nếu chịu khó cải thiện, sau 1 thời gian thì app/chức năng cũng sẽ ổn định thôi.

À nhắc mới nhớ, nếu hệ thống của các bạn không có log, không có monitoring thì nhớ thêm vào nhé. Kẻo lúc nó sập không có “hộp đen” để tìm hiểu lý do sập đâu nha!

 

Note vui: Gọi là hộp đen nhưng lại … không có màu đen, mà lại có màu cam cam tươi sáng.

Có khá nhiều lời đồn về vấn đề này, có người nói là do phiên bản đầu tiên ghi âm để trong hộp nhỏ màu đen; có người nó khi máy bay bị cháy, mở ra thì cái hộp …. đen thui nên gọi là hộp đen luôn.

Giang hồ vẫn không ai biết tại sao nó lại gọi là “hộp đen” chứ không phải “hộp cam”….

 

Nguồn:

One thought on “Chuyện về cái hộp đen trong máy bay, và những “hộp đen” trong ngành lập trình”

  1. “nhiều hạn hàng không bị tận 4-5 vụ tai nạn trong 1-2 năm.”, nhiều hãng hàng không mới đúng chứ anh 😀

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s