Luồng điều khiển bằng schema với config as code
Một nền tảng giao diện điều khiển bằng cấu hình, cùng config-as-code dựa trên Git, để các thay đổi quy tắc được phát hành trong vài giờ mà không cần triển khai frontend.
- Công nghệ
- TypeScript · jsonform · Git · CI/CD · Schema validation
Vấn đề
Các luồng cho nhiều thị trường đồng nghĩa với mã trùng lặp và một ticket kỹ thuật mỗi khi sản phẩm hoặc tuân thủ muốn đổi một quy tắc theo khu vực.
Cách tiếp cận
- Dựng biểu mẫu từ schema. Giao diện đọc cấu hình JSON hoặc YAML qua jsonform: schema tạo ra các trường và quy tắc xác thực. Các hành động tùy chỉnh, như khởi động bridge native, vẫn nằm trong mã.
- Một bước, nhiều kết quả khác nhau. Cấu hình quyết định một bước làm gì cho từng thị trường và nền tảng. Nơi nào hỗ trợ năng lực native, bước đó hiển thị hướng dẫn và nút quét; nếu không, nó hiển thị các trường biểu mẫu thông thường và nút Tiếp tục. Đội sản phẩm đổi điều đó trong cấu hình, không phải trong mã.
- Config as code. Các thay đổi được gửi qua Git. Mỗi thay đổi mở một pull request tự động và chạy CI với kiểm tra schema nghiêm ngặt dựa trên kiểu TypeScript, nên cấu hình sai sẽ thất bại trước khi lên production.
Hai quyết định đáng giải thích
jsonform để dựng giao diện, mã để thực hiện hành động. Một giao diện hoàn toàn do máy chủ điều khiển, chạy logic tùy ý gửi từ máy chủ, mời gọi rủi ro thực thi mã từ xa và các vấn đề hiệu năng. Dựng giao diện theo dữ liệu với các hành động gắn vào handler đã biên dịch sẵn giữ được tính linh hoạt mà không chịu rủi ro đó.
Git thay vì biểu mẫu quản trị. Chỉnh sửa dễ dàng mà không có quản trị sẽ làm hỏng các luồng production. Pull request, kiểm tra kiểu và CI khiến mọi thay đổi có thể truy vết, được xem xét và dễ hoàn tác.
Kết quả
Việc phát hành cấu hình không còn phụ thuộc vào triển khai frontend, nên các cập nhật đa thị trường chuyển từ vài tuần xuống vài giờ, và việc trùng lặp mã theo khu vực không còn tăng thêm.