Apache Kafka so với các Integration Middleware khác (MQ, ETL, ESB)


Bài gốc: Apache Kafka vs. Integration Middleware (MQ, ETL, ESB) (slideshare.net)

Trong bài viết này, tác giả tìm hiểu và phân tích sự khác biệt giữa

  1. event-driven streaming platform như Apache Kafka
  2. middleware như Message Queues (MQ), Extract-Transform-Load (ETL) và Enterprise Service Bus (ESB).

Tác giả đề cập đến một vài best practices và anti-pattern, cũng như cách các khái niệm và công cụ này bổ sung cho nhau trong Enterprise Architecture.

Các vấn đề của các middleware truyền thống (legacy middleware)

  • Với batch processing: Extract-Transform-Load (ETL) vẫn là một pattern được sử dụng rộng rãi để chuyển dữ liệu giữa các hệ thống khác nhau.
  • Với yêu cầu về xử lý thời gian thực (real-time processing) gần đây, ESB được sử dụng trong nhiều doanh nghiệp để làm trục tích hợp giữa bất kỳ microservice, ứng dụng hoặc dịch vụ đám mây để di chuyển dữ liệu qua webservice (SOAP / REST) hoặc các công nghệ khác.
  • Với stream processing: hình thức này thường được thêm vào dưới dạng thành phần riêng trong kiến trúc doanh nghiệp để kết nối các sự kiện khác nhau, triển khai các quy tắc theo ngữ cảnh và phân tích trạng thái.

Việc sử dụng tất cả các thành phần này tạo ra những thách thức và sự phức tạp trong quá trình phát triển và vận hành.

Đây là ước mơ ban đầu của doanh nghiệp

… và đây là thực tế phát triển và vận hành

Nguồn: Apache Kafka vs. Integration Middleware (MQ, ETL, ESB) — Friends, Enemies or Frenemies? | by Kai Waehner | Medium

Apache Kafka — Event Streaming Platform mã nguồn mở

Phần này thảo luận về cách các nhóm khác nhau đã cố gắng giải quyết những thách thức nói trên bằng cách xây dựng một Event Streaming Platform từ đầu thay vì sử dụng các công cụ ETL và ESB trong kiến ​​trúc của họ. Điều này, (nếu thành công) cho phép xây dựng và triển khai các microservice và ứng dụng phát trực tuyến thời gian thực quan trọng một cách độc lập. Kiến trúc tận dụng khả năng xử lý phân tán (distributed processing) và khả năng chịu lỗi (fault-tolerance) với khả năng chuyển đổi dự phòng nhanh (fast failover), không có thời gian chết (no downtime), triển khai luân phiên (rolling deployment) và khả năng xử lý lại các sự kiện (ability to preprocess events), vì vậy, bạn có thể tính toán lại đầu ra (output re-calculation) khi mã nguồn (code) của mình thay đổi. Integration và Stream Processing vẫn là chức năng chính nhưng có thể được thực hiện theo thời gian thực thay vì sử dụng các công cụ bổ sung như ETL, ESB hoặc Stream Processing tools.

Một kiến ​​trúc ví dụ cụ thể cho thấy cách xây dựng một một nền tảng phát trực tuyến quan trọng, có khả năng mở rộng và có hiệu suất cao nhờ tận dụng khung nguồn mở Apache Kafka. Messingintegration và stream processing đều được xây dựng trên cùng một nền tảng Kafka; được triển khai tại chỗ, trên đám mây hoặc hybrid. Các dự án Confluent nguồn mở, dựa trên Apache Kafka, bổ sung các tính năng như Schema Registry, các client để lập trình Go hoặc C hoặc nhiều trình kết nối dựng sẵn cho các công nghệ khác nhau.

Tại sao chọn Apache Kafka thay vì Middleware truyền thống?

Bởi vì Apache Kafka có các lợi thế sau:

  1. Event Streaming Platform
  2. Single infrastructure
  3. Reliability & zero downtime (“built for failure”)
  4. Decoupling of clients
  5. No vendor lock-in

Vậy Kafka có phải là giải pháp toàn năng? Không, vẫn có những lý do để giữ lại middleware hiện tại của bạn!

Kafka thật tuyệt! Đối với các dự án mới, nó thường có ý nghĩa hơn nhiều so với các middleware cũ. Tuy nhiên, tất nhiên, nó không phải là giải pháp toàn diện để giải quyết mọi vấn đề.

Tài liệu dưới đây (slide, video, bài báo) cũng đề cập đến cách Kafka bổ sung cho phần mềm trung gian tích hợp truyền thống như MQ, ETL, ESB. Ví dụ: nếu bạn cần tích hợp với các hệ thống ERP cũ hoặc máy tính lớn, có thể bạn vẫn muốn sử dụng tích hợp hiện có của mình và bổ sung nó bằng Kafka thay vì thực hiện thay thế ngay lập tức (tốn nhiều công sức và rủi ro).

Link đến bài trình bày của tác giả

Apache Kafka vs. Enterprise Service Bus (ESB) | Confluent

SAVECROSS-POST