ESB là gì?
ESB là một công cụ phần mềm trung gian (middleware) phức tạp giúp tích hợp các thành phần, dịch vụ riêng rẽ thành một hệ thống và phân phối công việc giữa các thành phần, dịch vụ đó. ESB còn có thể đảm nhận nhiều vai trò khác nhau như chuyển đổi giao thức, định tuyến, chuyển đổi thông điệp, logging…
Mô hình hoạt động

Cách hoạt động cơ bản của việc dùng ESB để tích hợp các ứng dụng là chúng ta sẽ đặt một trục tích hợp ở giữa các ứng dụng và cho phép các ứng dụng này có thể liên kết, giao tiếp với trục tích hợp đó. Điều này sẽ giúp cho các thành phần con của hệ thống không bị ràng buộc với nhau và cho phép các thành phần này liên lạc với nhau thông qua trục tích hợp thay vì nối trực tiếp theo kiểu điểm-điểm (point-to-point).
Cấu tạo
ESB là một công cụ phức tạp, hơn nữa do không có một tiêu chuẩn bắt buộc nào cho ESB cho nên trong thực tế có nhiều ESB được phát triển dựa trên nhiều kiến trúc khác nhau, gồm những thành phần khác nhau và cung cấp những giải pháp khác nhau. Tuy nhiên, hầu hết chúng đều có cấu tạo gồm các module chính như sau:

