10 Bước Thực Hiện Post-Mortem Ngăn Ngừa Sự Cố
Trong bài viết trước, chúng ta đã thảo luận về cách mà các sự cố thường xuất hiện vào cuối buổi chiều thứ Sáu, và cách mà chúng thường được xử lý như những sự kiện tách biệt. Chúng ta bỏ qua nguyên nhân sâu xa, dập tắt ngọn lửa, thở phào nhẹ nhõm... cho đến khi mọi thứ lặp lại.
Sự lặp lại này dẫn đến một chu kỳ vĩnh viễn, nơi mà chúng ta luôn trở lại điểm khởi đầu. Làm thế nào để phá vỡ mô hình này?
Hãy bắt đầu với một phép ẩn dụ mạnh mẽ.
Tai nạn ô tô xảy ra hàng ngày, thường do những lý do tương tự: phân tâm, liều lĩnh, thiếu bảo trì.
Ít được điều tra, ít được tài liệu hóa, và gần như không có gì thay đổi. Trong khi đó, tai nạn hàng không rất hiếm, nhưng khi xảy ra, chúng được phân tích sâu sắc. Mỗi chi tiết được nghiên cứu, thảo luận và tài liệu hóa. Những bài học kinh nghiệm được chuyển thành tiêu chuẩn, hướng dẫn và đào tạo. Kết quả là một ngành công nghiệp phát triển qua mỗi sai sót, và làm cho chuyến bay tiếp theo an toàn hơn.
Trong thế giới công nghệ, chúng ta cũng nên làm như vậy. Các sự cố xảy ra, nhưng việc lặp lại những sai lầm giống nhau không thể trở thành một phần trong quy trình của chúng ta.
Một công cụ mạnh mẽ cho sự chuyển đổi này là post-mortem: một phân tích có cấu trúc, có tính đồng cảm và hợp tác về các sự kiện dẫn đến khủng hoảng, tập trung vào việc học hỏi, không phải trừng phạt.
Dưới đây là 10 bước thực tiễn để thực hiện một post-mortem đi xa hơn bề mặt và thực sự tạo ra sự tiến bộ liên tục.
1. Chọn Thời Điểm Thích Hợp
Giống như không điều tra một vụ tai nạn trong khi đang cứu hộ, không nên thực hiện một post-mortem ngay sau sự cố.
Tránh thực hiện phân tích ngay sau sự cố. Ở thời điểm này, cảm xúc còn đang dâng trào và có thể thiếu rõ ràng. Ngược lại, chờ đợi quá lâu có thể dẫn đến việc quên đi các chi tiết quan trọng.
📌 Khuyến nghị: lên lịch cho post-mortem từ 2 đến 5 ngày làm việc sau khủng hoảng, đảm bảo thời gian cho phân tích và chuẩn bị mà không để vụ việc nguội đi.
2. Xây Dựng Một Dòng Thời Gian Rõ Ràng
Một trong những bước đầu tiên là tái hiện chuỗi sự kiện, như thể chúng ta đang kể một câu chuyện thật, với đầu, giữa và cuối.
Bao gồm:
- Khi nào và làm thế nào vấn đề được phát hiện?
- Những cảnh báo nào đã được tạo ra?
- Ai đã được huy động?
- Những quyết định nào đã được đưa ra?
- Khi nào và làm thế nào hệ thống đã được ổn định?
📌 Công cụ hữu ích: tạo một dòng thời gian trực quan và hợp tác. Điều này giúp tất cả những người tham gia có sự hiểu biết chung về sự việc.
3. Tham Gia Những Người Phù Hợp
Đây không phải là một cuộc họp mở. Post-mortem nên bao gồm những người có bối cảnh và có thể đóng góp thông tin giá trị.
Bao gồm:
- Những người đã tham gia vào khủng hoảng;
- Đại diện từ các lĩnh vực bị ảnh hưởng;
- Các chuyên gia có thể đề xuất cải tiến thực sự.
📌 Tránh số lượng người tham gia quá đông. Quá nhiều người trong phòng có thể cản trở thảo luận và làm cho cuộc họp trở nên không hiệu quả.
4. Tạo Một Môi Trường An Toàn
Lỗi xảy ra. Nhưng khi môi trường là nơi trừng phạt hoặc cạnh tranh, mọi người sẽ im lặng. Và nơi không có sự minh bạch, không có học hỏi.
📌 Tạo không gian tin cậy:
- Nhấn mạnh rằng mục tiêu không phải là chỉ trích ai, mà là hiểu nguyên nhân và bối cảnh;
- Đánh giá cao sự dũng cảm của những người chia sẻ sai sót;
- Áp dụng mô hình post-mortem không có trách nhiệm, tập trung vào hệ thống, không phải con người.
5. Đảm Bảo Hiểu Biết Cho Tất Cả
Không phải ai trong phòng cũng nói cùng một ngôn ngữ kỹ thuật. Và ngay cả giữa các kỹ thuật viên, có nhiều cấp độ và chuyên môn khác nhau.
📌 Tránh thuật ngữ chuyên ngành hoặc giải thích không đầy đủ;
📌 Giải thích các từ viết tắt, quy trình hoặc thuật ngữ;
📌 Nhớ rằng: trách nhiệm về một giao tiếp rõ ràng luôn thuộc về người nói.
Điều này củng cố sự hiểu biết và hợp tác, tránh những hiểu lầm có thể trở thành những khủng hoảng mới.
6. Xác Định Các Yếu Tố Góp Phần
Thật hấp dẫn khi tìm kiếm một nguyên nhân duy nhất, nhưng sự thật là các khủng hoảng là đa yếu tố. Những sai sót nhỏ, quyết định, giả định hoặc sự im lặng cộng lại cho đến khi có điều gì đó bị gãy.
Một cách hiệu quả để tìm ra những nguyên nhân này là kỹ thuật 5 Tại Sao.
📌 Ý tưởng rất đơn giản: hỏi “tại sao?” ít nhất năm lần từ vấn đề đã xác định, cho đến khi đến được nguồn gốc sâu xa nhất và lập bản đồ các yếu tố góp phần.
👉 Ví dụ thực tế:
Vấn đề: Trang web đã ngừng hoạt động trong 30 phút.
1️⃣ Tại sao trang web ngừng hoạt động? → Bởi vì máy chủ chính đã bị treo.
2️⃣ Tại sao máy chủ bị treo? → Bởi vì CPU đang ở mức 100%.
3️⃣ Tại sao CPU đang ở mức 100%? → Bởi vì có một đợt lưu lượng truy cập không mong đợi.
4️⃣ Tại sao chúng tôi không mong đợi lưu lượng này? → Bởi vì đội ngũ marketing đã phát động một chiến dịch mà không thông báo cho đội ngũ hạ tầng.
5️⃣ Tại sao không có sự giao tiếp giữa các đội? → Bởi vì không có một quy trình chính thức để tích hợp giữa marketing và công nghệ.
Các yếu tố góp phần đã được xác định
- Giao tiếp không đủ: Không có kênh hoặc nghi thức nào được xác định để đồng bộ hóa các phát hành giữa marketing và hạ tầng.
- Giám sát phản ứng: Thiếu cảnh báo chủ động cho các biến động trên mức nhất định của CPU hoặc lưu lượng.
- Autoscaling chưa được cấu hình (HPA): Horizontal Pod Autoscaler đã bị thiếu hoặc có ngưỡng quá cao, cản trở việc tự động mở rộng tài nguyên.
- Thiếu kiểm tra tải: Có thể, chưa bao giờ thực hiện kiểm tra căng thẳng hoặc tải để xác thực khả năng trong các tình huống cao điểm.
- Quy trình phản ứng với sự cố yếu: Không có runbooks rõ ràng hoặc vai trò được xác định để ứng phó nhanh chóng trong khủng hoảng.
- Giả định không được tài liệu hóa: Đã ngầm hiểu rằng “nếu mọi người được thông báo trên Slack, thì đã đủ”, nhưng không đảm bảo được sự hiển thị hoặc xác nhận.
7. Đánh Giá Phản Ứng Trong Khủng Hoảng
Hơn cả việc hiểu vấn đề, điều quan trọng là phân tích cách mà đội ngũ đã phản ứng.
Chia việc đánh giá thành ba phần:
- Điều gì hoạt động tốt và nên được lặp lại?
- Điều gì không hoạt động và cần bị loại bỏ hoặc điều chỉnh?
- Điều gì có thể đã được thực hiện khác đi?
📌 Câu hỏi hữu ích:
- Mọi người có biết phải làm gì không?
- Có tài liệu rõ ràng không?
- Giao tiếp giữa các đội có trôi chảy không?
- Có những quyết định đúng đắn nào đã đẩy nhanh giải quyết không?
👉 Đánh giá cao những gì đã đúng. Ăn mừng những thành công tạo ra sự tin cậy và xây dựng sự trưởng thành trong tổ chức.
8. Tạo Kế Hoạch Hành Động Cụ Thể
Một post-mortem không có hành động rõ ràng giống như một báo cáo bị bỏ qua trong ngăn kéo.
Đối với mỗi yếu tố đã xác định, hãy định nghĩa:
- Một hành động phòng ngừa hoặc khắc phục;
- Một người phụ trách rõ ràng;
- Một thời hạn thực tế;
- Một tiêu chí hoàn thành.
Để trình bày một cách ngắn gọn hơn, chúng ta hãy tập trung vào 3 yếu tố chính đã được xác định:
- Giao tiếp không đủ
- Hành động: Thiết lập một “Release Alignment” hai tuần một lần giữa marketing và hạ tầng.
- Người phụ trách: Lãnh đạo Hạ tầng.
- Thời hạn: 2 tuần.
- Tiêu chí hoàn thành: Cuộc họp đầu tiên được thực hiện và biên bản được xác nhận bởi cả hai đội.
- Giám sát phản ứng
- Hành động: Cấu hình cảnh báo chủ động trong Prometheus/Grafana cho CPU > 70% và lưu lượng > 80% công suất.
- Người phụ trách: Kỹ sư Quan sát.
- Thời hạn: 1 tuần.
- Tiêu chí hoàn thành: Cảnh báo đã được thử nghiệm với mô phỏng lưu lượng đỉnh và được phê duyệt trong staging.
- Autoscaling chưa được cấu hình (HPA)
- Hành động: Triển khai HPA trong cluster Kubernetes với ngưỡng để tự động mở rộng.
- Người phụ trách: DevOps.
- Thời hạn: 10 ngày.
- Tiêu chí hoàn thành: Kiểm tra tải cho thấy khả năng mở rộng mà không làm giảm hiệu suất.
Với kế hoạch rút gọn này, mỗi hành động có sự rõ ràng về “cái gì”, “ai”, “khi nào” và “làm thế nào để đo lường”, đảm bảo rằng “ngày của con sóc” sẽ không lặp lại.
📌 Và điều quan trọng nhất: theo dõi việc thực hiện. Học hỏi chỉ trở thành thực tiễn nếu được thực hiện.
9. Tài Liệu Mọi Thứ Với Sự Rõ Ràng Và Ý Định
Điều làm cho chúng ta trở thành một loài tiến bộ không chỉ là ngôn ngữ, mà là khả năng ghi chép và truyền đạt kiến thức một cách đồng bộ qua các thế kỷ.
Tài liệu về một khủng hoảng phục vụ cho những người khác, trong các bối cảnh khác nhau, có thể hiểu, học hỏi và tránh những sai lầm tương tự.
📌 Bao gồm:
- Dòng thời gian;
- Các yếu tố đã xác định;
- Các hành động đã thực hiện;
- Các bài học đã học;
- Các khuyến nghị và ghi chú hữu ích.
Cũng như các hướng dẫn của ngành hàng không được cập nhật sau mỗi tai nạn, chúng ta nên sử dụng các sự cố của mình để xem xét quy trình và tiêu chuẩn của mình. Tài liệu chính là nơi học hỏi đó được cụ thể hóa.
10. Chia Sẻ Các Bài Học Đã Học (Bất Cứ Khi Nào Có Thể)
Học hỏi mà bị kẹt trong một đội là kiến thức bị lãng phí. Bất cứ khi nào có thể, hãy chia sẻ post-mortem (hoặc ít nhất là những bài học chính) với các lĩnh vực khác trong tổ chức.
📌 Điều này:
- Ngăn chặn người khác lặp lại những sai lầm tương tự;
- Tạo ra văn hóa cải tiến liên tục;
- Tạo ra sự minh bạch cho nỗ lực và tiến bộ của đội ngũ. Có thể dưới dạng:
- Bản tin nội bộ;
- Buổi trình bày trong cuộc họp toàn công ty;
- Kênh sự cố trong các công cụ như Slack hoặc Confluence.
👉 Và nếu sự cố có liên quan đến thị trường, hãy xem xét việc chia sẻ công khai, như các công ty công nghệ lớn vẫn làm, góp phần vào toàn bộ cộng đồng.
✈️ Kết Luận: Khủng Hoảng Như Là Nền Tảng Của Sự Tiến Bộ
Khủng hoảng là không thể tránh khỏi. Nhưng việc lặp lại chúng thì không.
Khi bạn coi mỗi sự cố là một cơ hội thực sự để học hỏi, và cấu trúc bài học đó bằng lòng đồng cảm, sự rõ ràng và kỷ luật, đội ngũ của bạn sẽ phát triển. Văn hóa của bạn sẽ trưởng thành. Và tổ chức của bạn sẽ trở nên mạnh mẽ hơn.
Post-mortem là cầu nối giữa những gì thất bại và những gì có thể được cải thiện. Sử dụng nó như một công cụ chuyển đổi. Hãy làm như ngành hàng không: học hỏi từ mỗi cú ngã để bay cao hơn.
Và có thể, một ngày nào đó, những ngày thứ Sáu chỉ còn là... những ngày thứ Sáu. 😄