Nguồn: Bytebytego
Tóm tắt
DoorDash đã giải quyết bài toán mở rộng quốc tế bằng cách tái kiến trúc hệ thống onboarding Dasher từ một mớ if/else theo từng quốc gia thành một nền tảng module hóa. Trước đây, việc thêm một thị trường mới tốn hàng tháng kỹ thuật vì logic quốc gia nằm rải rác khắp codebase với ba phiên bản API tồn tại song song, trong đó V3 vẫn gọi xuống V2 handler và ghi vào V2 database tables.
Kiến trúc mới được tổ chức thành ba lớp riêng biệt. Lớp Orchestrator là một routing layer tối giản — chỉ nhìn vào context (quốc gia, loại thị trường) để chọn workflow definition phù hợp, không chứa business logic. Lớp Workflow Definitions định nghĩa thứ tự các bước dưới dạng danh sách tham chiếu đến Step Modules. Lớp Step Modules là nơi thực thi thực sự: mỗi bước (thu thập dữ liệu, xác minh danh tính, kiểm tra tuân thủ) là một module độc lập thực hiện chuẩn hóa interface.
Cơ chế contract interface là chìa khóa của khả năng tái sử dụng: mỗi bước phải implement ba method chuẩn hóa (process, isComplete, getResponseData). Nhờ đó các team chủ sở hữu từng bước (security team cho identity verification, finance team cho payment setup) có thể iterate độc lập mà không ảnh hưởng lẫn nhau. State được quản lý qua một status map — một JSON object duy nhất trong database, nơi mỗi bước tự ghi progress của mình.
Kết quả đo lường rõ ràng: Australia hoàn tất migration trong chưa đầy một tháng, Canada mất hai tuần, Puerto Rico một tuần, New Zealand gần như không cần viết code mới. Mỗi đợt ra mắt đạt zero regression và không có downtime. Bài học tổng quát: ba lớp (orchestrator mỏng, workflow composable, step modules tự chứa sau interface chuẩn hóa) có thể áp dụng cho mọi multi-step process biến thiên theo context: checkout flows, approval pipelines, content moderation queues.