Làm Cùng Long.
← Quay lại Kho ghi chú
AI & Automation · 8 phút đọc ·

Khi automation lớn dần: thiết kế lớp orchestration

Minh họa lớp orchestration điều phối workflow, trạng thái, lỗi và điểm phê duyệt

Minh họa editorial nguyên bản tạo cho Làm Cùng Long

Một automation đơn giản thường rất dễ hình dung: có trigger, chạy vài bước, trả kết quả.

Nhưng khi workflow lớn dần, vấn đề hiếm khi còn nằm ở chuyện node này nối với node kia thế nào. Nó chuyển sang các câu hỏi khó hơn: bước nào đã chạy, nếu lỗi giữa chừng thì chạy lại từ đâu, chạy lại có tạo dữ liệu trùng không, AI agent được tự quyết đến đâu, và sau vài ngày có truy lại được vì sao một run thất bại không?

Đây là lúc cần phân biệt automation với orchestration. Automation giúp một việc tự chạy. Orchestration giúp nhiều việc, nhiều hệ thống và nhiều loại quyết định chạy cùng nhau như một quy trình có trạng thái, có luật và có khả năng phục hồi.

Mục lục

Khi nào automation trở thành orchestration?

Một workflow gửi thông báo khi form mới được gửi thường chưa cần lớp điều phối phức tạp.

Nhưng hãy thêm dần:

Form → kiểm tra dữ liệu → CRM → phân loại lead → AI tóm tắt → gửi sales → chờ phản hồi → cập nhật trạng thái → đồng bộ báo cáo.

Bây giờ một lỗi ở giữa chuỗi có thể tạo nhiều trạng thái: CRM đã tạo record nhưng báo cáo chưa nhận; webhook bị retry và tạo record lần hai; một API timeout nhưng phía bên kia thực tế đã xử lý thành công.

Lúc này câu hỏi không còn là có tự động hóa được không, mà là: hệ thống có biết toàn bộ quy trình đang ở trạng thái nào và phải làm gì khi thực tế lệch khỏi đường đi lý tưởng không?

Tài liệu n8n mô tả process orchestration như một lớp điều phối cho con người, hệ thống và tác vụ trong business process; nó đặc biệt hữu ích khi quy trình có nhiều endpoint, logic điều kiện phức tạp hoặc kéo dài theo thời gian.

Độ phức tạp của orchestration đến từ trạng thái và phụ thuộc, không chỉ từ số node.

Ba mô hình thực thi

Một phân loại hữu ích từ tài liệu n8n là ba mô hình.

Deterministic orchestration

Luồng được xác định trước: nếu A thì B; nếu B lỗi thì retry hoặc đi nhánh C. Ưu điểm là dễ kiểm tra, audit và dự đoán. Nhược điểm là độ cứng: tình huống chưa được mô hình hóa có thể cần can thiệp thủ công.

Dynamic orchestration

Luồng thay đổi theo điều kiện runtime, ví dụ chọn tuyến xử lý theo tải, nguồn lực hoặc trạng thái hiện tại. Nó linh hoạt hơn nhưng khó debug hơn vì đường đi không cố định hoàn toàn.

Agentic orchestration

Một số quyết định được giao cho AI agent. Agent có thể đọc bối cảnh, chọn tool và quyết định bước tiếp theo trong phạm vi được cấp quyền.

Điểm quan trọng: agentic orchestration không có nghĩa toàn bộ workflow đều do agent quyết định. Một thiết kế thực tế thường trộn nhiều loại thực thi.

Cố định phần cần chắc chắn

Một nguyên tắc hữu ích:

Deterministic ở nơi cần bảo đảm. Agentic ở nơi cần phán đoán.

Ví dụ một pipeline nội dung.

Nên deterministic: lịch chạy, naming convention, kiểm tra file tồn tại, tạo branch, kiểm tra draft, mở Draft PR, kiểm tra CI và không merge khi chưa duyệt.

Có thể agentic: chọn góc tiếp cận, tổng hợp nhiều nguồn, đánh giá candidate topic, đề xuất cấu trúc, phát hiện mâu thuẫn và viết bản nháp.

Nếu để agent tự quyết cả naming, trạng thái Git, quyền publish và điều kiện hoàn tất, ta đang dùng một thành phần có tính xác suất để điều khiển những việc vốn cần tính xác định.

Ngược lại, nếu hard-code mọi bước nghiên cứu, workflow mất lợi thế của agent: xử lý tình huống chưa được liệt kê trước.

Câu hỏi đúng là: đoạn nào cần judgment, đoạn nào cần guarantee?

Năm lớp của workflow production

State

Hệ thống phải biết run đang ở đâu, ví dụ: RECEIVED → VALIDATED → PROCESSING → WAITING_APPROVAL → COMPLETED. Không nên chỉ suy trạng thái từ việc node cuối có chạy hay không.

Idempotency

Một tác vụ chạy lại có tạo tác dụng phụ lần hai không? Ví dụ tạo hai CRM lead, gửi hai email hoặc mở hai PR. Idempotency key nên gắn với business operation, không chỉ timestamp của run.