Module vận hành và quản lý (Operations and Management)
Module này bao gồm những chức năng hỗ trợ việc vận hành và quản lý trục tích hợp. Những chức năng chính của module này là:
- Thống kê và trạng trái (Statistic & status): Thành phần này cung cấp những thống kê về những dịch vụ được tích hợp của ESB như: số lượng lỗi, độ trễ khi xử lý thông điệp, số lượng lỗi…
- Cảnh báo (Alert): Cung cấp cơ chế gửi cảnh báo thông qua các kênh khác nhau để thuận tiện cho việc giám sát hoạt động của trục tích hợp.
- Cân bằng tải (Load balancing): Một endpoint (điểm cuối) có thể có trên nhiều hệ thống vật lý khác nhau, thành phần cân bằng tải này có thể giúp cho việc gọi tới endpoint này được san đều ra giữa các endpoint vật lý. Thành phần cân bằng tải này thường được triển khai theo thuật toán Round Robin có trọng số.
- Giới hạn thông điệp (Message Throttling): Việc giới hạn số lượng thông điệp gửi tới server trong một khoảng thời gian là một điều cần làm để việc hệ thống bị quá tải.
- Quản lý cấu hình: Cho phép điều chỉnh cấu hình của ESB một cách an toàn trên hệ điều hành, ngoài ra nó còn có thể lưu lại lịch sử chỉnh sửa để có thể khôi phục ESB về trạng thái trước đó đề phòng trường hợp cấu hình không phù hợp gây ra lỗi hệ thống.
Module phân giải (Mediation)
Chúng ta có thể coi đây là module cốt lõi của ESB, module này bao gồm những chức năng cần thiết để thiết lập luồng thông điệp của ESB sao cho phù hợp với bài toán nghiệp vụ của doanh nghiệp.
- Định tuyến thông điệp (Message Routing): Định tuyến thông điệp tới đúng dịch vụ mà chúng cần tới dựa vào tiêu đề (header), nội dung và giao thức của thông điệp.
- Chuyển đổi thông điệp (Message tranformation): Cho phép chuyển đổi định dạng thông điệp từ dạng này sang dạng khác, ví dụ như: từ kiểu XML sang JSON, từ dạng text sang nhị phân và ngược lại.
- Chuyển dịch giao thức (Protocol Translation): Khả năng chuyển đổi từ một giao thức truyền thông này sang một giao thức truyền thông khác, ví dụ như: từ FTP sang HTTP.
- Xác nhận thông điệp (Message Validation): Có khả năng đảm bảo thông điệp là hợp lệ, ví dụ như: trong trường hợp định dạng là JSON, chúng ta cần đảm bảo rằng nội dung của thông điệp đúng với cú pháp của định dạng này.
- Giao dịch (Transaction): Tương tự như khái niệm về Transaction của hệ quản trị cơ sở dữ liệu quan hệ, ESB cung cấp cho chúng ta sự toàn vẹn trong việc xử lý thông điệp. Nếu như trong luồng xử lý thông điệp, một tiến trình xử lý bị lỗi thì toàn bộ quá trình sẽ được huỷ bỏ và khôi phục về như ban đầu.
Module bảo mật (Security)
Module này hỗ trợ bảo mật ở cả tầng thông điệp và tầng vận chuyển với các thành phần:
- Xác thực (Authentication): Xác thực người dùng khi truy cập tới dịch vụ được tích hợp vào ESB.
- Uỷ quyền (Authorization): Cung cấp chức năng uỷ quyền thiết lập ESB cho người quản trị hoặc phân theo vai trò của người quản trị.
- Mã hoá và giải mã (Encryption): Cung cấp chức năng mã hoá và giải mã thông điệp.
Module điều hợp, vận chuyển (Adapters/Transport)
Module này bao gồm các bộ điều hợp (adapters) giúp kết nối tới các dịch vụ được ESB cung cấp thông qua module Services Hosting.
Tất cả yêu cầu ra vào đều phải thông qua adapter. Adapter cho phép ESB tương tác với nhiều cơ chế đầu ra. Thường thì ESB sẽ cung cấp sẵn các bộ điều hợp để thuận tiện cho việc kết nối các dịch vụ, các adapter này có thể được sử dụng để dành cho việc giao tiếp với các ứng dụng phổ biến như là: Enterprise Resource Planning (ERP), Supply Chain Management (SCM) và Customer Relationship Management (CRM), ngoài ra người sử dụng hoặc bên thứ ba có thể tự phát triển những bộ điều hợp để phù hợp với nghiệp vụ của tổ chức.
Ưu điểm của ESB
- Độc lập về công nghệ: ESB hỗ trợ các loại giao thức vận chuyển khác nhau như: HTTP/S, AMQP, MQTT khiến cho công nghệ của dịch vụ bên ngoài không phải là vấn đề đáng lo ngại. Bất kỳ dịch vụ nào được xây dựng trên bất kỳ công nghệ nào cũng có thể được tích hợp miễn là nó có thể giao tiếp bằng một trong các giao thức trên được ESB hỗ trợ.
- Khả năng sử dụng lại dịch vụ: Một khi các dịch vụ được hiển thị thông qua ESB dưới dạng dịch vụ ảo, chúng có thể được sử dụng bởi bất kỳ dịch vụ nào khác bất kể giới hạn của mạng và công nghệ. Tích hợp mới sẽ đòi hỏi nỗ lực tối thiểu để được thêm vào giải pháp.
- Quản trị và giám sát tập trung: ESB có khả năng truy nguyên nguồn gốc của tất cả các dịch vụ và do đó nó có thể là điểm trung tâm để quản lý việc sử dụng dịch vụ và theo dõi số liệu thống kê. Nếu các dịch vụ được kết nối thông qua kết nối điểm tới điểm, thì việc giám sát sẽ được thực hiện tại mỗi kết nối.
- Khả năng bảo trì: Không có sự kết hợp chặt chẽ giữa các dịch vụ cuối và do đó những dịch vụ này có thể được cập nhật độc lập mà không ảnh hưởng đến các dịch vụ khác. Ngoài ra các loại kiểm soát khác nhau có thể được áp dụng ở lớp ESB thay vì cập nhật các dịch vụ thực tế.
- Dung sai lỗi: Lỗi dịch vụ và quy trình phục hồi có thể được xử lý tại ESB và các dịch vụ cuối sẽ không bị ảnh hưởng. Ví dụ: nếu một dịch vụ không thành công, ESB có thể định tuyến các thông báo đến điểm cuối dịch vụ chuyển đổi dự phòng cho đến khi dịch vụ ban đầu hoạt động.
- Triển khai không phức tạp: ESB có một phương thức triển khai đơn giản sẽ chứa tất cả các khả năng định tuyến và điều phối dịch vụ được tích hợp. Các nhà cung cấp khác nhau có thể có các kiểu triển khai khác nhau, nhưng cuối cùng, nó sẽ không quá phức tạp để xử lý.
Một số ESB phổ biến hiện nay
Mule ESB
Là một Java-based ESB được phát triển bởi Mulesoft. So với các ESB khác thì Mule rất nhẹ nhưng nó đem lại khả năng mở rộng cao, cho phép người dùng có thể bắt đầu với những tích hợp nhỏ và tăng dần số lượng lên theo thời gian một cách dễ dàng. Các công nghệ chính được sử dụng trong Mule ESB:
- AMQP (Advanced Message Queuing Protocol): Giao thức hàng đợi thông điệp được Mulesoft tuỳ biến từ RabbitMQ Java Client.Routers: Mule ESB sử dụng các bộ định tuyến để chỉnh sửa, sắp xếp, đánh giá và chuyển phát thông điệp.
- Anypoint Connectors: Các bộ kết nối có sẵn của Mule giúp kết nối tới các giao thức, databases, các public API của bên thứ ba phổ biến như: Salesforces, Google…Ta có thể tự tạo các connectors nếu cần thiết.
- Mule Runtime Engine: là thành phần chính của Mule ESB, nó giúp tích hợp các ứng dụng, hệ thống và các APIsMule Runtime Manager: Cho phép quản lý việc triển khai, theo dõi ESB.
Oracle ESB
Là một ESB được phát triển bởi Oracle, là phiên bản dựa trên sản phẩm trước đó của hãng này là Retail Integration Bus Essentials. Oracle ESB được tối ưu để tích hợp các dịch vụ được cung cấp bởi Oracle, ngoài ra nó cũng vẫn có thể tích hợp được các ứng dụng của bên thứ ba khác.Các công nghệ chính được sử dụng trong Oracle ESB:
- Oracle Message Broker: là một hệ thống quản lý thông điệp viết bằng Java giúp dễ dàng làm việc với các hệ thống hàng đợi thông điệp như AQ, IBM MQSeries và TIBCo Redezvous.
- Routing Service: các dịch vụ định tuyến kiểu SOA cho phép các quy tắc định tuyến được định nghĩa và publish với một ngôn ngữ đặc tả dịch vụ web – WSDL (Web Sevice Description Language).
- Integration Adapter: các bộ điều hợp có sẵn giúp giao tiếp với các databases, hàng đợi thông điệp và các giao thức khác nhau.
- ESB server: máy chủ để chạy ESB, nó có thể lắng nghe các thay đổi của ESB để cập nhật theo thời gian thực.
- ESB control: cho phép thay đổi và quản lý ESB, nó sẽ tương tác với ESB server để các thay đổi này có hiệu lực ngay trong thời gian thực.
Red Hat Jboss Fuse
Red Hat Jboss Fuse (nay là Red Hat Fuse) không hẳn là một ESB mà là một nền tảng tích hợp dựa trên ESB mã nguồn mở Apache ServiceMix. Fuse cho phép việc tích hợp phân tán dựa trên quy trình Agile và cung cấp khả năng triển khai rất mạnh mẽ trên cloud hoặc on-premise dựa trên công nghệ Containers.
TIBCO ESB
TIBCO (The Information Bus Company) là một công ty của Mỹ cung cấp phần mềm tích hợp, phân tích và xử lý thông tin sự kiện cho các công ty để phục vụ xử lý tức thời hoặc như là một phần của môi trường điện toán đám mây.
Giải pháp trục tích hợp của TIBCO – nền tảng TIBCO BusinessWorks dễ dàng tiếp cận và sử dụng
Cung cấp một giải pháp tích hợp hệ thống an toàn hiệu quả, với chu kỳ triển khai ngắn hỗ trợ việc chạy môi trường test đến triển khai trong thời gian thực tế một cách suôn sẻ thuận lợi
Ngoài ra còn có khả năng phát triển lớn hơn đáp ứng nhu cầu phát triển ngày càng nhanh và rất linh hoạt giúp cho việc mở rộng mô hình, thêm mới các hệ thống dễ dàng hơn.
2.DatasheetLifeESB.pdf