Sequor , một công cụ tự động hóa quy trình API mới kết hợp cấu hình YAML với xử lý SQL, đã thu hút sự chú ý của các nhà phát triển - nhưng không phải lúc nào cũng vì những lý do mà các nhà sáng tạo hy vọng. Trong khi công cụ này hứa hẹn sẽ đơn giản hóa việc tích hợp API bằng cách sử dụng các công nghệ quen thuộc, thì những lựa chọn cú pháp template của nó đã gây ra cuộc thảo luận sôi nổi về trải nghiệm nhà phát triển và nợ kỹ thuật.
Các Mô Hình Tích Hợp Sequor
- Thu thập dữ liệu: Kéo dữ liệu từ các ứng dụng vào kho dữ liệu
- Reverse ETL: Đẩy dữ liệu phân tích ngược lại vào các hệ thống vận hành
- Làm giàu dữ liệu: Nâng cao chất lượng bản ghi bằng dữ liệu từ API bên thứ ba
- Quy trình làm việc đa ứng dụng: Tự động hóa các quy trình trên nhiều ứng dụng
Vấn đề Template YAML
Vấn đề cốt lõi tập trung vào việc Sequor sử dụng templating Jinja2 với dấu ngoặc nhọn kép ({{ }}) trong các file YAML. Cách tiếp cận này, cũng được sử dụng bởi các công cụ phổ biến như Ansible , tạo ra những thách thức đáng kể trong việc phân tích cú pháp vì dấu ngoặc nhọn có ý nghĩa đặc biệt trong YAML. Các nhà phát triển phải liên tục đặt các biểu thức template trong dấu ngoặc kép, dẫn đến cú pháp rối rắm như status: {{ var('order_status') }}.
Một nhà phát triển có kinh nghiệm đã chỉ ra mức độ nghiêm trọng của lựa chọn thiết kế này, lưu ý rằng nó tạo ra những vấn đề tương tự đã làm khổ người dùng Ansible trong nhiều năm. Tình hình trở nên tệ hơn khi các biểu thức chứa ký tự dấu ngoặc kép, đòi hỏi việc escape phức tạp khiến code khó đọc và bảo trì.
Jinja2 là một engine templating Python phổ biến cho phép tạo nội dung động bằng cách sử dụng các ký hiệu cú pháp đặc biệt.
So sánh cú pháp Template
- Sequor hiện tại:
{{ var('order_status') }}(yêu cầu dấu ngoặc kép trong YAML) - GitHub Actions:
${{ var('order_status') }}(an toàn với YAML) - Kiểu ASP.Net:
<%= var('order_status') %>(an toàn với YAML) - Kiểu PHP:
<?= var('order_status') ?>(an toàn với YAML)
Các giải pháp thay thế xuất hiện
Cuộc thảo luận đã tiết lộ một số giải pháp thay thế sạch sẽ hơn mà các nền tảng khác đã áp dụng thành công. GitHub Actions sử dụng cú pháp ${{ }}, trong khi các hệ thống khác sử dụng các ký hiệu như <%= %> hoặc <?= ?> không xung đột với quy tắc phân tích YAML. Những giải pháp thay thế này loại bỏ nhu cầu đặt dấu ngoặc kép liên tục và làm cho các file cấu hình dễ đọc hơn nhiều.
Thú vị là, Sequor đã sử dụng một cách tiếp cận khác cho logic phức tạp thông qua các biểu thức Python với các hậu tố đặc biệt, tạo ra trải nghiệm không nhất quán khi người dùng phải học hai hệ thống templating khác nhau. Cách tiếp cận kép này đã khiến một số người đặt câu hỏi liệu templating Jinja2 có cần thiết hay không.
Mối lo ngại về hiệu suất và khả năng mở rộng
Ngoài các vấn đề cú pháp, các nhà phát triển đã nêu ra những lo ngại thực tế về các quy trình làm việc mẫu của Sequor . Việc công cụ này minh họa việc tính toán lại các chỉ số khách hàng trên toàn bộ tập dữ liệu sẽ cực kỳ tốn kém trên các nền tảng như Snowflake , nơi chi phí tính toán có thể nhanh chóng tăng vọt không kiểm soát được.
Tuy nhiên, các nhà sáng tạo của Sequor đã phản hồi tích cực với phản hồi này, cho thấy cách quy trình làm việc tương tự có thể được tối ưu hóa cho xử lý gia tăng. Thay vì tính toán lại chỉ số cho tất cả khách hàng, phiên bản cải tiến chỉ xử lý các khách hàng có thay đổi đơn hàng gần đây, giảm đáng kể chi phí tính toán.
Snowflake là một nền tảng dữ liệu đám mây nơi người dùng trả tiền dựa trên việc sử dụng tính toán, khiến các truy vấn không hiệu quả trở nên tốn kém.
Bức tranh tổng thể
Cuộc thảo luận làm nổi bật một thách thức phổ biến trong công cụ dành cho nhà phát triển: cân bằng giữa sự đơn giản và tính linh hoạt. Trong khi Sequor nhằm mục đích làm cho việc tích hợp API trở nên dễ tiếp cận với các nhóm có kỹ năng SQL mà không cần kiến thức lập trình sâu, phản hồi ban đầu cho thấy rằng các quyết định thiết kế cơ bản xung quanh cú pháp và templating có thể ảnh hưởng đáng kể đến việc áp dụng lâu dài.
Các nhà sáng tạo đã thể hiện sự sẵn sàng thực hiện những thay đổi đột phá dựa trên phản hồi của cộng đồng, thậm chí còn đề nghị chuyển sang cú pháp ${{ }} được đề xuất. Sự phản hồi này đối với mối quan tâm của nhà phát triển có thể chứng minh là quan trọng khi công cụ tìm cách thiết lập vị trí của mình trong thị trường nền tảng tích hợp cạnh tranh.
Cuộc tranh luận xung quanh Sequor phản ánh những câu hỏi rộng lớn hơn về cách các công cụ nhà phát triển mới nên xử lý cấu hình và templating. Khi ngày càng nhiều nền tảng xuất hiện kết hợp nhiều công nghệ, việc đưa ra những quyết định nền tảng này một cách đúng đắn trở nên ngày càng quan trọng cho thành công lâu dài.
