mở đầu tiên cung cấp giải pháp tổng thể và đủ lớn để xây dựng nên một hệ thống SOA. Mule cung cấp một bộ đầy đủ các tính năng tích hợp cần thiết cho một doanh nghiệp. Mule là một nền tảng tích hợp dựa trên Java, cho phép các nhà phát triển kết nối các ứng dụng với nhau một cách nhanh chóng và dễ dàng, giúp các ứng dụng trao đổi dữ liệu với nhau. Mule cho phép tích hợp các hệ thống hiện có, bất kể các công nghệ khác nhau mà các ứng dụng sử dụng, bao gồm JMS, dịch vụ Web, JDBC, HTTP, và nhiều hơn nữa.
Kiến trúc ESB có thể được triển khai ở mọi nơi, có thể tích hợp và sắp xếp các sự kiện theo thời gian thực hoặc theo lô và có kết nối chung. Mule cung cấp đầy đủ công cụ và thư viện hỗ trợ cho lập trình viên phát triển ứng dụng. Anypoint Studio là một công cụ giúp dễ dàng phát triển một ứng dụng trên nền tảng MuleESB. Được xây dựng từ nền tảng của IDE Eclipse, Anypoint Studio cho phép lập trình viên có thể kéo thả các thành phần để tạo nên các dòng điều khiển (flow), để có thể chuyển đổi dữ liệu gửi đi từ ứng dụng này sang dữ liệu nhận vào của ứng dụng kia.
MuleSoft cung cấp cả giải pháp chạy tích hợp Mule server trên Anypoint Studio lẫn chạy độc lập ứng dụng trên Mule server (Standalone). Mule nhẹ nhưng có khả năng mở rộng cao, cho phép người dùng bắt đầu từ việc kết nối một vài ứng dụng và tăng số lượng ứng dụng tham gia vào hệ thống theo thời gian. Một hệ thống theo kiến trúc ESB quản lý tất cả các tương tác giữa các ứng dụng và các thành phần một cách minh bạch, bất kể chúng tồn tại trong cùng một máy ảo hay trên Internet, và bất kể giao thức truyền tải cơ bản mà chúng sử dụng. MuleSoft là Luận văn thạc sĩ Công nghệ thông tin 7 nhà cung cấp duy nhất được Gartner đánh giá là công cụ đứng đầu trong việc phát triển hệ thống tích hợp, đặc biệt là ứng dụng theo công nghệ trục tích hợp (xem Hình 1.
MuleESB là bộ thư viện được cung cấp bởi MuleSoft cho phép phát triển ứng dụng ESB. Việc triển khai ứng dụng phân tán trên môi trường mạng giúp cho việc kết nối giữa các ứng dụng dễ dàng, tuy nhiên lại gây ra khó khăn trong giao tiếp giữa các ứng dụng do việc khác biệt về công nghệ, nền tảng. MuleESB giải quyết vấn đề này bằng việc cung cấp một trục tích hợp có chức năng nhận và định tuyến thông điệp giữa các ứng dụng với nhau.3: Nền tảng tích hợp cho doanh nghiệp [8] MuleESB hoạt động như một bộ chứa các dịch vụ có khả năng tái sử dụng. Ngoài việc che giấu các dịch vụ khỏi định dạng thông điệp và các giao thức, tách biệt luồng nghiệp vụ với xử lý thông điệp, cho phép gọi dịch vụ ở các điểm độc lập, MuleESB còn cung cấp khả năng định tuyến, phân loại, sắp xếp thứ tự các thông điệp dựa trên nội dung và các quy tắc quản lý luồng nghiệp vụ cũng như chuyển đổi dữ liệu qua lại giữa các định dạng và giao thức khác nhau.
Kiến trúc MuleESB Hình 1.4 mô tả kiến trúc của MuleESB. Trong luồng xử lý, bộ chuyển đổi (Transformer) có vai trò chuyển đổi định dạng thông điệp thành các loại định dạng phù hợp với nơi nhận thông điệp, trước khi được xử lý và định tuyến. Các bộ chuyển đổi (Transformer) là chìa khoá để trao đổi dữ liệu, dữ liệu chỉ được chuyển đổi khi cần thiết thay vì chuyển đổi thành định dạng chung, thông điệp có thể được gửi qua các kênh truyền khác nhau. Luận văn thạc sĩ Công nghệ thông tin 8 Việc tách biệt giữa luồng logic nghiệp vụ và cách thức truyền nhận dữ liệu cho phép mở rộng kiến trúc hệ thống và dễ dàng tuỳ biến luồng nghiệp vụ.4: Kiến trúc MuleESB [6].
Khi một thông điệp được gửi đi giữa các ứng dụng, MuleESB tiếp nhận thông điệp, chuyển đổi định dạng thông điệp, phân loại và điều hướng sang dịch vụ nhận cần thiết bằng việc sử dụng bộ chuyển đổi (Transformer). Các thành phần (Components) chứa logic nghiệp vụ để xử lý dữ liệu bên trong thông điệp và không chứa thông tin nào về cách gửi/nhận của bản thân thông điệp đó.5: Mô hình luồng xử lý trên MuleESB Quá trình điều hướng thông điệp giữa các thành phần như Hình 1.5 là một ví dụ về luồng cơ bản của MuleESB. Quản lý luồng (Flow control) đảm bảo việc thông tin đúng đắn sẽ được chuyển đi đến đúng đích dựa vào các điều kiện được ghi trong thông điệp. Mule hỗ trợ nhiều loại thành phần xử lý khác nhau để quản lý và điều hướng Luận văn thạc sĩ Công nghệ thông tin 9 thông điệp, để thêm các thành phần này, chỉ cần định nghĩa các thẻ XML trong file cấu hình của một ứng dụng Mule, Mule Studio sẽ tự động tìm và xử lý nội dung theo vai trò của thành phần đó.
Ứng dụng thực tế sử dụng MuleESB MuleESB được sử dụng rộng rãi để phát triển ứng dụng ESB, đặc biệt trong ngành tài chính, ngân hàng. Ví dụ sau đây trình bày về một hệ thống ngân hàng điện tử sử dụng MuleESB để phát triển ứng dụng ESB, giúp giảm thiểu chi phí phát triển và bảo trì, nâng cao chất lượng sản phẩm. Internet Banking (IB) là hệ thống ngân hàng điện tử dành cho khách hàng doanh nghiệp sử dụng các dịch vụ của VietinBank như: chuyển tiền, chi lương, thanh toán chuỗi hóa đơn, nộp ngân sách nhà nước, báo cáo.Hệ thống bao gồm các ứng dụng phía khách hàng, các ứng dụng quản trị của ngân hàng và các hệ thống lõi của ngân hàng (core banking). Các ứng dụng trong hệ thống được xây dựng trên các nền tảng khác nhau như .M… thậm chí có những ứng dụng xây dựng trên nền tảng công nghệ cũ như Visual Basic.6: Kiến trúc hệ thống IB cũ Trong hệ thống IB (Hình 1.6), ứng dụng RestAPI cung cấp các đầu dịch vụ cho các ứng dụng ERP của doanh nghiệp ngoài kết nối vào và thực hiện các giao dịch.
Mobile API cung cấp giao diện kết nối cho ứng dụng chạy trên thiết bị di động, khách hàng có thể sử dụng ứng dụng trên thiết bị cầm tay để thực hiện giao dịch. Web application là nơi cung cấp các giải pháp giao dịch cho doanh nghiệp trên nền tảng web. Report Dasboard hỗ trợ báo cáo cho người dùng ngân hàng. Bankend Application cung cấp màn hình quản trị hệ thống, xử lý lỗi xảy ra cho các giao dịch của khách hàng gửi tới.
IB Database là nơi lưu trữ thông tin khách hàng và giao dịch của hệ thống Internet Banking. CoreBank thực hiện nghiệp vụ giao dịch, sao kê ngân hàng. Datawarehouse là kho dữ liệu phục vụ báo cáo. Payment gateway thực hiện Luận văn thạc sĩ Công nghệ thông tin 10 nhiệm vụ cổng thanh toán, kết nối với các đối tác bên ngoài như nhà cung cấp dịch vụ, kho bạc nhà nước, chi cục thuế.6 mô tả kiến trúc hệ thống Internet Banking xây dựng theo mô hình kết nối điểm-điểm (point-to-point).
Với kiến trúc này, hệ thống sẽ bao gồm nhiều kết nối giữa các ứng dụng khác nhau. Việc này dẫn đến quá trình bảo trì và mở rộng hệ thống gặp nhiều khó khăn, khả năng kiểm soát lỗi kém. Ngoài ra, kết nối point-to-point đối với hệ thống này dẫn đến các quy trình nghiệp vụ của các ứng dụng trên lặp lại và chồng chéo nhau, gây tốn chi phí phát triển và bảo trì.7 mô tả hệ thống Internet Banking sau khi phát triển sử dụng một lớp ESB thực hiện điều hướng thông điệp và xử lý kết hợp với quy trình nghiệp vụ để giảm thiểu việc phát triển chồng chéo nhiều chức năng giống nhau, đồng thời giảm thiểu số lượng các kết nối giữa các ứng dụng. Ngoài ra, việc tích hợp còn giúp tiết kiệm kiệm chi phí triển khai, bảo trì.
MuleESB là một framework nhẹ, quá trình triển khai diễn ra tự động và nhanh chóng, nên thời gian ngắt của ứng dụng trong lúc triển khai nhỏ (dưới 60 giây), đảm bảo hệ thống chạy thông suốt thời gian dài.7: Kiến trúc hệ thống IB mới 1. Tích hợp và triển khai liên tục 1. Tích hợp liên tục Theo định nghĩa của Martin Fowler [9], tích hợp liên tục – Continuous Intergration là phương pháp phát triển phần mềm đòi hỏi các lập trình viên trong nhóm tích hợp ứng dụng thường xuyên. Mỗi ngày, các thành viên đều phải theo dõi và phát triển công việc của họ ít nhất một lần.
Việc này sẽ được một nhóm khác kiểm tra tự động, nhóm này sẽ tiến hành kiểm thử truy hồi để phát hiện lỗi nhanh nhất có thể. Đây là phương pháp tiếp cận giúp giảm bớt vấn đề về tích hợp hơn và cho phép phát triển phần mềm gắn kết nhanh hơn. Các nhóm phát triển sử dụng phương pháp Agile thường dùng tích hợp liên tục để đảm bảo mã nguồn của toàn dự án luôn dịch được và Luận văn thạc sĩ Công nghệ thông tin 11 chạy đúng. Đây là một thực tiễn phát triển yêu cầu các lập trình viên tích hợp mã vào một kho lưu trữ được chia sẻ trong các khoảng thời gian đều đặn, giúp loại bỏ các vấn đề của việc tìm lỗi xảy ra trong pha lập trình.
Bởi vậy, mỗi khi có một sự thay đổi mã nguồn trên kho lưu trữ, quá trình tích hợp liên tục sẽ được kích hoạt. Với tầm quan trọng của kiểm thử, việc sử dụng một giải pháp tích hợp liên tục (Continuous Integration - CI) trong cả quá trình phát triển là vô cùng cần thiết. CI đem lại nhiều thuận lợi trong kiểm thử như phát hiện sớm các vấn đề của hệ thống trong vòng đời phát triển, đảm bảo các ca kiểm thử được chạy hết trước khi triển khai một phiên bản mới. Hệ thống CI có khả năng tự động cập nhật và biên dịch mã nguồn, chạy các ca kiểm thử đã được định nghĩa trước cho mỗi một commit.
Ngoài ra CI còn giúp cho việc đóng gói phần mềm dễ dàng, kết hợp với các giải pháp triển khai liên tục (Continuos Delivery - CD) triển khai nhanh gọn hơn. Quy trình tích hợp liên tục (CI) (xem Hình 1.8) bắt đầu khi có một sự thay đổi (commit) mới được đẩy lên, hệ thống CI sẽ tự lấy mã nguồn mới về bằng lệnh gọi từ svn, git hoặc CSV… sau đó thực hiện dịch mã. Hệ thống sẽ tự động gửi email về cho các thành viên nếu như việc dịch mã bị lỗi. Bước tiếp theo khi bược biên dịch thành công, các ca kiểm thử đã được định nghĩa sẽ được chạy toàn bộ, nếu có ca kiểm thử thất bại, hệ thống sẽ gửi email thông báo cho đội phát triển.