- "Framework workflow bền vững (durable), có thể tiếp tục lại (resumable) được viết bằng TypeScript"
- Cung cấp workflow engine giúp tự động hóa các luồng công việc phức tạp bằng cách kết nối nhiều dịch vụ và API
- Nền tảng mã nguồn mở dạng mô-đun được phát triển để giải quyết các vấn đề về tự động hóa workflow và tích hợp
- Ngay cả khi server gặp sự cố hoặc có đợt triển khai, trạng thái vẫn được lưu trong Postgres để có thể tiếp tục chạy chính xác từ bước cuối cùng
- Vì mỗi
step.run({ name }, fn) chỉ được thực thi một lần và kết quả được memoize, nên khi khởi động lại sau sự cố sẽ không chạy lặp lại các tác vụ có tác dụng phụ như thanh toán thẻ hay gửi email, mà tái sử dụng kết quả đã lưu trong bộ nhớ đệm
- Không cần server chuyên dụng riêng; worker process (
ow.newWorker({ concurrency })) sẽ polling các lần chạy đang pending từ DB và thực thi chúng, nên có thể chạy nhiều worker để đạt tính sẵn sàng cao và scale-out, đồng thời sleep dài hạn như step.sleep("id", "1h") cũng không chiếm worker slot
- Được thiết kế để có thể xử lý ở cấp độ code toàn bộ định nghĩa an toàn kiểu, quản lý phiên bản, truy vấn kết quả và hủy, thông qua generic input/output của workflow, trường phiên bản (
version: "v2"), run().result(), handle.cancel() v.v.
- Hỗ trợ mở rộng và tùy biến với hệ thống bên ngoài thông qua kiến trúc plugin
- Hỗ trợ tích hợp với các SaaS và công cụ phát triển phổ biến như OpenAI, Slack, GitHub, Notion
- Hiện tại tập trung vào backend PostgreSQL và các tính năng runtime cơ bản (thực thi đồng thời, retry, step song song, sleep, quản lý phiên bản, cancel)
- Trong lộ trình tiếp theo có CLI, dashboard, idempotency key, hàm rollback/compensation, signals, OpenTelemetry, backend Redis/SQLite, SDK Go/Python
2 bình luận
Cách đây không lâu có bài về GitHub - earendil-works/absurd: An experiment in durability https://share.google/PCjaLh3j46ayECI9b được đăng lên rồi... Có vẻ là một dự án cùng concept, nhưng nó đi đâu mất rồi nhỉ...
Có cảm giác khá giống với Spring Batch.