- Agent lập trình có thể tạo mã với tốc độ chưa từng có, nhưng nếu dùng mà không có phán đoán nghiêm ngặt, chúng sẽ trở thành con đường hiệu quả để đưa nguyên xi những giả định sai lên production
- Mã do agent tạo ra có thể trông như được viết bởi một kỹ sư giàu kinh nghiệm, với mô tả PR, vượt qua phân tích tĩnh, thậm chí có cả độ phủ kiểm thử, nhưng lại hoàn toàn không phản ánh các mẫu lưu lượng, chế độ lỗi hay ràng buộc hạ tầng của môi trường production thực tế
- Tận dụng(leveraging) AI và phụ thuộc(relying) vào AI là hai việc khác nhau về bản chất; tận dụng đúng nghĩa là hiểu đầy đủ và sở hữu cách đầu ra của agent hoạt động cũng như các rủi ro của nó
- Có thể xây dựng một môi trường an toàn để agent hành động với mức tự chủ cao dựa trên ba nguyên tắc: triển khai tự lái, xác thực liên tục, guardrail có thể thực thi
- Đây là thời đại mà người tồn tại không phải là kỹ sư tạo ra nhiều mã nhất, mà là kỹ sư giữ được năng lực phán đoán tỉnh táo về thứ gì nên được triển khai
Vấn đề: Green CI không còn là bằng chứng của sự an toàn
- CI pass chỉ phản ánh khả năng của agent trong việc thuyết phục pipeline, chứ không liên quan đến độ an toàn thực sự của hạ tầng
- Có thể triển khai một truy vấn vượt qua kiểm thử nhưng lại quét toàn bộ hàng trong production
- Logic retry trông có vẻ bình thường có thể gây ra Thundering Herd ở dịch vụ downstream
- Cache không có TTL có thể âm thầm đẩy Redis đến chỗ chết
- Agent không biết trạng thái dung lượng của instance Redis, không biết DB có đang hardcode theo một region cụ thể hay không, cũng không biết việc rollout feature flag sẽ làm thay đổi profile tải của các hệ thống downstream
- Khoảng cách giữa "PR này trông có vẻ đúng" và "PR này có thể được triển khai an toàn" luôn tồn tại, và agent còn làm khoảng cách ấy rộng hơn
Phân biệt cốt lõi: tận dụng vs. phụ thuộc
- Phụ thuộc(Relying): giả định rằng chỉ cần agent viết xong và kiểm thử pass là đã sẵn sàng để triển khai
- Tác giả không xây dựng được mental model cho thay đổi đó
- Tạo ra những PR khổng lồ đầy giả định ẩn, nơi cả tác giả lẫn reviewer đều không nắm được đoạn mã thực sự làm gì
- Tận dụng(Leveraging): dùng agent để lặp nhanh nhưng vẫn giữ quyền sở hữu hoàn toàn với đầu ra
- Hiểu chính xác mã sẽ hoạt động thế nào dưới tải
- Hiểu rủi ro liên quan và sẵn sàng chịu trách nhiệm cho chúng
- Đặt tên mình vào một PR có nghĩa là nói rằng "Tôi đã đọc và hiểu nó làm gì", và đó phải là điểm chuẩn của quy trình kỹ thuật
Tiêu chí phán đoán: phép thử litmus
- Bài kiểm tra đơn giản: "Mình có thấy thoải mái khi chịu trách nhiệm cho một sự cố production gắn với PR này không?"
- Ba câu hỏi cần tự hỏi trước khi mở PR
- Mã này làm gì? Sau rollout nó sẽ hoạt động như thế nào?
- Nó có thể gây tác động tiêu cực gì đến production hoặc khách hàng?
- Mình có thấy thoải mái khi chịu trách nhiệm cho sự cố gắn với đoạn mã này không?
- Nếu câu trả lời là "có", tức là bạn đang tận dụng AI và có thể triển khai; nếu là "không" thì vẫn còn việc phải làm
Giải pháp: ba nguyên tắc để phòng thủ production
- Triển khai tự lái(Self-driving deployments): mọi thay đổi đều được rollout dần thông qua pipeline có cổng kiểm soát, và canary deployment sẽ tự động rollback khi hiệu năng suy giảm
- Không phụ thuộc vào việc kỹ sư phải ngồi canh dashboard
- Khi có vấn đề, nó được cô lập trên một phần lưu lượng thay vì toàn bộ
- Xác thực liên tục(Continuous validation): không chỉ kiểm tra ở thời điểm triển khai mà kiểm thử chính bản thân hạ tầng một cách thường trực
- Load test, thí nghiệm chaos, diễn tập khôi phục thảm họa được chạy liên tục
- Việc Vercel diễn tập failover cơ sở dữ liệu trên production vào mùa hè năm ngoái là lý do sự cố Azure thực tế đã không gây ảnh hưởng gì đến khách hàng
- Guardrail có thể thực thi(Executable guardrails): mã hóa tri thức vận hành thành công cụ có thể chạy được, thay vì chỉ là tài liệu
- Skill
safe-rollout không phải là một trang Notion giải thích cách feature flag hoạt động, mà là một công cụ gắn cờ, tạo kế hoạch rollout có điều kiện rollback, và chỉ rõ cách xác minh hành vi kỳ vọng
- Khi guardrail có thể thực thi, agent có thể tự động tuân theo và con người không cần phải ghi nhớ
Những khoản đầu tư thực tế của Vercel
- Tăng cường guardrail hạ tầng dùng chung với xác thực thời gian chạy trên mọi giai đoạn của pipeline triển khai
- Tăng cường kiểm tra tĩnh ở giai đoạn PR, đặc biệt với feature flag
- Đưa vào kiểm thử end-to-end phản chiếu production trong môi trường staging
- Vận hành agent chỉ đọc để xác thực liên tục các bất biến của hệ thống trong production, đồng thời dùng agent chuyên biệt để kiểm toán các giả định của agent sinh mã
- Đưa vào các metric như tỷ lệ lỗi lọt qua so với commit gây lỗi để nhận biết liệu mức độ rủi ro trên toàn nền tảng có đang tăng hay không
Kết luận: kỹ sư có năng lực phán đoán mới là lợi thế cạnh tranh
- Triển khai(implementation) đã trở nên dồi dào; giờ tài nguyên khan hiếm là năng lực phán đoán điều gì có thể được triển khai an toàn
- Thời kỳ mã kém chất lượng còn trông kém chất lượng đã qua; công cụ AI sẽ ngày càng mạnh hơn, diff sẽ lớn hơn, và cám dỗ tin mù quáng vào đầu ra cũng sẽ mạnh hơn
- Mục tiêu không phải là một thế giới nơi mọi thay đổi đều cần mức độ nghiêm ngặt phi thường, mà là một thế giới nơi chính hạ tầng đã nghiêm ngặt — để việc triển khai nhanh mặc định vẫn an toàn
Chưa có bình luận nào.