KHO TRI THỨC KHO TRI THỨC

Lựa chọn trục tích hợp ESB thích hợp với yêu cầu tích hợp
Ngày đăng 28/03/2017 | 17:57

Trong bối cảnh hiện nay, việc tích hợp, liên thông quy trình giữa các ứng dụng với nhau trong cùng một tổ chức hoặc giữa các tổ chức với nhau là điều cần thiết để có thể chia sẻ, sử dụng lại tài nguyên thông tin một cách hiệu quả nhất

Trong bối cảnh hiện nay, việc tích hợp, liên thông quy trình giữa các ứng dụng với nhau trong cùng một tổ chức hoặc giữa các tổ chức với nhau là điều cần thiết để có thể chia sẻ, sử dụng lại tài nguyên thông tin một cách hiệu quả nhất. Trục tích hợp ESB được hình thành như một công cụ để hỗ trợ việc tích hợp các ứng dụng lại với nhau. Tuy nhiên câu hỏi đặt ra là: Thế nào là một trục tích hợp ESB? Khi nào thì chúng ta sẽ sử dụng một bộ công cụ tích hợp? Và sản phẩm tích hợp nào là thích hợp nhất cho từng dự án cụ thể? Bài viết này sẽ phân tích, giải thích tại sao không có một giải pháp nào là toàn diện, hoàn hảo cho tất cả các dự án và có thể việc sử dụng trục tích hợp ESB sẽ là một lựa chọn sai lầm.

Định nghĩa thuật ngữ “Trục tích hợp ESB”

Trên thị trường hiện nay có một số lượng lớn các sản phẩm từ các nhà cung cấp khác nhau có đề là “Trục tích hợp ESB”. Điều không may mắn cho chúng ta là không có một định nghĩa chuẩn nào về thuật ngữ này cả. Chính vì lý do đó mà các sản phẩm cung cấp rất nhiều các tính năng khác nhau. Do đó, thuật ngữ trục tích hợp ESB cần phải luôn luôn được định nghĩa một cách rõ ràng, cụ thể trước khi đưa chúng vào sử dụng. Trong Hình 1 bên dưới, trục tích hợp ESB được định nghĩa như một sản phẩm phần mềm giúp cho việc phát triển tích hợp ứng dụng và cung cấp hạ tầng cần thiết để triển khai việc định tuyến, biên dịch, và các chức năng tích hợp khác. Trong kiến trúc tích hợp phức tạp khác, trục tích hợp ESB luôn nằm ở giữa khung tích hợp và bộ công cụ tích hợp.

Hình 1 - Các khả năng thay thế cho việc tích hợp ứng dụng

Sau khi thuật ngữ trục tích hợp ESB được định nghĩa, chúng ta sẽ xác định, cân nhắc xem khi nào trục tích hợp ESB sẽ được đưa vào sử dụng và khi nào thì việc áp dụng một khung tích hợp hoặc một bộ công cụ tích hợp sẽ là lựa chọn tốt nhất.

Khung tích hợp

Một khung tích hợp giúp cho việc triển khai các mô hình tích hợp nghiệp vụ (Enterprise Integration Patterns) như Splitter hoặc Content Based Router, với mục đích tích hợp các ứng dụng lại với nhau theo một phương pháp chuẩn. Sử dụng các chuẩn giao diện lập trình ứng dụng - API - để tích hợp các sản phẩm khiến cho việc triển khai cũng như giúp cho các nhà phát triển hiểu được mã nguồn một cách dễ dàng hơn. Một khung tích hợp là giải pháp có thể nói là tương đối toàn diện để tích hợp các ứng dụng khác nhau với các giao thức và công nghệ khác nhau.

Một khung tích hợp bao gồm một tập các thư viện thông dụng và do đó nó sẽ tương thích với mọi môi trường phát triển, thậm chí nó tương thích với cả một trình biên tập văn bản cổ điển. Những ví dụ điển hình về khung tích hợp đó là Apache Camel và Spring Integration trong môi trường Java và NserviceBus trong môi trường .NET

Với những khung tích hợp này đội ngũ phát triển có thể đảm bảo phần nào đó sự thành công của dự án. Tuy nhiên sự hỗ trợ từ phía thương mại hầu như là không có. Về phía công cụ, cũng chỉ tồn tại một số công cụ và gần như là không khả thi cho việc triển khai những nhiệm vụ quan trọng.

Trục tích hợp ESB

