Lộ trình 04Bài học 5 / 10

Thiết kế phần mềm cho môi trường cloud native

Kết nối hạ tầng có thể tái lập, tiến trình có thể thay thế, trạng thái lưu bền vững và hành vi có thể quan sát. Đánh giá thiết kế cloud native ngoài việc đóng gói container.

Thực hành12 minĐã review

Xuất bản bởi Cách chúng tôi viết

Kiểm tra mức hiểuNền tảng thay thế một worker báo cáo sau khi xảy ra lỗi. Điều gì giúp lần thử lại an toàn?Làm bài tập
Nền tảng thay thế một worker báo cáo sau khi xảy ra lỗi. Điều gì giúp lần thử lại an toàn?

Bạn sẽ học gì

  • Phân biệt đóng gói container với hành vi cloud native.
  • Xác định rủi ro về trạng thái, thử lại và thay thế trong dịch vụ được tạo.
  • Xác định hợp đồng nền tảng mà agent và con người có thể kiểm chứng.

Xác định hành vi cần có

Các thực hành cloud native hỗ trợ phát triển và vận hành có thể tái lập trong môi trường công cộng, riêng tư hoặc kết hợp. CNCF nhấn mạnh các hệ thống vẫn dễ quản lý, quan sát và có khả năng phục hồi khi thay đổi. Container và bộ điều phối có thể hỗ trợ cách làm này. Chúng không tự bảo đảm mọi đặc tính trên.

Bắt đầu với dịch vụ báo cáo giả định. Công cụ AI tạo endpoint, worker và container image. Bản trình diễn tạo đúng tệp PDF. Trước production, nhóm phải trả lời câu hỏi khác: điều gì xảy ra khi nền tảng thay thế worker giữa lúc xử lý job?

Đây vừa là vấn đề thiết kế ứng dụng, vừa là vấn đề hạ tầng. Khởi động lại có thể khôi phục tiến trình nhưng làm mất công việc chưa hoàn tất.

Tách tiến trình khỏi trạng thái lưu bền vững

Prototype lưu job trong hàng đợi và báo cáo đã hoàn tất trên ổ đĩa container. Thay container có thể xóa cả hai. Thêm worker cũng có thể tạo câu trả lời khác nhau tùy worker nào nhận yêu cầu.

Thiết kế sửa đổi dùng kho job bền vững và kho lưu trữ đối tượng đã được phê duyệt. Yêu cầu ghi lại định danh job. Worker nhận xử lý job, tạo kết quả và ghi vị trí kết quả. Kiểm tra truy cập vẫn phải áp dụng khi người dùng tải báo cáo.

Vấn đềCâu hỏi cho dịch vụ báo cáo
Trạng tháiBản ghi nào phải tồn tại sau khi thay tiến trình?
Cấu hìnhCùng một artifact chạy trong từng môi trường như thế nào?
Danh tínhDanh tính dịch vụ nào có thể đọc job và ghi kết quả?
Tình trạng hoạt độngWorker có thể nhận và hoàn tất công việc không?
Dừng tiến trìnhJob đã được nhận xử lý sẽ ra sao khi worker dừng?
Năng lực xử lýGiới hạn nào xuất hiện trước: worker, cơ sở dữ liệu, lưu trữ hay dịch vụ khác?

Giữ secret bên ngoài image. Cấp secret qua hệ thống đã được phê duyệt. Ghi rõ thay đổi cấu hình nào đòi hỏi bản phát hành mới hoặc khởi động lại tiến trình.

Thiết kế cơ chế thử lại trước khi thêm worker

Giả sử worker lưu PDF rồi dừng trước khi xác nhận job. Hàng đợi giao lại job. Lần thử thứ hai không được thu phí khách hàng lần nữa hoặc gửi thông báo hoàn tất mâu thuẫn.

Dùng thao tác idempotent khi phù hợp. Lặp cùng một yêu cầu logic phải giữ nguyên tác động mong muốn. Xác định định danh yêu cầu ổn định, lưu kết quả bền vững và kiểm tra điều gì xảy ra tại từng điểm lỗi. AWS mô tả kỹ thuật này trong hướng dẫn thử lại an toàn.

Các lần thử lại cũng cần giới hạn. Dùng timeout, số lần thử tối đa và khoảng chờ để tránh nhiều yêu cầu lặp lại đồng thời. Giữ lại công việc lỗi để kiểm tra thay vì thử lại mãi.

Làm cho trạng thái mong muốn có thể review

Cấu hình khai báo mô tả cách triển khai mong muốn. Controller làm việc để duy trì trạng thái đó. Ví dụ, Kubernetes Deployment quản lý các bản sao ứng dụng và cập nhật có kiểm soát. Ứng dụng vẫn phải xử lý đúng việc thay thế.

Quản lý phiên bản cấu hình hạ tầng và ứng dụng. Review thay đổi qua quy trình bàn giao thông thường. Quan sát việc hoàn tất job thực tế, thời gian job nằm trong hàng đợi, lỗi và giới hạn của phụ thuộc. Tiến trình đang chạy vẫn có thể không tạo được báo cáo.

Chọn nền tảng mà nhóm có thể vận hành

Cloud native không yêu cầu mọi ứng dụng trở thành microservices. Ứng dụng theo mô-đun trên runtime được quản lý có thể đáp ứng yêu cầu. Nhiều dịch vụ hơn tạo thêm giao diện, quyết định triển khai và công việc vận hành.

Cung cấp hợp đồng nền tảng thực tế cho agent phát triển: runtime được hỗ trợ, phương thức danh tính, dịch vụ dữ liệu, quy tắc triển khai và bằng chứng bắt buộc. Thử hành vi khi gián đoạn và thay thế bên cạnh yêu cầu thành công. Tiếp tục với tính sẵn sàng và ranh giới lỗi.

Làm bài tập

Một dịch vụ báo cáo giả định lưu job và tệp đã hoàn tất trên ổ đĩa container. Vẽ luồng từ yêu cầu đến job, tệp và lượt tải xuống. Đánh dấu trạng thái cần lưu bền vững. Xác định điều gì xảy ra nếu worker dừng sau khi ghi tệp nhưng trước khi xác nhận job.

Tải worksheet (Markdown)
Kiểm tra mức hiểu ↑

Tiếp tục học

Nguồn và đọc thêm

Đọc thêm liên quan từ Taiga

← Bài trước: Xác định hạ tầng cần có ngoài prototype