TỔNG QUAN VỀ KIẾN TRÚC HƯỚNG DỊCH VỤ (SERVICE –
Kiến trúc hướng dịch vụ - SOA
Kiến trúc định hướng dịch vụ (SOA) là phương pháp thiết kế và tích hợp các thành phần phần mềm và chức năng riêng lẻ thành một hệ thống hoàn chỉnh, cung cấp các chức năng nghiệp vụ dưới dạng dịch vụ trên môi trường mạng SOA tương tự như cấu trúc phần mềm hướng đối tượng với nhiều module, nhưng mỗi module trong SOA không chỉ là một gói phần mềm hay thư viện, mà là dịch vụ có thể truy cập từ nhiều vị trí khác nhau qua mạng Tóm lại, hệ thống SOA là tập hợp các dịch vụ mạng được tích hợp để thực hiện các tác vụ theo yêu cầu của khách hàng.
Kiến trúc hướng dịch vụ (SOA) là một mô hình trừu tượng nhằm xây dựng hệ thống phần mềm thông qua việc kết hợp linh hoạt các dịch vụ cục bộ và từ xa Khác với các mô hình kiến trúc trước đó, SOA tập trung vào việc xác định các yêu cầu kiến trúc cụ thể và đảm bảo rằng các công nghệ hỗ trợ thực hiện các trách nhiệm công nghệ chính Điều này cho phép SOA tạo ra một kiến trúc trừu tượng, tập trung vào việc lắp ráp các hoạt động nghiệp vụ theo nhu cầu thực tế Công nghệ dịch vụ mạng hiện nay nổi bật như một giải pháp hỗ trợ cho SOA, cung cấp các kỹ thuật để hiện thực hóa các thành phần của hệ thống phần mềm Để đạt hiệu quả tối ưu, SOA yêu cầu phát triển phần mềm phải tương tác chặt chẽ với môi trường nghiệp vụ, và sự tham gia tích cực của các nhà quản lý và phân tích nghiệp vụ có thể cải thiện đáng kể kết quả thiết kế hệ thống.
Dịch vụ là yếu tố then chốt trong kiến trúc SOA, đóng vai trò như một module thực hiện quy trình nghiệp vụ Mục tiêu của SOA là tạo điều kiện cho các ứng dụng giao tiếp mà không cần biết chi tiết kỹ thuật bên trong Để đạt được điều này, SOA thiết lập một chuẩn giao tiếp rõ ràng, độc lập với nền tảng hệ thống và có thể tái sử dụng Như vậy, SOA nâng cao khả năng phát triển ứng dụng, tập trung vào quy trình nghiệp vụ và sử dụng giao tiếp chuẩn để che giấu sự phức tạp kỹ thuật Sự trừu tượng là cốt lõi của khái niệm dịch vụ, giúp doanh nghiệp tích hợp các thành phần hiện có vào ứng dụng mới mà không cần chỉnh sửa mã nguồn hay tái cấu trúc hệ thống.
Tóm lại, một dịch vụ có các đặc điểm sau:
Mỗi dịch vụ được thiết kế với ranh giới rõ ràng, dựa trên các giao thức chuẩn hóa phổ biến Chi tiết nội bộ của từng dịch vụ không được công khai, chỉ có một số giao diện nhất định được cung cấp cho người dùng để gửi yêu cầu và nhận kết quả.
Dịch vụ có tính tự trị cao, cho phép mỗi dịch vụ được xây dựng và triển khai độc lập mà không cần phụ thuộc vào các dịch vụ khác.
Tính chia sẻ (Share the Schema and Contract, Not the Class):
Các dịch vụ không truyền các lớp và kiểu trong quá trình trao đổi dữ liệu Thay vào đó, lớp và kiểu được xác định thông qua hình thức, với dữ liệu được mô tả trong schema và hành vi được quy định trong các hợp đồng.
Khả năng tương thích dịch vụ dựa trên chính sách (Service Compatibility
Is Based on Policy): Sự tương thích giữa các dịch vụ được căn cứ vào các chính sách
Tương thích cấu trúc dựa trên các đặc tả hình thức, bao gồm hợp đồng dựa trên ngôn ngữ mô tả dịch vụ web (WSDL) Sự tương thích này dựa trên chính sách, cung cấp khả năng phân tích và đảm bảo sự tương thích giữa các dịch vụ.
Có nhiều phương pháp để kết nối các dịch vụ, bao gồm việc sử dụng các giao thức mạng hiện có hoặc phát triển giao thức riêng Kể từ năm 2001, dịch vụ web (Web service) đã trở thành một giải pháp phổ biến cho việc kết nối các thành phần trong hệ thống kiến trúc hướng dịch vụ (SOA), nhờ vào nền tảng web toàn cầu Bài viết sẽ đi sâu vào các khía cạnh của Web Service trong các phần tiếp theo.
Hình 1.1: Mô hình cơ bản của SOA
1.1.2 Về mối liên hệ với kiến trúc tổng thể EA
Kiến trúc tổng thể (Enterprise Architecture - EA) là phương pháp luận giúp xác định và điều chỉnh quy trình nghiệp vụ theo tầm nhìn và mục tiêu của tổ chức Trong khi đó, mô hình SOA chủ yếu được áp dụng trong thiết kế và phát triển hệ thống thông tin phục vụ cho các quy trình nghiệp vụ đã được xác định trong kiến trúc tổng thể.
Có thể liệt kê một số lợi ích cơ bản của việc sử dụng mô hình SOA như sau:
Cho phép hướng sự tập trung vào xây dựng các tính năng nghiệp vụ trong quá trình phát triển phần mềm
Giảm thiểu chi phí trong quá trình phát triển
Giảm thiểu yêu cầu về đào tạo và kỹ năng
Chi phí bảo trì thấp
Chu trình phát triển phần mềm nhanh chóng hơn
Trong quá trình kết hợp chắc chắn sẽ gặp những khó khăn:
Không đủ khả năng quản lý quy trình nghiệp vụ
Quá nhiều định dạng dữ liệu
Nhu cầu và yêu cầu của khách hàng thường xuyên thay đổi nhanh chóng nhằm tạo ra tính cạnh tranh liên tục
Vấn đề an ninh bảo mật
Mô hình SOA vượt trội hơn các mô hình truyền thống như mô hình hướng ứng dụng và mô hình hướng lập trình nhờ vào việc tập trung nguồn lực phát triển vào các chức năng và tính năng phục vụ quy trình nghiệp vụ Điều này cho phép nhà quản lý dễ dàng rà soát và xác định các chi tiết cần thêm, sửa đổi hoặc loại bỏ dựa trên đặc điểm nghiệp vụ Nhờ vậy, các hệ thống phần mềm có thể được thiết kế để đáp ứng trực tiếp các quy trình nghiệp vụ, thay vì phải thay đổi quy trình nghiệp vụ để phù hợp với các tính năng phần mềm, điều thường thấy ở nhiều tổ chức với hạ tầng công nghệ thông tin đã được phát triển từ trước.
Bằng cách phát triển danh mục dịch vụ, nhà phát triển có thể tận dụng các mô-đun phần mềm có sẵn để tạo ra hệ thống mới một cách nhanh chóng và hiệu quả Sự gia tăng quy mô và số lượng của danh mục này giúp việc phát triển hệ thống trở nên thuận tiện hơn Khả năng sử dụng lại các mô-đun cũng góp phần giảm chi phí khi thêm tính năng mới Tuy nhiên, vẫn tồn tại một số khó khăn do những nguyên nhân nhất định.
Ngày nay, các doanh nghiệp công nghệ thông tin phải đối mặt với sự phức tạp do sự đa dạng của hệ thống trên nhiều nền tảng và các hoạt động nghiệp vụ khác nhau Để phát triển, triển khai và quản lý các ứng dụng và hệ thống không đồng nhất, các công ty phát triển phần mềm cần tuyển dụng đội ngũ nhân viên giàu kinh nghiệm và có chuyên môn đa dạng Hơn nữa, việc nâng cấp hệ thống, tích hợp các thành phần khác nhau, cùng với yêu cầu bảo mật ngày càng cao, đã làm gia tăng tính phức tạp trong quản lý hệ thống.
Sự không linh hoạt trong các ứng dụng công ty gây khó khăn cho việc nâng cấp và tích hợp hoạt động Với sự phức tạp trong chiến lược phát triển và cơ sở hạ tầng, nhiều công ty gặp phải tình trạng khó thay thế các ứng dụng hiện có, dẫn đến chi phí cao và thách thức trong việc tích hợp.
Hệ thống phần mềm thường không bền vững do các phương pháp truyền thống dẫn đến nhiều giải pháp khác nhau bị lắp ghép và tích hợp Khi có sự thay đổi về quy trình nghiệp vụ hoặc yêu cầu, các công ty thường phải đối mặt với việc phát triển các dự án tốn kém hoặc thay thế công nghệ không còn phù hợp.
Các doanh nghiệp cần một hướng tiếp cận mới để đối phó với môi trường không đồng nhất và sự thay đổi công nghệ nhanh chóng, đặc biệt khi ngân sách hạn chế Một giải pháp khả thi là "Kiến trúc hướng dịch vụ" (Service Oriented Architecture - SOA), cho phép doanh nghiệp tận dụng tài nguyên hiện có và linh hoạt thay đổi theo yêu cầu, từ đó hỗ trợ hiệu quả cho hoạt động kinh doanh.
SOA được xem như là bước phát triển tiếp theo của ngành công nghệ phần mềm
Tính chất của SOA
Kết nối giữa các module trong kiến trúc phần mềm có thể được phân loại thành kết nối lỏng lẻo và chặt chẽ Các module với kết nối lỏng lẻo có ràng buộc rõ ràng, trong khi các module kết nối chặt chẽ thường có nhiều ràng buộc không thể dự đoán Hầu hết các kiến trúc phần mềm ưu tiên kết nối lỏng lẻo để tăng khả năng chỉnh sửa hệ thống Mức độ kết nối ảnh hưởng đến khả năng thay đổi; kết nối chặt chẽ dẫn đến nhiều thay đổi khi có sự thay đổi xảy ra Nếu bên sử dụng dịch vụ cần biết thông tin chi tiết về bên cung cấp dịch vụ, mối quan hệ sẽ trở nên chặt chẽ hơn Ngược lại, nếu bên sử dụng không cần thông tin chi tiết trước khi sử dụng dịch vụ, mối quan hệ sẽ mang tính lỏng lẻo hơn.
Kết nối lỏng lẻo giúp giảm thiểu sự phụ thuộc trong hệ thống, cho phép hoạt động ổn định ngay cả khi một số thành phần gặp sự cố Sự tối thiểu hóa này không chỉ mang lại tính linh hoạt cho hệ thống mà còn làm giảm nguy cơ xảy ra sự cố.
Tính kết nối lỏng lẻo cho phép các hệ thống đầu cuối hoạt động độc lập, nâng cao năng suất, khả năng mở rộng và khả năng đáp ứng Những thay đổi cài đặt được ẩn đi, tạo ra sự độc lập giữa bên cung cấp và bên sử dụng Tuy nhiên, để duy trì tính kết nối này, các giao diện cần tuân thủ chuẩn và yêu cầu một thành phần trung gian quản lý, giúp trung chuyển yêu cầu giữa các hệ thống.
1.2.2 Tái sử dụng dịch vụ
Các dịch vụ trực tuyến dễ dàng được tìm thấy và tái sử dụng nhờ vào việc đăng ký tại một địa điểm cụ thể Nếu một dịch vụ không thể tái sử dụng, nó sẽ không cần giao diện mô tả Tái sử dụng dịch vụ cho phép kết hợp chúng với nhau cho nhiều mục đích khác nhau, giúp loại bỏ thành phần trùng lặp, tăng tốc độ cài đặt và đơn giản hóa quản trị Thực tế, việc tái sử dụng dịch vụ dễ dàng hơn so với tái sử dụng các thành tố hay lớp Những dịch vụ được chia sẻ giữa tất cả ứng dụng trong hệ thống SOA được gọi là dịch vụ chia sẻ cơ sở hạ tầng.
Các chính sách là tập hợp các quy tắc chung mà mọi thành phần trong hệ thống phải tuân thủ Mỗi ứng dụng dịch vụ chia sẻ trên mạng đều có những chính sách riêng, gọi là luật kết hợp Việc quản lý và áp dụng các chính sách này là cần thiết trong cả quá trình thiết kế và triển khai dịch vụ.
Việc áp dụng các chính sách tách biệt giúp tăng cường khả năng tạo ra dịch vụ tái sử dụng, đồng thời giảm thiểu sự thay đổi phần mềm cho từng ứng dụng Nếu không có chính sách, các nhân viên phát triển, nhóm điều hành và nhóm hỗ trợ phải phối hợp chặt chẽ trong suốt quá trình phát triển để cài đặt và kiểm tra Ngược lại, khi sử dụng chính sách, nhân viên phát triển có thể tập trung vào quy trình nghiệp vụ, trong khi nhóm điều hành và hỗ trợ chú trọng vào các quy định kết hợp.
Kiến trúc ứng dụng Công nghệ thông tin theo mô hình SOA chỉ khả thi khi có sự liên kết chặt chẽ giữa các đối tượng sử dụng, bao gồm người sử dụng nghiệp vụ, nhà phát triển, kiến trúc sư phần mềm, giám đốc phụ trách nghiệp vụ, giám đốc Công nghệ thông tin và nhà phân tích nghiệp vụ Đồng thời, các đối tác của cơ quan, tổ chức cần được thông tin đầy đủ về khả năng và lợi ích của mô hình SOA Cơ chế quản trị trong mô hình này xác định rõ quy trình, vai trò và trách nhiệm tổ chức, cũng như các chuẩn và chính sách cần thiết để đảm bảo hiệu quả và tính khả thi của kiến trúc ứng dụng Công nghệ thông tin.
1.2.4 Tự động dò tìm và ràng buộc động
SOA hỗ trợ khai thác dịch vụ (service discovery), cho phép người dùng tìm kiếm dịch vụ theo tiêu chuẩn nhất định Khi cần, người dùng chỉ cần hỏi một registry để tìm các dịch vụ đáp ứng yêu cầu Ví dụ, trong hệ thống chuyển khoản, khách hàng có thể yêu cầu registry tìm các dịch vụ kiểm tra thẻ tín dụng Registry sẽ trả về danh sách các dịch vụ cùng thông tin chi phí giao dịch, giúp người dùng chọn dịch vụ có phí thấp nhất Sau khi kết nối với nhà cung cấp dịch vụ, người dùng chỉ cần định dạng dữ liệu yêu cầu theo mô tả và gửi đi Nhà cung cấp sẽ thực hiện kiểm tra thẻ tín dụng và trả về thông điệp đúng định dạng Mối ràng buộc giữa bên cung cấp và bên sử dụng chỉ là hợp đồng từ registry trung gian, và mọi thông tin cần thiết được lấy và sử dụng trong thời gian chạy Với SOA, người dùng không cần biết định dạng của thông điệp yêu cầu và phản hồi, cũng như địa chỉ dịch vụ cho đến khi cần thiết.
1.2.5 Khả năng tự hồi phục
Với sự phức tạp của các hệ thống phân tán hiện nay, khả năng phục hồi sau sự cố trở thành yếu tố quan trọng Hệ thống tự phục hồi có khả năng khôi phục mà không cần can thiệp của con người Độ tin cậy đo lường khả năng xử lý của hệ thống trong mọi tình huống, đặc biệt khi tích hợp nhiều dịch vụ từ các tổ chức khác nhau Độ tin cậy phụ thuộc vào khả năng phục hồi của phần cứng sau lỗi và hạ tầng mạng phải hỗ trợ kết nối động từ nhiều hệ thống Kiến trúc ứng dụng cũng ảnh hưởng đến độ tin cậy; kiến trúc hỗ trợ kết nối và thực thi động sẽ có khả năng tự phục hồi tốt hơn.
Hệ thống dựa trên dịch vụ yêu cầu tách biệt giữa giao diện và cài đặt, cho phép có nhiều cài đặt khác nhau cho cùng một giao diện Nếu một thể hiện dịch vụ không hoạt động, một thể hiện khác vẫn có thể hoàn tất giao dịch cho khách hàng mà không bị ảnh hưởng Khả năng này chỉ có được khi máy trạm tương tác với giao diện của dịch vụ, không phải với cài đặt trực tiếp Đây là một trong những tính chất cơ bản của hệ thống hướng dịch vụ (SOA).
Lợi ích của SOA
Sử dụng mô hình SOA trong việc thiết kế hệ thống mang lại rất nhiều lợi ích về cả mặt kinh tế và kỹ thuật
- Doanh nghiệp có điều kiện tập trung thời gian để tìm kiếm các giải pháp cho các bài toán liên quan đến kinh tế
- Thúc đẩy khả năng phát triển của hệ thống hiện có cũng như khả năng mở rộng của hệ thống trong tương lai
Lợi ích về mặt kỹ thuật:
- Độc lập hệ thống: những dịch vụ không phụ thuộc vào hệ thống và mạng cụ thể
- Có khả năng tái sử dụng
- Khả năng hồi đáp thích nghi tốt và nhanh hơn để đáp ứng với sự thay đổi về yêu cầu giao dịch
- Cho phép dễ dàng triển khai chương trình, môi trường chạy và quản lý service dễ dàng hơn
- Những sự xác nhận và chứng minh của Service consumer về những tính năng security dựa trên giao tiếp Service tốt hơn cơ chế kết nối chặt chẽ.
Ưu nhược điểm của SOA
SOA có thể được coi là một kiến trúc ưu việt trong thiết kế và xây dựng hệ thống phần mềm cho doanh nghiệp bởi:
- Hệ thống uyển chuyển và lâu dài thuận tiện cho việc chỉnh sửa, nâng cấp hoặc mở rộng hệ thống
- Dễ dàng và nhanh chóng tạo ra các tiến trình nghiệp vụ từ các dịch vụ đã có
- Khả năng tương tác của các dịch vụ rất tốt
Tuy nhiên, bên cạnh những ưu điểm SOA vẫn tồn tại một số yếu điểm như sau:
- Khó miêu tả dữ liệu không cấu trúc trong header của message
Khi phát triển ứng dụng tổng hợp từ nhiều dịch vụ với tính tái sử dụng cao, vấn đề bảo mật như xác thực, phân quyền, bảo mật dữ liệu và quyền riêng tư trở nên phức tạp Điều này đòi hỏi phải áp dụng những phương pháp bảo mật mới, khác biệt so với các phương pháp truyền thống.
SOA, hay Kiến trúc Hướng Dịch vụ, mang lại nhiều ứng dụng quan trọng trong việc tích hợp hệ thống Bài viết này sẽ đi sâu vào cách thức hoạt động của SOA và giải quyết các vấn đề liên quan đến tích hợp, nhằm cung cấp cái nhìn rõ ràng hơn về đặc trưng và lợi ích của nó.
Ứng dụng mô hình SOA để giải quyết bài toán tích hợp
Mô hình SOA được thúc đẩy chủ yếu để giải quyết vấn đề tích hợp, giúp loại bỏ các mô hình tích hợp truyền thống thông qua tiêu chuẩn công nghiệp và ứng dụng hiện đại Khoảng 30% chi phí Công nghệ thông tin thường được dành cho các hoạt động tích hợp, cho thấy tầm quan trọng của việc cải thiện hiệu quả nghiệp vụ Tính tích hợp, từ quy trình đến các thành phần của tổ chức, đóng vai trò then chốt trong việc nâng cao giá trị cạnh tranh, tạo ra nhu cầu tích hợp ngày càng cao trong các cơ quan và tổ chức.
1.5.1 Nhu cầu giải quyết bài toán tích hợp
Các nghiên cứu gần đây cho thấy rằng chi phí hỗ trợ tính tương thích ngược và bảo trì hệ thống chiếm từ 80% đến 90% tổng chi phí đầu tư công nghệ thông tin, thay vì đầu tư vào các hệ thống mới Điều này gây khó khăn cho các giám đốc công nghệ thông tin trong việc phân bổ ngân sách và là một trong những nguyên nhân dẫn đến sự thiếu hụt các chiến lược đầu tư công nghệ thông tin sâu sắc hiện nay Nhu cầu tích hợp công nghệ thông tin ngày càng tăng cao.
− Nâng cao hoạt động tách nhập (M&A actitivity);
− Phối hợp tổ chức và cấu trúc lại mô hình tổ chức;
− Củng cố ứng dụng và/hoặc hệ thống;
− Sáng kiến về tích hợp dữ liệu và kho dữ liệu (data warehousing);
− Xây dựng chiến lược nghiệp vụ nhằm tận dụng các hệ thống hiện tại đáp ứng quy trình mới;
− Đạt được sự tuân thủ về quy định;
− Gắn kết các quy trình nghiệp vụ để nâng cao hiệu năng;
− Chuyển đổi sang ứng dụng dịch vụ
Phương án tích hợp hiện tại chủ yếu dựa vào việc kết hợp các giải pháp middleware, kỹ thuật tích hợp điểm - điểm và các giải pháp hướng tích hợp chiến lược, nhưng những giải pháp này thường không bền vững và có chi phí bảo trì ngày càng cao.
Giải pháp tích hợp mới cần loại trừ các kết nối điểm-điểm và tái cấu trúc tích hợp giữa các hệ thống dựa trên mô hình SOA Chi phí Công nghệ thông tin sẽ được tính toán để đảm bảo kinh phí cho các dự án, bao gồm chi phí cho nhân sự chuyên trách, bảo trì và duy trì hạ tầng Việc giảm bớt khối lượng công việc tích hợp sẽ được ước lượng thông qua các dịch vụ tái sử dụng trong mô hình SOA và phản ứng của người dùng Mặc dù tích hợp theo hướng dịch vụ đòi hỏi nhiều quy định và kế hoạch hơn, nhưng kết quả đạt được sẽ tương xứng với quyết định đầu tư.
PHÁT TRIỂN PHẦN MỀM DỰA VÀO SOA
Mô hình hoạt động và kiến trúc chi tiết của hệ thống
2.1.1 Mô hình tổng thể của SOA
Hình 2.1: Mô hình tổng quan của SOA
Nhà cung cấp dịch vụ là đơn vị cung cấp các dịch vụ nhằm đáp ứng nhu cầu của người dùng Người tiêu dùng dịch vụ không cần phải biết vị trí cụ thể của dịch vụ mà họ đang sử dụng; điều quan trọng là họ chỉ cần quan tâm đến loại dịch vụ mà mình cần.
- Serive Consumer: khách hàng dịch vụ hay những user sử dụng service được cung cấp bởi Service Provider
Service Registry là một kho lưu trữ thông tin về các dịch vụ của các nhà cung cấp khác nhau Các nhà tiêu thụ dịch vụ sử dụng thông tin này để tìm kiếm và lựa chọn nhà cung cấp dịch vụ phù hợp với nhu cầu của họ.
Service Provider sẽ đăng ký thông tin về dịch vụ mà họ cung cấp, bao gồm chức năng, khả năng hệ thống, và giá cả vào Service Registry Khi có nhu cầu, Service Consumer sẽ tìm kiếm thông tin trên Service Registry Ngoài việc hỗ trợ tìm kiếm, Service Registry còn xếp hạng các Service Provider dựa trên chất lượng dịch vụ và đánh giá từ khách hàng, giúp Service Consumer dễ dàng hơn trong việc lựa chọn Sau khi xác định được Service Provider mong muốn, Service Consumer sẽ thiết lập kênh giao tiếp trực tiếp để sử dụng dịch vụ hoặc thương lượng thêm về giá cả và tài nguyên.
Các thực thể trong kiến trúc hướng dịch vụ bao gồm:
2 Thành phần sử dụng dịch vụ (Services consumer/ Client / Request)
3 Thành phần cung cấp dịch vụ (Services Provider)
4 Thành phần đăng ký dịch vụ (Services Registry)
5 Giao ước dịch vụ (Contract)
7 Ràng buộc sử dụng dụng dịch vụ (Services lease) Dịch vụ:
Dịch vụ có chức năng độc lập, không phụ thuộc vào ngữ cảnh hay trạng thái của các dịch vụ khác Các thành phần sử dụng dịch vụ có thể truy cập thông qua giao diện dịch vụ đã được xuất bản Dịch vụ sở hữu những tính chất đặc trưng riêng.
1 Dịch vụ có tính chất rõ ràng, là một đơn vị chức năng nghiệp vụ có thể được triệu gọi
2 Có khả năng triệu gọi thông qua các giao thức truyền thông chung
3 Có tính liên thông và vị trí trong suốt
4 Dịch vụ được định nghĩa bằng các giao diện tường minh
5 Các giao diện độc lập với cài đặt
6 Cung cấp giao ước giữa các thành phần cung cấp và sử dụng dịch vụ
7 Dịch vụ là các modul phức tạp, bao gồm nhiều thành phần Mức độ đóng gói của dịch vụ càng cao thì dịch vụu càng có khả năng tái sử dụng và linh hoạt
Thành phần sử dụng dịch vụ(Web Services Customer):
Thành phần sử dụng dịch vụ có thể là một ứng dụng, dịch vụ hoặc mô-đun phần mềm khác, yêu cầu kết nối với dịch vụ thông qua một kho đăng ký Nó thực hiện việc định vị dịch vụ và thực thi các chức năng của dịch vụ bằng cách gửi yêu cầu được định dạng theo đúng giao ước tới dịch vụ.
Thành phần cung cấp dịch vụ(Web Services Implementation):
Thành phần cung cấp dịch vụ là một thực thể có thể được địa chỉ hoá qua mạng, có khả năng chấp nhận và thực thi các yêu cầu từ các thành phần sử dụng dịch vụ Nó có thể là một hệ thống máy tính lớn, một thành phần, hoặc một loại hệ thống phần mềm khác Thực thể này xuất bản giao ước dịch vụ trong kho đăng ký dịch vụ, giúp các thành phần sử dụng dịch vụ dễ dàng truy cập.
Thành phần đăng ký dịch vụ(UDDI):
Thành phần đăng ký dịch vụ là một thư mục trực tuyến lưu trữ các dịch vụ có sẵn Nó đóng vai trò là thực thể tiếp nhận và lưu trữ các giao ước từ các nhà cung cấp dịch vụ, đồng thời cung cấp những giao ước này cho các thành phần sử dụng dịch vụ.
Dịch vụ UDDI hoạt động như một hướng dẫn cho các thành phần sử dụng dịch vụ, giúp tạo ra sự minh bạch về vị trí của các thành phần cung cấp dịch vụ Nhờ đó, khi có sự thay đổi từ các thành phần này, người dùng dịch vụ không cần phải biên dịch hay cấu hình lại.
Trong quá trình trao đổi dữ liệu giữa ba thành phần: cung cấp dịch vụ, sử dụng dịch vụ và đăng ký dịch vụ, giao thức SOAP được sử dụng hoàn toàn, với nội dung được định dạng bằng XML.
Giao ước dịch vụ là bản đặc tả quy định cách thức tương tác giữa thành phần sử dụng dịch vụ và thành phần cung cấp dịch vụ Nó xác định cấu trúc của thông điệp yêu cầu và thông điệp phản hồi từ dịch vụ Bên cạnh đó, giao ước có thể yêu cầu một số điều kiện tiên quyết và điều kiện sau để đảm bảo trạng thái cần thiết cho việc thực thi chức năng cụ thể Ngoài ra, bản giao ước còn có thể bao gồm các mức độ chất lượng dịch vụ và các đặc tả cho các yếu tố phi chức năng của dịch vụ.
Thành phần cung cấp dịch vụ thực hiện việc uỷ nhiệm dịch vụ cho thành phần sử dụng dịch vụ, cho phép thực thi các yêu cầu thông qua việc gọi hàm API Uỷ nhiệm dịch vụ tìm giao ước và tham chiếu tới thành phần cung cấp dịch vụ trong nơi đăng ký, sau đó định dạng thông điệp yêu cầu và thực hiện yêu cầu thay mặt cho thành phần sử dụng dịch vụ Mặc dù uỷ nhiệm dịch vụ không phải là thực thể bắt buộc, nhưng nó giúp đơn giản hóa quy trình cho thành phần sử dụng dịch vụ, cho phép họ tự viết phần mềm để truy cập dịch vụ.
Một thành phần cung cấp dịch vụ có thể tạo ra nhiều uỷ nhiệm dịch vụ cho các môi trường khác nhau, với mỗi uỷ nhiệm được viết bằng ngôn ngữ của các thành phần sử dụng dịch vụ như Java, Visual Basic hoặc Delphi Mặc dù việc tạo uỷ nhiệm dịch vụ không bắt buộc, nhưng nó có thể cải thiện đáng kể hiệu suất và tính tiện dụng cho các thành phần sử dụng dịch vụ.
Hình 2.2 Uỷ nhiệm dich vụ
Ràng buộc sử dụng dịch vụ:
Ràng buộc sử dụng dịch vụ giữa các thành phần đăng ký và thành phần sử dụng là rất cần thiết để duy trì thông tin trạng thái liên kết Điều này tạo ra sự gắn kết linh hoạt giữa các thành phần, giới hạn thời gian liên kết của chúng Nếu không có ràng buộc, thành phần sử dụng dịch vụ có thể duy trì mối liên kết vĩnh viễn với dịch vụ mà không bao giờ quay lại với các giao ước ban đầu.
Các thao tác trong kiến trúc hướng dịch vụ bao gồm:
Để người dùng dịch vụ có thể truy cập, mô tả dịch vụ cần được xuất bản, giúp cho việc tìm kiếm và triệu gọi dịch vụ trở nên dễ dàng.
SOA và ứng dụng Web Service
2.2.1 Giới thiệu về Web service Đặc điểm chính của SOA là tách rời phần giao tiếp với phần thực hiện dịch vụ Điều này cho phép chúng ta liên tưởng đến một công nghệ được đề cập nhiều hiện nay: Web Service Web Service cho phép truy cập thông qua định nghĩa giao thức-và- giao tiếp
Kiến trúc dịch vụ hướng đối tượng (SOA) tập trung vào giao tiếp như là trung tâm của triết lý kiến trúc phần mềm Thực chất, thuật ngữ "kiến trúc định hướng giao tiếp" phản ánh chính xác hơn bản chất của SOA, nơi mà các dịch vụ và module phần mềm được truy cập thông qua các giao tiếp yêu cầu - đáp trả Dù là yêu cầu dịch vụ một chiều, nó vẫn thể hiện một tương tác có chủ đích giữa hai phần mềm Mỗi tương tác dịch vụ đều bao gồm hai đối tác: nguồn cung cấp dịch vụ và khách hàng sử dụng dịch vụ.
Web service là công nghệ kết nối từ xa với tính khả chuyển cao, cho phép các chương trình viết bằng ngôn ngữ khác nhau và chạy trên các nền tảng khác nhau tương tác thông qua các giao thức phổ biến như HTTP và SMTP Kiến trúc SOA (Service-Oriented Architecture) sử dụng Web service như một giải pháp chính để tích hợp nghiệp vụ giữa các hệ thống, nhờ vào khả năng phân tán rộng rãi của Internet Trong bối cảnh hiện nay, việc triển khai dịch vụ bằng Web service đã trở thành điều tất yếu trong quá trình internet hóa mọi dịch vụ.
2.2.2 SOA và Web service trong vấn đề tích hợp hệ thống
Web services là các thành phần ứng dụng giao tiếp qua giao thức mở, cho phép phát hiện thông qua UDDI và tương tác với nhiều ứng dụng khác nhau Chúng hoạt động dựa trên nền tảng XML và HTTP, trong đó XML cung cấp ngôn ngữ đa nền tảng, hỗ trợ truyền tải thông điệp và chức năng phức tạp, còn HTTP là giao thức Internet phổ biến nhất.
Web Service với mô hình hoạt động 3 bên tương ứng với mô hình hoạt động của SOA, sử dụng một bộ các chuẩn công nghệ Đó là:
- XML: Chuẩn định dạng dữ liệu và thông điệp
- SOAP: Giao thức dựa trên XML và HTTP cho phép giao tiếp trên môi trường mạng
- WSDL: Ngôn ngữ mô tả Web Service theo chuẩn
- UDDI: Một bộ khung chuẩn cho phép mô hình hóa và cụ thể hóa các Web Service đã được đăng ký
Hình 2.7: Mô hình hoạt động của web service Hoạt động của mô hình Web Service như sau:
Service providers utilize Web Services Description Language (WSDL) to describe the services they offer and publish them with a Service Broker, similar to how Service Registries function in Service-Oriented Architecture (SOA).
- Service Broker: Lưu trữ thông tin về các service được cung cấp bởi các
A Service Provider plays a crucial role in assisting Service Requesters (also known as Service Consumers in SOA) in identifying suitable Service Providers The primary component of a Service Broker consists of repositories described by Universal Discovery, Description, and Integration (UDDI).
Service Requester sử dụng WSDL để xác định nhu cầu sử dụng dịch vụ, bao gồm loại dịch vụ, thời gian sử dụng, tài nguyên cần thiết và mức giá, sau đó gửi thông tin này đến Service Broker Thông qua UDDI và chức năng tìm kiếm của Service Broker, Service Requester có thể tìm kiếm và lựa chọn Service Provider phù hợp Ngay sau đó, kênh giao tiếp được thiết lập giữa Service Requester và Service Provider bằng SOAP để thương lượng giá cả và các yếu tố khác liên quan đến việc sử dụng dịch vụ.
Như vậy, sử dụng Web Service cho việc tích hợp SOA giúp ứng dụng đạt được những mục tiêu theo nguyên lý SOA:
- Thông qua các chuẩn công nghiệp Các chuẩn này gồm Web Service với các định nghĩa thành phần chuẩn công nghiệp cho XML
- Sử dụng được những phần mềm thương mại đã xây dựng sẵn nhiều nhất có thể Phần mềm phải cung cấp các kênh giao tiếp (adapter) cho Web service
Đóng gói ứng dụng theo tiêu chuẩn công nghệ chung giúp kế thừa hiệu quả Tất cả các Web Service cần phải được truy cập thông qua giao diện này để đảm bảo tính nhất quán và tương thích.
Sử dụng dữ liệu và tầng dữ liệu độc lập giữa các ứng dụng giúp ẩn đi cấu trúc dữ liệu bên dưới, đảm bảo rằng mọi tương tác với dữ liệu đều được thực hiện thông qua Web Service.
Web Service có thể đạt được các mục tiêu thông qua việc áp dụng các công nghệ và kỹ thuật hiện đại Chúng ta sẽ phân tích chi tiết những công nghệ này để hiểu rõ hơn về cách thức hoạt động của Web Service.
2.2.3 Cấu trúc và chi tiết các thành phần của Web service
The foundation of web services consists of key components such as XML (eXtensible Markup Language), SOAP (Simple Object Access Protocol), UDDI (Universal Description, Discovery, and Integration), and WSDL (Web Services Description Language).
Hình 2.8: Các thành phần của Web service 2.2.3.1 XML - eXtensible Markup Language
XML là một chuẩn mở do W3C phát triển từ SGML, cho phép người dùng định nghĩa cấu trúc văn bản Ngôn ngữ này được sử dụng để mô tả các thành phần dữ liệu trên trang web và trong tài liệu B2B.
XML có cấu trúc thẻ tương tự như HTML nhưng không tuân theo một quy chuẩn cụ thể, cho phép người dùng và các chương trình tự định nghĩa các tag để giao tiếp Trong khi HTML xác định cách hiển thị các thành phần, XML lại tập trung vào nội dung bên trong các thành phần đó Với khả năng tạo thẻ tùy ý, XML trở thành định dạng thông điệp phổ biến và hiệu quả nhờ mã nguồn mở.
Web Service là sự kết hợp của nhiều thành phần khác nhau, sử dụng tính năng và đặc trưng của các thành phần đó để giao tiếp XML đóng vai trò là công cụ chính trong việc xây dựng Web Service, với tất cả dữ liệu được chuyển sang định dạng thẻ XML Điều này giúp thông tin mã hóa hoàn toàn tương thích với các chuẩn SOAP hoặc XML-RPC, cho phép các thành phần tương tác một cách thống nhất.
2.2.3.2 WSDL (Web Service Discription Language)
WSDL, viết tắt của Web Services Description Language, là một ngôn ngữ dựa trên XML dùng để mô tả giao diện của Web Service Nó cung cấp một phương pháp chuẩn để mô tả các kiểu dữ liệu được truyền trong các thông điệp, các hoạt động thực hiện trên các thông điệp và ánh xạ những hoạt động này đến giao thức vận chuyển.
• WSDL được dùng để xác định vị trí Web Service
• WSDL là một chuẩn của W3C
WSDL định nghĩa cách mô tả Web Service theo cú pháp tổng quát của XML, bao gồm các thông tin:
Giao thức và kiểu mã hóa sẽ được sử dụng khi gọi các hàm của Web Service
Loại thông tin: thao tác, tham số, những kiểu dữ liệu (có thể là giao diện của Web Service cộng với tên cho giao diện này)
Một WSDL hợp lệ gồm hai phần:
Phần giao diện: mô tả giao diện và giao thức kết nối
Phần thi hành: mô tả thông tin để truy xuất service
Cả hai phần này sẽ được lưu trong 2 tập tin XML:
Tập tin giao diện service (cho phần 1)
Tập tin thi hành service (cho phần 2)
Tập tin giao diện - Service Interface
Một tài liệu WSDL mô tả một Web Service gồm các thành phần chính:
Các kiểu dữ liệu được sử dụng bởi các Web Service
Các thông điệp được sử dụng bởi các Web Service
Các hoạt động được thực hiện bởi các Web Service
Các giao thức truyền thông được sử dụng bởi các Web Service Cấu trúc một tài liệu WSDL sẽ như sau:
definition of a message
Qui trình xây dựng hệ thống SOA
2.3.1 Thách thức khi xây dựng hệ thống
Để xây dựng một ứng dụng hướng dịch vụ (SOA), cần trải qua các giai đoạn phát triển phần mềm tương tự như các phương pháp khác Mặc dù hệ thống SOA mang lại nhiều lợi ích lớn, việc triển khai nó không hề đơn giản Quá trình chuyển đổi từ mô hình tính toán tập trung sang mô hình phân tán và sau đó là kiến trúc Web vẫn đang tiếp diễn Hiện nay, SOA đang được áp dụng và phát triển rộng rãi trong nhiều doanh nghiệp trên toàn cầu, tuy nhiên, việc xây dựng và triển khai hệ thống SOA vẫn gặp phải một số thách thức đáng kể.
• Dịch vụ là gì?chức năng nghiệp vụ nào cần được cung cấp bởi một dịch vụ? Độ mịn(granularity) của một dịch vụ thế nào là tốt?
Xác định dịch vụ và lựa chọn đối tượng cung cấp dịch vụ một cách hợp lý là bước đầu tiên và quan trọng trong giải pháp hướng dịch vụ Thực tế cho thấy, nhiều chức năng nghiệp vụ tương tự có thể được cung cấp bởi nhiều hệ thống khác nhau trong cùng một tổ chức.
• Ta nên đặt dịch vụ ở vị trí nào trong hệ thống?
Các dịch vụ thường hoạt động dựa trên các thực thể nghiệp vụ, được lưu trữ và quản lý trong hệ thống Vị trí của các thực thể này là nơi lý tưởng để triển khai dịch vụ Tuy nhiên, do đặc tính phân tán của hệ thống, các đối tượng này thường phân bố ở nhiều vị trí khác nhau và có thể được quản lý tại nhiều nơi Do đó, việc đồng bộ dữ liệu giữa các hệ thống trở thành một yêu cầu quan trọng Trong môi trường này, việc xác định vị trí đặt dịch vụ là rất cần thiết.
- Xác định miền dịch vụ:
• Làm sao gom nhóm các dịch vụ thành các miền luận lý(logic domain)
Phân loại và gom nhóm các dịch vụ thành các miền luận lý giúp đơn giản hóa kiến trúc hệ thống, giảm thiểu số lượng thành phần cần xây dựng Việc định nghĩa các miền này cũng tác động đến nhiều khía cạnh khác như cân bằng tải, điều khiển truy cập, cũng như sự phân chia theo chiều sâu hoặc chiều rộng trong xử lý nghiệp vụ.
• Làm sao có thể bao bọc các chức năng sẵn có của hệ thống cũ vào trong một dịch vụ
Khi thiết kế hệ thống, việc chú trọng đến khả năng tích hợp với các hệ thống mới sẽ giúp quá trình này trở nên dễ dàng hơn Tuy nhiên, các hệ thống cũ thường được xây dựng theo mô hình kín, chứa đựng toàn bộ thông tin về nguyên tắc và quy trình xử lý Hiện nay, để tích hợp hiệu quả, các thông tin này cần được chia sẻ và phân bố giữa nhiều ứng dụng khác nhau.
- Kết hợp các dịch vụ:
• Làm sao để có thể tạo ra các dịch vụ tổng hợp
Nhu cầu kết hợp nhiều dịch vụ để đáp ứng yêu cầu phức tạp từ người sử dụng ngày càng tăng Vấn đề chính là tìm ra phương pháp hiệu quả để tích hợp các dịch vụ này, tuân theo những quy trình và ràng buộc phức tạp.
• Làm sao để chuyển một yêu cầu từ một đối tượng sử dụng dịch vụ đến dịch vụ hay miền dịch vụ thích hợp?
Một hệ thống SOA cần đảm bảo tính độc lập địa chỉ cho người dùng khi truy cập các dịch vụ Bên cạnh đó, hiệu suất hoạt động của hệ thống cũng rất quan trọng, vì quá trình định vị dịch vụ có thể tốn thời gian đáng kể.
• Vấn đề quản lý và bảo trì các dịch vụ, việc tạo, xây dựng, theo dõi và thay đổi các dịch vụ như thế nào cho có hiệu quả?
Để lựa chọn một chuẩn định dạng thông điệp trao đổi giữa các chuẩn, cần xác định các yêu cầu và tính tương thích của hệ thống Việc xây dựng một chuẩn định dạng dữ liệu mà mọi hệ thống đều có khả năng hiểu và xử lý đòi hỏi sự đồng thuận trong việc thiết kế và áp dụng các quy tắc chung.
Mỗi tổ chức, với những đặc thù riêng, sẽ phải đối mặt với nhiều khó khăn và thách thức khác nhau trong quá trình triển khai hệ thống.
2.3.2 Vòng đời của hệ thống
Hệ thống SOA trải qua bốn giai đoạn chính trong chu trình sống của nó: Mô hình hóa, Lắp ghép, Triển khai và Quản lý Tất cả các giai đoạn này đều được xây dựng dựa trên nền tảng của Quản trị và các thực nghiệm.
Hình 2.10: Vòng đời hệ thống SOA
- Pha Model - mô hình hóa và thiết kế Ở pha này, cần tập trung vào những mục tiêu chính như sau:
• Thu thập các yêu cầu sử dụng dịch vụ
• Mô hình hóa và mô phỏng hệ thống
• Thiết kế từng dịch vụ ở mức cơ sở
- Pha Assemble – Lắp ráp các dịch vụ
• Xây dựng và thử nghiệm
• Tổ hợp các dịch vụ
• Tích hợp các nguồn nhân lực
• Tích hợp các tiến trình
• Quản lý và tích hợp thông tin
• Quản trị các ứng dụng và các dịch vụ
• Quản lí sự đồng nhất và tính tuân thủ
• Giám sát các số liệu nghiệp vụ
- Governance and best practice – Quản trị và các trải nghiệm thực tế: Đây là công việc xuyên suốt trong cả qui trình vòng đời hệ thống
• Tính toán về tài chính
• Sắp xếp nghiệp vụ/công nghệ thông tin
• Điều khiển các tiến trình
Thông tin thu thập trong giai đoạn Quản lý sẽ được đưa trở lại quy trình phát triển, giúp cải thiện xây dựng hệ thống và làm cho nó hoàn chỉnh hơn Điều này có nghĩa là quy trình diễn ra theo vòng lặp cho đến khi hệ thống đáp ứng đầy đủ nhu cầu thay đổi của doanh nghiệp và khách hàng.
2.3.3 Các pha cơ bản xây dựng hệ thống SOA
Xây dựng hệ thống SOA trải qua 6 pha sau đây:
Trong quá trình xây dựng hệ thống SOA, bước đầu tiên là phân tích hướng dịch vụ (Service-oriented analysis), nhằm xác định phạm vi của hệ thống Ở giai đoạn này, các dịch vụ cần thiết được xác định, tầng dịch vụ được lược đồ hóa và các dịch vụ được chia thành các mô hình, bao gồm cả hệ thống SOA sơ bộ.
Bước 2: Thiết kế hướng dịch vụ là giai đoạn quan trọng, nơi doanh nghiệp và nguyên lý hướng dịch vụ được kết hợp để xây dựng quy trình thiết kế dịch vụ Trong giai đoạn này, người thiết kế dịch vụ phải giải quyết vấn đề cốt lõi là thiết lập ranh giới thông qua các dịch vụ Các tầng dịch vụ, bao gồm tầng orchestrantion, được thiết kế nhằm xác định quy trình nghiệp vụ hình thức.
Bước 3 : Phát triển dịch vụ (Service development)
Trong giai đoạn xây dựng thực tế, việc phát triển nền tảng trở nên quan trọng, bất kể loại dịch vụ nào Cụ thể, lựa chọn ngôn ngữ lập trình và môi trường phát triển sẽ ảnh hưởng đến các mẫu dịch vụ và quy trình nghiệp vụ orchestrantion phù hợp với thiết kế.
Bước 4: Kiểm thử dịch vụ là quá trình quan trọng nhằm đảm bảo các dịch vụ đáp ứng được các yêu cầu sử dụng lại và xử lý các tình huống không lường trước Trước khi được triển khai thành sản phẩm, các dịch vụ cần trải qua quy trình kiểm thử nghiêm ngặt để xác định tính khả thi và độ tin cậy.
Bước 5 : Triển khai dịch vụ (Service deployment)