Cũng giống như khung tích hợp, một trục tích hợp ESB được sử dụng để tích hợp các ứng dụng lại với nhau. Trục tích hợp ESB được xây dựng hoàn toàn dựa trên một khung tích hợp. Tuy nhiên, nó là một sản phẩm mạnh mẽ hơn rất nhiều so với khung tích hợp. Không giống như khung tích hợp, bên cạnh việc cung cấp các tính năng cơ bản cho việc tích hợp ứng dụng, trục tích hợp ESB cung cấp công cụ hỗ trợ mạnh mẽ cho việc triển khai, quản trị và giám sát tại thời điểm hệ thống đang xử lý. Hơn nữa, trình biên tập đồ họa được sử dụng cho việc triển khai các trường hợp tích hợp khác nhau. Việc tích hợp về mặt logic có thể được mô hình hóa chỉ với việc “kéo và thả”, và các đoạn mã lệnh tương ứng sẽ tự động được sinh ra. Về phía thị trường cũng cung cấp các gói sản phẩm hoàn thiện về trục tích hợp ESB.

Lợi ích lớn lao của các trục tích hợp ESB so với các khung tích hợp nguyên thủy đó là cung cấp các công cụ tốt hơn, qua đó cắt giảm được chi phí và độ phức tạp trong triển khai lẫn sử dụng, vì thế mà các vấn đề về tích hợp đã được giải quyết ở mức độ cao hơn.

Bộ công cụ tích hợp

Bộ công cụ tích hợp cung cấp tất cả các tính năng của một trục tích hợp ESB. Thêm vào đó, rất nhiều các chức năng khác như Quản lý quy trình nghiệp vụ (BPM), Giám sát hoạt động nghiệp vụ, hay là Quản lý siêu dữ liệu cũng được bổ sung. Nếu một trong số các tính năng bổ sung này được yêu cầu cho việc nâng cao sự tích hợp, thì việc sử dụng các bộ công cụ này là hoàn toàn thích hợp. Toàn bộ quá trình tích hợp có thể được thực hiện chỉ với một bộ công cụ phần mềm duy nhất. Qua những phân tích ở trên, hy vọng rằng chúng ta đã thấy được sự khác nhau giữa một khung tích hợp, một trục tích hợp và một bộ công cụ. Tiếp theo, chúng ta sẽ xem xét cách để chọn lựa một trục tích hợp hay một bộ công cụ thích hợp đúng đắn.

Các tiêu chí so sánh

Thực chất thì rất khó để có thể xây dựng nên một bảng so sánh cho tất cả các sản phẩm bởi vì các sản phẩm cung cấp rất nhiều các chức năng (và thường là khác nhau). Bên cạnh đó, danh sách các chức năng cũng thường xuyên thay đổi trong thế giới công nghệ thông tin.

Chính vì vậy, chúng ta cần phải xác định trước nhu cầu của chúng ta, và sau đó đánh giá sản phẩm nào là thích hợp nhất. Các giải pháp độc quyền thường là giống nhau, và các sản phẩm mã nguồn mở phổ biến cũng thường cung cấp các tính chất tương tự. Chính vì vậy, việc cân nhắc từ giai đoạn đầu tiên là cần thiết để xem việc sử dụng các giải pháp bản quyền hay là các giải pháp mã nguồn mở là lựa chọn đúng đắn.