Failure handling

Cần phân biệt lỗi tạm thời có thể retry, lỗi dữ liệu, lỗi quyền truy cập, lỗi business rule và lỗi cần human review. Retry mọi lỗi theo cùng một cách là thiết kế nguy hiểm.

Observability

Cần trả lời được: run nào, input nào, bước nào, mất bao lâu, retry mấy lần, quyết định nào do rule, quyết định nào do agent và output cuối là gì.

Authority boundary

Workflow được phép làm gì? Agent đọc dữ liệu và đề xuất thay đổi có rủi ro khác agent có quyền gửi email, sửa database, chi tiền, merge code hoặc deploy production.

Khả năng của agent càng tăng, ranh giới quyền càng phải rõ.

Retry và double execution

Retry nghe đơn giản: lỗi thì chạy lại.

Nhưng giả sử workflow gọi API tạo một record và request timeout. Workflow không biết server chưa nhận request, đã nhận nhưng chưa trả response, hay đã tạo record nhưng response bị mất.

Nếu retry mù, trường hợp cuối có thể tạo record thứ hai.

Trước khi thêm retry, cần hỏi:

  • Operation có idempotent không?
  • Có idempotency key không?
  • Có thể kiểm tra trạng thái trước khi retry không?
  • Có cần compensation nếu một phần quy trình đã hoàn tất không?

Trong hệ thống nhiều bước, recovery thường quan trọng không kém happy path.

Observability và human gate

Execution history là điểm khởi đầu, nhưng production observability nên giúp trả lời ba nhóm câu hỏi.

Điều gì đã xảy ra? Event, step, status, duration, retry.

Vì sao nó xảy ra? Rule nào kích hoạt, input nào dẫn tới quyết định, human nào phê duyệt.

Hệ thống đang khỏe không? Success rate, failure rate, latency, số run stuck, số lần human intervention và output contract violation.

Monitoring không chỉ kiểm tra hạ tầng còn sống. Nó phải kiểm tra business outcome của workflow có thực sự hoàn tất.

Với human-in-the-loop, có thể đặt gate theo hai trục: mức độ không chắc chắn × chi phí nếu sai.

  • Thấp × thấp: tự động.
  • Cao × thấp: agent xử lý nhưng log để review mẫu.
  • Thấp × cao: deterministic rule và validation chặt.
  • Cao × cao: human approval.

Human-in-the-loop không phải dấu hiệu automation chưa hoàn thiện. Trong nhiều hệ thống, nó là một phần của kiến trúc kiểm soát.

Khung quyết định

Trước một workflow mới, hãy hỏi sáu câu:

  1. Có bao nhiêu hệ thống tham gia?
  2. Workflow kéo dài bao lâu?
  3. Có trạng thái trung gian quan trọng không?
  4. Chi phí chạy trùng là bao nhiêu?
  5. Có bao nhiêu exception path?
  6. Có agent tự ra quyết định không?

Nếu phần lớn câu trả lời đều có, đừng tiếp tục chỉ nối thêm node. Hãy bắt đầu thiết kế control plane của quy trình.

Checklist production

Trước khi gọi workflow là production-ready, kiểm tra:

  • State: có phân biệt waiting, failed và completed?
  • Idempotency: trigger chạy lại có tạo duplicate?
  • Failure: lỗi nào retry, lỗi nào không retry, lỗi nào vào manual queue?
  • Timeout: external call có timeout, workflow có thể stuck vô hạn?
  • Observability: có run ID, step status, duration, error reason và watchdog?
  • Agent: tool permission có giới hạn, output có schema và validator?
  • Human: bước high-impact có approval phù hợp?
  • Recovery: có resume hoặc compensation?
  • Versioning: có biết workflow version nào tạo output?
  • Completion contract: workflow hoàn tất được định nghĩa bằng outcome nào?

Một scheduler báo success chưa chắc business process đã hoàn tất.

Kết luận

Automation thường bắt đầu từ mong muốn bớt làm tay.

Orchestration bắt đầu từ câu hỏi trưởng thành hơn: làm sao để cả quy trình vẫn đáng tin khi có nhiều hệ thống, nhiều trạng thái, nhiều lỗi và một phần quyết định được giao cho AI?

Khi workflow còn nhỏ, thêm một node thường hợp lý. Khi workflow lớn dần, tiếp tục nối node có thể chỉ làm một hệ thống mong manh trở nên dài hơn.

Lúc đó nên chuyển trọng tâm:

Từ task → process.
Từ happy path → state + exception.
Từ có chạy → có hoàn tất đúng outcome.
Từ agent tự do → agent trong ranh giới rõ ràng.

Một hệ thống automation tốt không phải hệ thống có nhiều AI nhất. Nó là hệ thống biết rõ việc nào máy được tự quyết, việc nào phải chắc chắn, và khi có chuyện xảy ra thì có thể giải thích được toàn bộ đường đi.