Mở đầu Trong những năm qua có rất nhiều kiến trúc phần mềm đã và đang được xây dựng và triển khai nhằm giải quyết các vấn đề như giảm chi phí phát triển phần mềm, giảm chi phí bảo trì vận hành phần mềm. Rất nhiều hãng phần mềm khác nhau trên thế giới đã nghiên cứu, tìm tòi nhiều công nghệ mới, nhiều kiến trúc phần mềm khác nhau nhưng lại dựa trên các chuẩn khác nhau dẫn đến môi trường không đồng nhất. Nhiều hệ thống cũ thay vì được sử dụng lại thì lại được xây dựng lại từ đầu dẫn đến quá tốn kém về thời gian và tiền bạc. Hơn nữa giữa các hệ thống khác nhau, các môi trường khác nhau sẽ không thể giao tiếp được với nhau một khi chưa thống nhất được chuẩn để giao tiếp với nhau.
Đó là khó khăn rất lớn trong quá trình tích hợp các hệ thống với nhau. Một nguyên nhân cũng gây rất nhiều khó khăn cho các đơn vị tích hợp hệ thống là vấn đề lập trình dư thừa và không tái sử dụng được. Ví dụ như Ngân hàng A phát triển một dịch vụ như chuyển khoản qua các kênh ATM, quầy giao dịch và internet của Ngân hàng A. Các dịch vụ này đều có mục đích là truy nhập vào CoreBanking để thực hiện giao dịch cộng tiền vào tài khoản đích và trừ tiền vào tài khoản nguồn.
Nếu không được tái sử dụng thì ở mỗi kênh trên ta đều gặp phải bài toán là viết một đoạn chương trình thực hiện ghi có tài khoản đích và ghi nợ tài khoản nguồn. Hơn nữa với tưng kênh giao dịch lại sử dụng môt ngôn ngữ lập trình khác nhau dẫn tới tốn rất nhiều thời gian và công sức thể thực hiện bài toán cho các kênh đó. ATM Internet Quầy GD «uses» «uses» «uses» Chuyển khoản Chuyển khoản Chuyển khoản z 6 Hình 11- Các kênh giao dịch của ngân hàng khi cùng thực hiện thao tác chuyển khoản Cứ khi triển khai thêm một kênh mới như SMS, Mobile… thì công việc chuyển khoản lại phải xây dựng gây sự nhàm chán, tốn chi phí thời gian và tiền bạc với người lập trinh viên. Như Hình 1 thì lập trình viên phải viết lại đoạn chương trình thực hiện chuyển khoản trên các ngôn ngữ khác nhau.
Về mô hình kiến trúc phần mềm truyền thống, đã có rất nhiều cách tiếp cận khác nhau đối với việc xây dựng, phát triển các ứng dụng phân tán chẳng hạn: EJB (Enterprise Java Beans) Hình 2 2- Kiến trúc EJB Common Object Request Broker Architecture (CORBA ) : z 7 Hình 3 3- Mô hình CORBA DCOM – Distributed Component Object Model: Hình 44 - Mô hình DCOM Các kiến trúc trên đều yêu cầu kiến trúc triển khai cài đặt bên phía nhà cung cấp dịch vụ và phía sử dụng dịch vụ phải giống nhau. Mỗi khi có một sự thay đổi thì thì yêu cầu đều phải thay đổi cả bên cung cấp dịch vụ và bên triệu gọi sử dụng dịch vụ. Các kiến trúc trên đa phần là chuẩn đóng rất khó để giao tiếp với các chuẩn khác… Chính vì những nhược điểm của các mô hình đã có yêu cầu tìm ra một kiến trúc mới có thể tương thích được các chuẩn, các môi trường và sử dụng lại được các hệ thống cũ. Kiến trúc hướng dịch vụ (Service-Oriented Architecture - SOA) ra đời giúp giải quyết các nhược điểm của các mô hình phân tán đã có.2 Kiến trúc hƣớng dịch vụ 1.1 Khái niệm về SOA Trước khi ta hiểu khái niệm kiến trúc hướng dịch ta ta tìm hiểu khái niệm về dịch vụ là gì? Dịch vụ là là các thành phần logic dùng để thực hiện một thao tác nghiệp vụ được truy nhập qua internet sử dụng các chuẩn mở.
Kiến trúc hướng dịch vụ là một tập hợp các dịch vụ được chuẩn hoá trên mạng trao đổi với nhau trong ngữ cảnh một tiến trình nghiệp vụ. Dịch vụ là yếu tố then chốt trong SOA. SOA là tập hợp các dịch vụ kết nối „mềm dẻo‟ với nhau (nghĩa là một ứng dụng có thể „nói chuyện‟ với một ứng dụng khác mà không cần biết các chi tiết kỹ thuật bên trong), có giao tiếp (dùng để gọi hàm dịch vụ) được định nghĩa rõ ràng và độc lập với nền tảng hệ thống, và có thể tái sử dụng. SOA là cấp độ cao hơn của phát triển ứng dụng, chú trọng đến qui trình nghiệp vụ và dùng giao tiếp chuẩn để giúp che đi sự phức tạp kỹ thuật bên dưới.
Thiết kế SOA tách riêng phần thực hiện dịch vụ (phần mềm) với giao tiếp gọi dịch vụ. Điều này tạo nên một giao tiếp nhất quán cho ứng dụng khách (client) sử z 8 dụng dịch vụ bất chấp công nghệ thực hiện dịch vụ. Thay vì xây dựng các ứng dụng đơn lẻ và đồ sộ, nhà phát triển sẽ xây dựng các dịch vụ tinh gọn có thể triển khai và tái sử dụng trong toàn bộ quy trình nghiệp vụ. Điều này cho phép tái sử dụng phần mềm tốt hơn, cũng như tăng sự linh hoạt vì nhà phát triển có thể cải tiến dịch vụ mà không làm ảnh hưởng đến ứng dụng client sử dụng dịch vụ.
SOA Trong SOA[5]-[8]-[11] có ba đối tượng chính là nhà cung cấp dịch vụ (service provider), người sử dụng dịch vụ (service consumer) và nơi lưa trữ dịch vụ (service registry) như minh họa trong Hình 5 Nơi đăng ký dịch vụ (Service Registry) Tìm dịch vụ() Xuất bản dịch vụ () Người sử dụng Nhà cung cấp dịch Gọi dịch vụ() dịch vụ (Service vụ (Service Consumer) Provider) Hình 55 - Các đối tƣợng trong SOA Nhà cung cấp dịch vụ (service provider) : Cung cấp thông tin về dịch vụ cho một nơi lưu trữ thông tin dịch vụ (service registry). Người sử dụng dịch vụ (service consumer) : Thông qua service registry để tìm kiếm thông tin mô tả về dịch vụ cần tìm và sau đó là xây dựng kênh giao tiếp với phía nhà cung cấp. Nơi lưu trữ thông tin dịch vụ (service registry) : Là nơi lưu trữ các dịch vụ khi một dịch vụ của nhà cung cấp dịch vụ được đưa ra. Đây chính là nơi người sử dụng dịch vụ có thể tìm và triệu gọi các dịch vụ được cung cấp.
SOA cung cấp giải pháp để giải quyết các vấn đề tồn tại của các hệ thống hiện nay như: phức tạp, không linh hoạt và không ổn định. Một hệ thống triển khai theo mô hình SOA có khả năng dễ mở rộng, liên kết tốt. Đây chính là cơ sở và nền tảng cho việc tích hợp, tái sử dụng lại những tài nguyên hiện có. Tư tưởng của SOA không hoàn toàn mới, DCOM và CORBA cũng có kiến trúc tương tự.
Tuy nhiên, các kiến trúc cũ ràng buộc các thành phần với nhau quá chặt, ví dụ như các ứng dụng phân tán muốn làm việc với nhau phải đạt được thỏa thuận về chi tiết tập hàm API, một thay đổi mã lệnh trong thành phần COM sẽ yêu cầu những thay đổi tương ứng đối với mã lệnh truy cập thành phần COM này. z 9 Ưu điểm quan trọng nhất của SOA là khả năng kết nối mềm và tái sử dụng. Các dịch vụ có thể được sử dụng với trình client chạy trên nền tảng bất kỳ và được viết với ngôn ngữ bất kỳ. Ví dụ như ứng dụng Java có thể liên kết với dịch vụ web .NET và ngược lại.
SOA dựa trên 2 nguyên tắc thiết kế quan trọng: Mô-đun hoá: Tách vấn đề lớn thành nhiều vấn đề nhỏ. Đóng gói: Che đi dữ liệu và lô-gic trong từng mô-dun đối với truy cập từ ngoài. Sau đây sẽ trình bày về kiến trúc phân tầng của SOA.2 Kiến trúc SOA Sau đây là kiến trúc phân tầng của SOA[7] -[8] gồm 7 tầng chính là : Tầng Operational Systems (tầng tích hợp các hệ thống cũ đang hoạt động), tầng Enterprise components ( tầng thành phần tác nghiệp), tầng dịch vụ, tầng xử lý nghiệp vụ, tầng biểu diễn, tầng tích hợp và tầng theo dõi, quản lý chất lượng dịchvụ. Hình 6 - Kiến trúc phân tầng của hệ thống SOA 1.1 Tầng tầng thao tác hệ thống Mục đích tầng này là gọi đến các ứng dụng cũ đã xây dựng trước đó như các ứng dụng xây dựng bằng các ngôn ngữ lập trình hướng đối tượng cũ, các ứng dụng thực hiện các thao tác nghiệp vụ thông minh, các gói ứng dụng CRM, ERP.
Để tích hợp các hệ thống đã tồn tại này thì dùng kỹ thuật tích hợp hướng dịch vụ.2 Tầng thành phần tác nghiệp Tầng này có nhiệm vụ thực hiện các chức năng và vận hành các dịch vụ đưa ra. Tầng này quản lý các tài nguyên mức đơn vị nghiệp vụ.3 Tầng dịch vụ Tầng dịch vụ đưa ra các đặc tả dịch vụ, đặc tả các đơn vị thành phần nghiệp vụ.4 Tầng xử lý nghiệp vụ Các dịch vụ được đưa vào thành 1 luồng để xử lý như một ứng dụng đơn lẻ. Tầng này hỗ trợ đặc tả các use case và thực hiện các quy trình nghiệp vụ.5 Tầng biểu diễn Hình 7 - Một khung nhìn chi tiết về một dịch vụ z 11 Hình 8 - Các dịch vụ khác nhau đƣợc cung cấp trên một website Tầng biểu diễn cung cấp các ứng dụng cho người dùng cuối dưới dạng các dịch vụ được xây dựng từ các tầng trên. Người dùng cuối sẽ không quan tâm đến xử lý trong bản thân các dịch vụ mà chỉ quan tâm đến đầu vào và đầu ra của dịch vụ.6 Tầng tích hợp Tầng này cho phép tích hợp các dịch vụ trước đó như đưa ra tập các khả năng tin cậy như định tuyến thông minh, các giao thức điều chỉnh hoặc các cơ chế chuyển đổi khác thường được miêu tả là ESB.7 Tầng QoS(Tầng chất lƣợng dịch vụ) Tầng này cung cấp các khả năng để quản lý, theo dõi,vận hành chất lượng các dịch vụ như an ninh, hiệu năng xử dụng của hệ thống và độ sẵn sàng của hệ thống.
Đây là bước xử lý phía sau và cần cài đặt các công cụ để theo dõi vận hành ứng dụng SOA.3 Các tính chất của một hệ thống SOA SOA gồm các tính chất cơ bản sau [8]-[9] Sử dụng lại dịch vụ Trong SOA tính chất sử dụng lại dịch vụ cho phép các một dịch vụ mới có thể tái sử dụng các dịch vụ đã. Tái sử dụng lại các dịch vụ còn giúp loại bỏ những thành phần dư thừa giúp giảm thời gian và chi phí cho việc phát triển và quản trị phần mềm. Tính đóng gói dịch vụ z 12 Tính đóng gói dịch vụ trong SOA nghĩa là các thành phần sử dụng thuộc phạm vi bên ngoài của mỗi dịch vụ sẽ không được biết đến cài đặt của dịch vụ đó. Các đối tượng sử dụng dịch vụ sẽ chỉ cần quan tâm đến đặc tả của dịch vụ.