Để lựa chọn một cách đúng đắn thì chúng ta nên tuân theo một số tiêu chí sau đây:

  • Tính dễ sử dụng: Việc cài đặt có phức tạp không? Cần phải có bao nhiêu công cụ? Môi trường phát triển có trực quan hay không?
  • Sự bảo trì: Việc quản trị sản phẩm sẽ như thế nào? Có giao diện đồ họa cho việc giám sát các dịch vụ hay không?
  • Cộng đồng: có các diễn đàn công cộng hay là danh sách thông tin hỗ trợ hay không? Có nhiều các bài báo, bài giảng hay là các video để hướng dẫn hay không? Sản phẩm có được hỗ trợ bởi nhiều công ty hay không?
  • Sự hỗ trợ: những tùy chọn hỗ trợ nào được cung cấp (giờ hành chính, đường dây nóng 24/7, email...)? Sự thỏa thuận về mức độ dịch vụ có được đảm bảo hay không? Sự hỗ trợ có được cung cấp theo ngôn ngữ chúng ta mong muốn hay không?
  • Các chức năng: Tất cả các chức năng yêu cầu có được cung cấp hay không?
  • Tính cơ động: Chúng ta có thể thay đổi các chức năng của sản phẩm để đáp ứng các nhu cầu của chúng ta hay không?
  • Tính mở rộng: Chúng ta có thể mở rộng sản phẩm hay không? Sản phẩm đó và các giao diện của nó có dựa trên các tiêu chuẩn hay không?
  • Sự kết nối: Các bộ chuyển đổi cho các công nghệ yêu cầu có sẵn sàng hay không? Có các bộ chuyển đổi cho các sản phẩm B2B như SAP hoặc Salesforce hay không? Chúng ta có thể dễ dàng xây dựng bộ chuyển đổi riêng của chúng ta hay không?
  • Giá thành: Tổng giá tiền của sản phẩm bao gồm bảo trì... là bao nhiêu?
  • Bản quyền: Bản quyền là như thế nào? Điều gì sẽ xảy ra nếu các yêu cầu thay đổi (nhiều máy tính hơn, nhiều CPU hơn, chuyển đổi sang máy ảo... thì sẽ như thế nào? Việc nâng cấp có miễn phí hay không? Việc hạ cấp có khả thi hay không?

Bảng 1 so sánh các điểm mạnh và điểm yếu của các trục tích hợp ESB bản quyền và mã nguồn mở và các bộ công cụ (xanh lá = tốt, vàng = trung bình, đỏ = tồi).

Tiêu chí

Bản quyền

Mã nguồn mở

Dễ sử dụng

Việc cài đặt rất phức tạp, cần phải có sự tư vấn

Một click chuột cho việc cài đặt, bắt đầu sử dụng sau vài phút, nền tảng hợp nhất

Bảo trì và giám sát

Các công cụ mạnh mẽ (ví dụ cho việc quản trị và giám sát), không cần phải phân tích mã nguồn

Các công cụ không mạnh mẽ (ví dụ cho việc quản trị và giám sát, tích hợp các sản phẩm từ các nhà cung cấp khác nhau đòi hỏi thời gian). Không cần phải phân tích mã nguồn.

Cộng đồng

Phải trả chi phí cho sự hỗ trợ, mất phí cho việc tham gia diễn đàn (nhưng thực tế thì không có cộng đồng nào thực sự có ích)

Dựa trên các dự án mã nguồn, thêm với cộng đồng riêng

Sự hỗ trợ

Hỗ trợ 24/7 từ phía nhà cung cấp, thỏa thuận về mức độ dịch vụ tốt, triển khai với hàng nghìn máy chủ

Hỗ trợ 24/7 từ phía nhà cung cấp, sự bảo đảm thấp hơn so với các sản phẩm bản quyền, cần phải kiểm tra lại đối với việc tư vấn và hỗ trợ

Chức năng

Các tính năng tích hợp và nhiều hơn thế (BAM, CEP, EDA...)

Các tính năng tích hợp và một vài chức năng khác

Tính cơ động

(Tạo yêu cầu thay đổi + đợi lâu + trả tiền) hoặc (trả rất nhiều tiền + yêu cầu thay đổi được thực hiện nhanh chóng)

Mã nguồn mở, thay đổi theo mong muốn

Tính mở rộng

Tự làm (rất khó) hoặc trả tiền

Dựa trên các tiêu chuẩn

Sự kết nối

Có các bộ chuyển đổi cho công nghệ và nghiệp vụ

Có các bộ chuyển đổi cho công nghệ và nghiệp vụ

Costs Giá thành

Rất lớn

Thấp

Bản quyền

Danh sách giá thành rất phức tạp (phải trả cho rất nhiều thứ như nâng cấp, di chuyển tới VM)

Việc nâng cấp được bao gồm, giá thành thấp, có thể hạ cấp

Bảng 1. So sánh các trục tích hợp ESB bản quyền và mã nguồn mở

Các lựa chọn thay thế sản phẩm. 

Sau khi các điểm khác nhau chính của các sản phẩm mã nguồn mở và bản quyền đã được xác định, chúng ta sẽ xem xét một số các sản phẩm cụ thể.

Hầu hết tất cả các nhà cung cấp các sản phẩm tích hợp có bản quyền như IBM, Oracle, cung cấp một giải pháp cho tất cả các chức năng. Đối với các giải pháp mã nguồn mở, cụ thể là Unified Platform và WSO2 Platform cũng đáng được nhắc đến, bởi vì chúng cũng cung cấp các bộ công cụ hoàn thiện.

Oracle Service Bus / Fusion Middleware

Oracle Service Bus là trục tích hợp ESB hiện nay của Oracle. Nó là một thành phần của Oracle Fusion Middleware, một bộ công cụ tích hợp. Có rất nhiều sản phẩm trong đó, ví dụ bộ SOA, Coherence, Complex Event Processing, BEPL Process Manager, Enterprise Messaging Service, Service Registry, và nhiều hơn thế. Thực tế thì không nhiều chức năng mà bộ công cụ Oracle không cung cấp. Các công cụ này rất mạnh mẽ và ổn định. Hầu hết các sản phẩm đều có các trình biên tập đồ họa. Sự hỗ trợ cũng luôn sẵn sàng cho hầu hết các thỏa thuận mức độ dịch vụ. Nếu chúng ta cần công cụ mạnh mẽ và cần các thỏa thuận về mức độ dịch vụ thì Oracle là lựa chọn đúng đắn. Tuy nhiên giá thành của Oracle không hề rẻ.

Oracle Fusion Middleware được xây dựng dựa trên các tiêu chuẩn như Java EE, BPEL, SOAP hoặc SCA. Các sản phẩm này là sản phẩm bản quyền và là sự tổng hợp của Oracle trong suốt một quá trình. Chính vì vậy mà các mã nguồn khác nhau đã được sử dụng, và các sản phẩm khác nhau thường cần phải có công cụ phát triển khác nhau. Dung lượng của sản phẩm có thể vượt quá 20Gb. Việc cài đặt rất mệt mỏi và có thể mất vài ngày, thậm chí đối với việc cài đặt đơn giản trên máy tính xách tay cũng mất thời gian. Các sản phẩm rất nặng. Tài nguyên yêu cầu tại thời điểm hoạt động rất cao.

Chúng ta cũng có thể thay thế Oracle bằng IBM, và Fusion Middleware bằng WebSphere. Về cơ bản thì các sản phẩm của IBM cũng tương tự đối với các sản phẩm của Oracle, tuy nhiên IBM có 03 trục tích hợp ESB khác nhau bao gồm Message Broker, ESB và DataPowerSOA Appliance. Tibco, Microsoft và SAP cũng đóng vai trò quan trọng trong thị trường các ESB bản quyền.

Mule ESB

Mule ESB là một trong những trục tích hợp ESB mã nguồn mở thành công đầu tiên. Nó cung cấp rất nhiều chức năng có chất lượng như những trục tích hợp mã nguồn mở trước đây. Những chức năng này bao gồm “một click chuột” cho việc cài đặt, công cụ dựa trên nền tảng Eclipse. Thường thì các trục tích hợp ESB mã nguồn mở rất nhẹ và có thể mở rộng. Ngoài phiên bản miễn phí, thì cũng có phiên bản thương mại. Phiên bản này cung cấp thêm các chức năng bổ sung và cung cấp sự hỗ trợ đối với sản phẩm.

Đối với những ai chưa biết, thì “mã nguồn mở” không có nghĩa là “cho không”. Tất cả các nhà cung cấp phần mềm mã nguồn mở cũng cần phải kiếm tiền và không thể phát triển các sản phẩm và cung cấp miễn phí được. Tuy nhiên, giá thành là có thể chấp nhận được và rẻ hơn rất nhiều so với các sản phẩm có bản quyền. Và một điều nữa đó là các phiên bản mã nguồn mở có thể được sử dụng mà không mất phí bản quyền. Mặc dù vậy, thường thì phiên bản mã nguồn mở đơn giản phục vụ với mục đích để người dùng có thể tùy chỉnh và tạo nền tảng để sau này cập nhật lên phiên bản thị trường với các chức năng bổ sung.

Cũng giống như tên của nó, Mule ESB là một trục tích hợp tinh khiết. Những điểm mạnh của nó so với các khung tích hợp như Apache Camel hoặc Spring Integration là các trình biên tập đồ họa hay là các bộ kết nối. Mặc dù vậy, chức năng của bộ công cụ không có trong Mule ESB. Trong trường hợp này, trục tích hợp ESB phải được kết hợp với các sản phẩm từ các nhà cung cấp khác. Cộng đồng về Mule ESB cũng không nhiều, mã nguồn cũng bị giới hạn. Chính những điều này là những điểm bất lợi của Mule ESB so với các đối thủ khác.

Fuse ESB

Fuse ESB cũng là một trục tích hợp ESB thuần khiết như Mulde ESB. Nó được xây dựng dựa trên những tiêu chuẩn thực tế trong môi trường tích hợp như Apache CXF và Apache Camel. Môi trường phát triển được dựa trên Eclipse và rất trực quan.

Fuse ESB là một phần của FuseSource. Tuy nhiên, FuseSource gần đây đã được Red Hat thu nhập về và hiện tại thuộc về Jboss. Fuse ESB hiện tại đang trong quá trình mở rộng và sẽ tiếp tục được hỗ trợ. Nó sẽ được tích hợp vào trong Jboss Enterprise SOA Platform, cũng giống như BPM của Polymita. Mặc dù vậy, sẽ là một chặng đường dài phía trước để hoàn thiện một bộ công cụ hợp nhất, do việc tích hợp giữa FuseSource và Plolymita sẽ phải mất vài tháng, và với Jboss EBS, Switchyard và Fuse ESB, ba sản phẩm trục tích hợp EBS này cần phải hợp nhất thành một.

Talend ESB / Unified Platform

Talend ESB là một phần của bộ công cụ Talend. Talend EBS có thể được sử dụng một cách độc lập hoặc kết hợp với các thành phần khác của nền tảng hợp nhất của Talend. Tất cả các thành phần này đều là mã nguồn mở và đều có sẵn miễn phí. Phiên bản thị trường cung cấp các tính năng bổ sung và sự hỗ trợ từ phía nhà cung cấp. Sự khác nhau đối với các sản phẩm bản quyền đó là tất cả các thành phần được xây dựng dựa trên cùng một dạng mã nguồn và cùng một công cụ được sử dụng ở mọi nơi. Việc ứng dụng tại các khu vực khác nhau như ESB, BPM, ELT, MDM... được hoàn thành một cách trôi chảy và nó không phải là một dự án tích hợp riêng rẽ.

Tất cả các công cụ của bộ Talend được xây dựng trên nền tảng Eclipse. Do đó sự trực quan đối việc sử dụng trong Eclipse vẫn được giữ nguyên. Talend cung cấp thiết kế đồ họa cho tất cả các phần của sản phẩm và sử dụng phương thức “không mã code”. Điều này cho phép thực thi một cách hiệu quả trong các trường hợp tích hợp. Tất nhiên, nếu chúng ta vẫn có thể viết và tích hợp tùy biến về mặt lôgic đối với từng dự án, ví dụ thông qua các lớp Java (POJO) hoặc các ngôn ngữ tệp lệnh khác.

Cũng giống như Fuse ESB, Talend ESB được xây dựng dựa trên một vài tiêu chuẩn thực tế trong môi trường tích hợp như Apache Camel, Apache CXF, Apache Karaf và Apache Zookeeper. Bên cạnh sự tồn tại của các bộ kết nối cho Apache Camel như JMS, HTTP hoặc FPT, thì rất nhiều bộ chuyển đổi B2B cũng sẵn sàng, ví dụ dành cho Alfresco, Jasper, SAP, Saleforce hoặc các hệ thống máy chủ. Có khoảng hơn 500 bộ kết nối được bao gồm bởi mặc định. Có một điểm bất lợi đó là Talend IDE đòi hỏi phần cứng ở mức độ cao hơn so với các đối thủ của nó. Chúng ta không nên cài đặt Talend trên những máy tính quá yếu. Một điểm yếu nữa của Talend đó là thiếu các tính năng quản trị SOA.

Kết luận

Mặc dù có rất nhiều giải pháp cho việc tích hợp, tuy nhiên không có một mũi tên nào là bắn trúng tất cả các đích. Trước hết, chúng ta phải cân nhắc xem việc sử dụng một khung tích hợp có hiệu quả hay không. Tuy nhiên cần phải nhận thức được là hầu hết toàn bộ mã nguồn chúng ta sẽ phải tự viết, các bộ công cụ và sự hỗ trợ là rất khan hiếm. Trong khi đó, một trục tích hợp ESB là một lựa chọn thích hợp. Tuy nhiên, nếu có bất kỳ tính năng bổ sung nào của bộ công cụ sẽ được sử dụng trong tương lai, thì việc sử dụng trục tích hợp ESB của bộ công cụ tích hợp từ khi bắt đầu là điều nên làm. Điều này đảm bảo khả năng duy trì mà không gặp phải vấn đề gì cả kể cả việc chi phí sẽ bị đội lên đối với việc sử dụng kết hợp nhiều sản phẩm khác nhau.

Nếu một trục tích hợp ESB hoặc một bộ tích hợp cần phải sử dụng, thì việc xác định sản phẩm mã nguồn mở hay sản phẩm bản quyền cũng là điều cần thiết. Các sản phẩm bản quyền cung cấp đầy đủ các chức năng và cung cấp sự hỗ trợ mạnh mẽ. Tuy nhiên, nó thường có giá thành cao và thường rất phức tạp. Trong khi đó, các giải pháp mã nguồn mở ghi điểm ở giá thành thấp, dễ sử dụng và linh động. Khi quyết định về sự lựa chọn đã được đưa ra, thì cần phải xây dựng một bảng so sánh để đánh giá chi tiết các giải pháp đó. Việc đánh giá là thực sự cần thiết trước khi đưa ra quyết định cuối cùng. 

Cao Hoàng Nam - Cục Tin học hóa