Giờ cao điểm
Web lỗi ngay trước mặt khách. Rollback, tái hiện lỗi, đọc log và stack trace, test, đổi chìa khóa bị lộ, viết sổ bài học.
Ngày Tết đông nhất năm. App tích điểm cho khách gấp đôi điểm, một khách đăng lên mạng, và một API key lọt vào ảnh chụp màn hình công khai. Lan làm theo quy trình bình tĩnh: cầm máu trước, nấu lại để thấy lỗi, xem camera trong bếp, gỡ đầu bếp đứng hình, cho khách bí mật đi thử, đổi chìa khóa bị lộ, viết sổ bài học, và giữ một thẻ xử lý khủng hoảng.
24 từ mới, từ Incident đến Checklist. Đoạn thật thà: lỗi này do đầu bếp AI viết và được duyệt mà không nếm. Cách sửa là một quy trình, không phải một prompt hay hơn.
Bạn sẽ học được
- Cầm máu trước: quay lại bằng git revert
- Tái hiện lỗi bằng một yêu cầu HTTP và trình duyệt
- Đọc log, console trình duyệt và stack trace mà không sợ
- Làm gì khi AI agent bị kẹt, hoặc máy chậm
- Test tự động như khách bí mật
- Đổi API key bị lộ, rồi viết sổ bài học không đổ lỗi
- Incident
- sự cố trước mặt khách
- Rollback
- quay về bản cũ đang chạy tốt
- Revert
- gỡ đúng một thay đổi lỗi
- Reproduce
- nấu lại để thấy lỗi
- Expected
- đáng lẽ phải thế nào
- Actual
- thực tế ra sao
- Log
- nhật ký ghi từng việc
- Console
- camera của trang web
- Error
- dòng báo lỗi
- Stack trace
- dấu chân lần ngược về chỗ hỏng
- Stuck
- đầu bếp bị kẹt
- Diagnosis
- khám xem bị gì
- Resources
- sức máy: CPU, bộ nhớ
- Test
- bài kiểm tra tự động
- Unit test
- kiểm tra từng phần nhỏ
- Regression
- món cũ tự nhiên hỏng
- Secret
- thông tin bí mật: khóa, mật khẩu
- Rotate
- đổi khóa mới, hủy khóa cũ
- Gitignore
- danh sách file không đưa lên mạng
- Post-mortem
- sổ bài học sau sự cố
- Root cause
- nguyên nhân gốc rễ
- Blameless
- tìm cách sửa, không đổ lỗi
- Monitoring
- canh chừng bếp liên tục
- Checklist
- thẻ các bước làm theo
Việc cần làm: Mở Git History trong dự án của bạn, bấm chuột phải vào một commit cũ và đọc các lựa chọn. Chưa cần bấm, chỉ cần biết nút cầm máu nằm ở đâu.
Việc cần làm: Lần tới gặp lỗi, ghi phiếu ba dòng: các bước, đáng lẽ, thực tế. Rồi dặn agent tái hiện lỗi trước khi sửa.
Đây là lỗi tôi gặp. Các bước: … Đáng lẽ: … Thực tế: … Hãy tái hiện lỗi trước, rồi mới sửa.
Việc cần làm: Mở trang của bạn trong Browser panel, xem console có dòng đỏ nào không, rồi gửi cho agent bằng Send to AI.
Việc cần làm: Mở Resource Manager ở thanh trạng thái phía dưới. Xem cái gì đang dùng nhiều bộ nhớ nhất trên máy bạn.
Việc cần làm: Chọn quy tắc quan trọng nhất trong app của bạn, nhờ agent viết một bài test cho nó và chạy thử.
Viết unit test cho [quy tắc quan trọng nhất của app], chạy thử và cho tôi xem kết quả.
Việc cần làm: Mở Env Manager trong dự án của bạn. Rồi hỏi agent: trong code có chỗ nào chép khóa thật không? File .env có trong .gitignore chưa?
Việc cần làm: Nghĩ về một lỗi bạn từng gặp. Hỏi “vì sao?” ba lần liên tiếp. Câu trả lời cuối cùng chính là gốc rễ.
Viết post-mortem ngắn cho sự cố sau, dựa trên git log: chuyện gì xảy ra, dòng thời gian, nguyên nhân gốc, và 3 việc để không lặp lại.
Lấy từ phụ đề của tập phim. Bấm vào một dòng để nhảy tới đó.
Tú: Tập trước, chị Lan mở chi nhánh hai, và học cách để đầu bếp AI làm việc cả khi chị đi ngủ.
Chị Lan: Ca đêm, hẹn giờ, ghép máy, và điều khiển cả bếp bằng điện thoại.
Chị Lan: Hai mươi tám Tết. Quán đông chưa từng thấy. Khách xếp hàng ra tận vỉa hè. Thẻ tích điểm chạy ngon lành từ sáng. Chị còn đang định khen đội bếp một câu...
Khách quen: Chị Lan ơi! Em mua có một ly mà thẻ nhảy hai tem. Ly nữa là bốn tem luôn!
Chị Lan: Hả? Một ly mà hai tem?
Khách quen: Em chụp đăng lên nhóm rồi nha chị. Cả nhóm đang kéo tới đây đổi ly miễn phí đó!
Chị Lan: Hai trăm lượt thích. Ba mươi tám bình luận. Trời ơi.
Tú: Chị Lan, bình tĩnh. Hít một hơi đã.
Chị Lan: Còn nữa! Con Mochi vừa nhảy lên quầy, giật tuột dây sạc laptop. Máy còn tám phần trăm pin!
Tú: Cắm lại dây trước. Rồi mình làm từng bước, đúng thứ tự. Sự cố nào cũng có cách xử lý bình tĩnh cả.
Tú: Tập này mình học cách xử lý khi có sự cố thật, ngay trước mặt khách. Tám chương, từ cầm máu cho tới tấm thẻ xử lý khủng hoảng. Không cần sợ. Lỗi là chuyện của mọi quán, mọi phần mềm. Cái quan trọng là mình xử lý ra sao.
Tú: Ôn bài tập trước: handoff là gì?
Chị Lan: Giao ca! Mình đi về, đầu bếp khác nấu tiếp món đang dở.
Chị Lan: Giờ chị phải làm gì trước? Tìm lỗi? Gọi đầu bếp sửa?
Tú: Chưa. Việc đầu tiên không phải là sửa. Việc đầu tiên là cầm máu. Bếp đang cháy một nồi thì mình tắt bếp trước, rồi mới tính chuyện nấu lại. Đừng vừa cháy vừa nêm.
Tú: Một lỗi xảy ra trước mặt khách thật gọi là sự cố, tiếng Anh là incident. Cách cầm máu nhanh nhất là quay về phiên bản cũ đang chạy tốt. Gọi là rollback. Nhớ nút lưu game ở tập một không? Mỗi commit là một tấm ảnh chụp món ăn.
Tú: Mình chỉ cần quay về tấm ảnh trước khi có lỗi.
Tú: Mình nhìn lại dòng thời gian nha. Bảy giờ năm sáng, có một bản cập nhật mới: nút quét QR chạy nhanh hơn.
Chị Lan: Đúng rồi. Hôm qua đầu bếp làm xong, chị thấy đẹp nên bấm duyệt luôn.
Tú: Và bảy giờ mười hai, mỗi ly bắt đầu bị cộng hai tem. Vậy thủ phạm gần như chắc chắn là bản cập nhật đó.
Tú: Mở Git, qua tab History. Đây là danh sách các tấm ảnh chụp món, mới nhất ở trên cùng. Chị bấm chuột phải vào commit lúc bảy giờ năm, chọn Revert Changes in Commit. Nó gỡ đúng thay đổi đó thôi, những thứ khác vẫn giữ nguyên.
Tú: Và nó tạo thêm một commit mới, nên lịch sử không mất gì.
Chị Lan: Xong rồi. Hoa ơi, quét thử lại giúp chị một ly nha.
Khách quen: Một tem. Đúng rồi chị. Mà mấy tem dư hồi sáng thì sao?
Chị Lan: Hôm nay Tết, quán tặng luôn. Coi như lì xì cho khách quen.
Chị Lan: Mà khoan, sao không bấm sửa luôn cho nhanh hả em?
Tú: Vì sửa vội lúc đang đông khách dễ sinh ra lỗi thứ hai. Revert thì chắc chắn: đó là bản đã chạy tốt cả tuần. Cầm máu xong, khách không bị ảnh hưởng nữa. Lúc đó mình mới có thời gian tìm hiểu cho đàng hoàng.
Tú: Từ mới: incident, rollback, và revert.
Tú: Thử ngay: mở lịch sử Git của dự án, bấm chuột phải vào một commit và đọc thử các lựa chọn. Chưa cần bấm, chỉ cần biết nút cầm máu nằm ở đâu.
Chương 2: Nấu lại để thấy lỗi
Tú: Ôn nhanh: khi có sự cố, việc đầu tiên là gì?
Chị Lan: Cầm máu! Revert bản lỗi, cho khách dùng bình thường trước.
Chị Lan: Giờ chị nhờ bếp trưởng sửa luôn nha: mỗi ly bị cộng hai tem, sửa đi em.
Bếp trưởng AI: Dạ. Nhưng em chưa thấy lỗi tận mắt. Em có thể đoán, mà đoán thì dễ sửa nhầm chỗ lắm.
Tú: Bếp trưởng nói đúng đó. Muốn sửa món mặn, trước hết phải nấu lại đúng món đó, nếm thấy mặn đã.
Tú: Chủ động làm cho lỗi xảy ra lại gọi là tái hiện lỗi, tiếng Anh là reproduce. Rồi mình ghi hai dòng. Đáng lẽ phải thế nào, gọi là expected. Còn thực tế ra sao, gọi là actual.
Chị Lan: Đáng lẽ một ly một tem. Thực tế một ly hai tem.
Tú: Phiếu báo lỗi tốt cũng có ba phần. Các bước để làm lỗi xảy ra. Điều đáng lẽ phải xảy ra, và điều thật sự đã xảy ra. Đưa phiếu này cho bếp nào, bếp đó cũng nấu lại được đúng món mặn.
Tú: Mình thử trên bản lỗi ngay trên máy của mình thôi. Khách vẫn đang dùng bản đã cầm máu. Có một cách nấu lại rất nhanh: HTTP client trong 1DevTool. Nó giống người phục vụ chạy vào bếp, đưa đúng một tờ phiếu.
Tú: Mình gửi đúng yêu cầu mà máy quét gửi: cộng một tem cho khách. Rồi xem bếp trả lời gì.
Chị Lan: Nó trả về: hai tem! Thấy tận mắt rồi.
Bếp trưởng AI: Em thấy rồi. Lúc làm nút quét nhanh hơn, em gắn việc cộng tem vào nút tới hai lần. Bấm một lần, chạy hai lần.
Chị Lan: Vậy là lỗi của đầu bếp.
Tú: Của đầu bếp, và cũng của mình nữa. Nhưng chuyện đó mình để dành tới chương bảy nha.
Tú: Từ mới: reproduce, expected, và actual.
Tú: Thử ngay: lần tới gặp lỗi, chị ghi đủ ba dòng: các bước, đáng lẽ, và thực tế. Rồi dặn đầu bếp tái hiện lỗi trước khi sửa.
Chương 3: Camera trong bếp
Tú: Ôn bài: reproduce là gì?
Chị Lan: Nấu lại món mặn để tận mắt thấy nó mặn.
Chị Lan: Lần này đoán ra nhanh. Lỡ lần sau lỗi khó hơn, không đoán được thì sao em?
Tú: Thì mình xem camera trong bếp. Phần mềm nào cũng tự ghi lại nhật ký: lúc mấy giờ, làm gì, có gì bất thường.
Tú: Cuốn nhật ký đó gọi là log. Mỗi dòng là một việc đã xảy ra. Trang web cũng có camera riêng, gọi là console. Lỗi nào xảy ra trên trang, console ghi lại hết. Còn dòng màu đỏ, thường bắt đầu bằng chữ error, là chỗ chị cần nhìn đầu tiên.
Chị Lan: Trời, nhìn chữ đỏ là chị muốn gập máy luôn.
Tú: Đọc như đọc hóa đơn thôi chị. Dòng đầu nói chuyện gì xảy ra. Mấy dòng sau nói nó xảy ra ở đâu, và ai đã gọi tới đó. Danh sách đi ngược từ chỗ hỏng về chỗ bắt đầu gọi là stack trace. Giống lần theo dấu chân con mèo về tới chỗ nó làm đổ ly.
Chị Lan: Ví dụ của em càng ngày càng xa đó nha.
Tú: Trong Browser panel của 1DevTool, mở phần debug là thấy console ngay cạnh trang web. Bấm thử nút quét, chị thấy liền hai dòng cộng tem chạy cùng lúc. Và một dòng đỏ chị chưa từng biết.
Tú: Chị không cần tự đọc hết. Bấm Send to AI, 1DevTool gói luôn console, các yêu cầu mạng và ảnh chụp trang, gửi cho đầu bếp.
Chị Lan: Như gửi nguyên đoạn camera cho thợ, khỏi phải kể lể.
Tú: Ở terminal cũng vậy. Bôi đen đoạn chữ báo lỗi, bấm chuột phải, chọn Send to AI.
Bếp trưởng AI: Em nhận được rồi. Có hai chuyện: nút quét cộng tem hai lần, và thẻ của khách mới chưa có số tem nên báo đỏ. Em sửa cả hai nha chị.
Chị Lan: Lỗi thứ hai chị còn chưa biết luôn. Camera đúng là thấy hết.
Tú: Từ mới: log, console, error, và stack trace.
Tú: Thử ngay: mở trang của chị trong Browser panel, xem console có dòng đỏ nào không, rồi gửi cho đầu bếp bằng Send to AI.
Chương 4: Đầu bếp đứng hình
Tú: Ôn bài: console là gì?
Chị Lan: Camera của trang web! Dòng đỏ là chỗ cần nhìn trước.
Chị Lan: Ủa, phụ bếp đâu rồi? Chị giao việc từ mười phút trước mà ô của em ấy cứ đứng im. Em ơi? Em còn đó không?
Tú: Đầu bếp đứng hình có nhiều lý do lắm chị. Có khi hết lượt dùng, có khi bị hỏi đăng nhập lại, có khi một bảng quảng cáo che mất màn hình.
Chị Lan: Vậy chị phải đoán xem là lý do nào hả?
Tú: Không cần đoán. 1DevTool có một bác sĩ riêng cho đầu bếp, gọi là AI Diagnosis.
Tú: Một đầu bếp không chịu nhận việc mới gọi là bị stuck, tức là bị kẹt. Khi giao việc mà một đầu bếp không nhận suốt khoảng hai phút, một AI khác sẽ đọc màn hình của nó và nói lý do: hết lượt, chờ đăng nhập, hay bị bảng nào đó che.
Tú: Nó chỉ đọc khi chị đã đồng ý một lần, vì màn hình có thể có thông tin riêng tư.
Tú: Đây là phần AI Diagnosis. Chị chọn những đầu bếp được làm bác sĩ, theo thứ tự. Đầu bếp đang kẹt thì không bao giờ tự khám cho mình. Nếu chỗ của phụ bếp có người dự bị, việc được giao luôn cho người dự bị.
Tú: Còn không thì chị nhận một thông báo nói rõ bị gì.
Chị Lan: Hóa ra phụ bếp hết lượt. Đổi ca là xong.
Chị Lan: Còn cái laptop nữa. Từ lúc Mochi giật dây, chị thấy nó chậm rì.
Tú: Cái đó thì xem Resource Manager. Nó cho biết máy đang bận vì cái gì.
Tú: Nó chia ra ba phần rõ ràng: phần của 1DevTool, phần của các terminal chị mở, và phần của các ứng dụng khác trên máy. Terminal nào đang ngốn máy sẽ có một dòng riêng, kèm nút Reveal để nhảy tới đó.
Tú: Còn nếu cả cửa sổ bị đứng, thanh dưới cùng hiện một chấm đỏ. Lúc chạy lại, nó báo luôn vì sao bị đứng.
Chị Lan: À, hóa ra là cái trình duyệt có ba mươi tab chị mở từ hôm qua.
Tú: Đầu bếp không có lỗi. Bếp chỉ hơi chật thôi.
Tú: Từ mới: stuck, diagnosis, và resources.
Tú: Thử ngay: mở Resource Manager ở thanh dưới cùng, xem cái gì đang dùng máy của chị nhiều nhất.
Chương 5: Khách bí mật
Tú: Ôn nhanh: stuck là gì?
Chị Lan: Đầu bếp bị kẹt, không nhận việc. Gọi bác sĩ AI Diagnosis.
Chị Lan: Bếp trưởng sửa xong lỗi hai tem rồi. Lần này chị nếm kỹ rồi mới duyệt.
Tú: Tốt. Nhưng chị đâu thể tự nếm lại mọi món sau mỗi lần sửa. Thẻ tích điểm có cả chục quy tắc. Nhà hàng lớn có khách bí mật: người ghé ăn theo một danh sách, chấm đúng từng món. Phần mềm cũng có, mà nó không bao giờ biết mệt.
Tú: Khách bí mật đó gọi là test, tức là bài kiểm tra tự động. Một đoạn code nhỏ tự thử app rồi nói: đạt, hay không đạt. Bài kiểm tra cho từng phần nhỏ, như quy tắc cộng tem, gọi là unit test. Còn khi sửa chỗ này mà làm hỏng chỗ khác vốn đang ngon,
Tú: gọi là regression. Đúng chuyện sáng nay.
Chị Lan: Vậy khách bí mật của thẻ tích điểm sẽ chấm những gì?
Tú: Quét một lần thì đúng một tem. Đủ mười tem thì ly thứ mười một miễn phí. Và quét liên tục thì một ngày tối đa ba tem. Mấy dòng này quen không? Chính là dòng thế nào là xong trên phiếu việc ở tập hai đó.
Tú: Chị nhờ đầu bếp viết bài kiểm tra cho các quy tắc này, rồi chạy thử. Nó chạy ngay trong terminal. Dấu xanh là đạt. Và nhìn nè: bài quét một lần, nếu chạy trên bản lỗi sáng nay, sẽ ra màu đỏ.
Chị Lan: Vậy nếu có bài này từ trước, lỗi đã bị bắt trước khi tới tay khách.
Tú: Nhớ tập bốn không? Mình có hook, những luật của quán tự động chạy. Giờ thêm một luật: đầu bếp nào báo xong việc thì phải chạy hết bài kiểm tra trước. Còn bài đỏ là chưa được báo xong.
Người nếm AI: Em thích luật này. Từ giờ em khỏi phải nếm đi nếm lại mấy món cũ.
Tú: Từ mới: test, unit test, và regression.
Tú: Thử ngay: chọn quy tắc quan trọng nhất trong app của chị, nhờ đầu bếp viết bài kiểm tra cho nó, và chạy thử xem có xanh không.
Chương 6: Chìa khóa bị lộ
Tú: Ôn bài: regression là gì?
Chị Lan: Sửa chỗ này mà làm hỏng chỗ khác vốn đang ngon.
Bin: Cô Lan ơi! Cái ảnh cô đăng lên nhóm khách hồi sáng, để xin lỗi vụ hai tem đó.
Chị Lan: Ừ, cô chụp màn hình cho khách thấy là quán đã sửa rồi.
Bin: Góc ảnh có nguyên cái khóa API của dịch vụ gửi tin nhắn. Ai nhìn cũng đọc được hết.
Chị Lan: Chết rồi.
Tú: Bình tĩnh chị. Khóa API giống chìa khóa kho của quán. Ai cầm được là vào kho được, mà chị là người trả tiền. Xóa bài thôi là chưa đủ, vì có thể ai đó đã chụp lại rồi. Việc đúng là đổi ổ khóa: vào trang của dịch vụ, hủy khóa cũ, tạo khóa mới.
Chị Lan: Đổi xong rồi. Khóa cũ giờ không mở được gì nữa.
Tú: Những thứ như khóa API hay mật khẩu gọi chung là secret, tức là bí mật. Hủy khóa cũ, thay khóa mới gọi là rotate, tức là xoay vòng khóa. Nhớ file chấm env ở tập một không? Secret phải nằm trong đó. Và file đó có tên trong danh sách gitignore,
Tú: nên không bao giờ bị đưa lên mạng.
Tú: Trong 1DevTool có Env Manager. Mọi secret của dự án nằm gọn ở đây, mỗi dòng một tên và một giá trị. Giá trị bí mật được che sẵn, muốn xem thì bấm vào. Nên lần sau chị có chụp màn hình cũng không lộ.
Chị Lan: Chị dán khóa mới vào đây là xong. Đầu bếp đọc từ file này, không ai phải chép khóa vào code.
Bin: Mà cô ơi, lỡ đầu bếp AI tự chép khóa vào code thì sao?
Tú: Câu hỏi hay. Chuyện đó có xảy ra. Nên mỗi lần duyệt thay đổi, chị liếc xem có chuỗi lạ nào giống chìa khóa không. Hoặc nhờ luôn đầu bếp kiểm tra giúp: tìm trong code xem có chỗ nào giống khóa thật không.
Tú: Em tóm lại ba chỗ không bao giờ được để khóa thật nha. Trong ô chat với AI, trong ảnh chụp màn hình đăng lên mạng, và trong code.
Chị Lan: Ba chỗ. Chị nhớ rồi.
Tú: Từ mới: secret, rotate, và gitignore.
Tú: Thử ngay: mở Env Manager, xem dự án đang có những khóa nào, rồi hỏi đầu bếp: trong code có chỗ nào chép khóa thật không?
Chương 7: Sổ bài học
Tú: Ôn nhanh: lỡ lộ khóa API, chỉ xóa bài đăng có đủ không?
Chị Lan: Không đủ! Phải rotate: hủy khóa cũ, tạo khóa mới.
Chị Lan: Mười giờ đêm. Quán đóng cửa. Mọi thứ đã chạy lại bình thường. Chị chỉ muốn đi ngủ.
Tú: Còn một việc cuối thôi chị. Viết sổ bài học, để lỗi này không bao giờ lặp lại.
Chị Lan: Mười lăm phút thôi đó nha.
Tú: Sổ bài học sau sự cố gọi là post-mortem. Nó không hỏi ai có lỗi. Nó hỏi: chuyện gì đã xảy ra, vì sao, và lần sau mình làm gì khác đi. Câu quan trọng nhất là gốc rễ, tiếng Anh là root cause. Không phải ngọn của vấn đề, mà là gốc.
Tú: Lịch sử Git là dòng thời gian chính xác nhất. Mỗi commit có giờ, có người làm, và có thay đổi gì. Bản cập nhật lúc bảy giờ năm, commit revert lúc bảy giờ hai lăm, commit sửa lỗi kèm bài kiểm tra lúc chín giờ. Mọi thứ đều có dấu vết.
Chị Lan: Vì sao mỗi ly hai tem? Vì đầu bếp gắn việc cộng tem hai lần.
Tú: Vì sao lỗi lọt ra tới khách? Vì chị duyệt khi thấy đẹp, chưa thử quét lần nào. Vì sao không ai phát hiện ra? Vì chưa có bài kiểm tra nào cho quy tắc tem.
Chị Lan: Vậy gốc rễ là: món được dọn ra mà chưa ai nếm.
Bếp trưởng AI: Em xin lỗi chị. Em gắn nút quét hai lần mà không tự thử lại.
Tú: Em nói thật nha. Lỗi này do đầu bếp AI viết, và do chị duyệt mà không nếm. Cả hai cùng chịu. Và cách sửa không phải một câu prompt hay hơn. Đầu bếp nào rồi cũng có lúc sai. Cách sửa là một quy trình.
Chị Lan: Có bài kiểm tra, có hook chạy trước khi báo xong, và chị luôn quét thử một lần trước khi duyệt.
Tú: Từ mới: post-mortem, root cause, và blameless.
Tú: Thử ngay: nghĩ về một lỗi chị từng gặp, rồi hỏi vì sao ba lần liên tiếp. Câu trả lời cuối cùng chính là gốc rễ.
Chương 8: Thẻ xử lý khủng hoảng
Khách quen: Chị Lan ơi, em đọc bài xin lỗi của quán rồi. Sửa nhanh ghê, còn được lì xì thêm tem nữa. Em sửa bài đăng lại rồi nha: quán Mây xử lý đẹp!
Chị Lan: Cảm ơn em. Ly bạc xỉu này chị mời.
Tú: Một điều cuối. Sáng nay chị biết có lỗi là nhờ khách báo. Tốt nhất là mình biết trước khách. Canh chừng bếp liên tục gọi là monitoring. Tập sau, khi quán mở cửa ra thế giới thật, mình sẽ cần nó nhiều hơn. Còn hôm nay, chị chỉ cần một tấm thẻ:
Tú: checklist xử lý khủng hoảng.
Tú: Bảy bước. Một: hít thở, đừng sửa vội. Hai: cầm máu, revert bản lỗi. Ba: tái hiện lỗi, ghi đáng lẽ và thực tế. Bốn: xem log và console. Năm: sửa kèm bài kiểm tra. Sáu: lộ khóa thì rotate ngay. Bảy: viết sổ bài học.
Chị Lan: Chị in ra dán cạnh máy tính tiền luôn.
Tú: Từ mới cuối cùng: monitoring, và checklist.
Tú: Tập này chị học incident, rollback, revert. Học reproduce, expected và actual. Học log, console, error, stack trace. Rồi stuck, diagnosis, resources. Rồi test, unit test, regression. Rồi secret, rotate, gitignore. Post-mortem, root cause,
Tú: blameless. Và cuối cùng là monitoring với checklist.
Chị Lan: Thêm hai mươi bốn từ nữa. Mà quan trọng hơn: lần sau có sự cố, chị không hoảng nữa.
Tú: Chị để ý không? Hôm nay chị không sửa dòng code nào. Chị chỉ làm đúng thứ tự, và quán vẫn đông khách.
Chị Lan: Sự cố không đáng sợ. Đáng sợ là không biết phải làm gì trước.
Khách quen: Chị ơi, quán có cho trả tiền online không? Em muốn dùng điểm ở cả chi nhánh hai nữa.
Chị Lan: Mình phải mở cửa ra thế giới thật rồi.
Tú: Tập sau: Mở cửa ra thế giới. Thanh toán, tài khoản khách, và địa chỉ riêng của quán.
Tú: Tải 1DevTool, in tấm thẻ xử lý khủng hoảng, và bình tĩnh trước lỗi đầu tiên của bạn.
Chị Lan: Hẹn gặp lại ở Cà phê Mây, tập bảy nhé!
Bếp trưởng AI: Chị ơi, em đã revert bản lỗi. Nhưng em lỡ revert luôn món bạc xỉu khỏi thực đơn.
Chị Lan: Trả bạc xỉu lại ngay! Khách quen mà phát hiện là có sự cố thật đó!