chương 1 đã nghiên cứu và phác họa (1) quan điểm, hiện trạng xây dựng và phát triển các HTTT tại các doanh nghiệp, (2) những khó khăn, bất cập trong việc nâng cao hiệu quả sử dụng các HTTT do tính phân mảnh, khả năng kết nối lỏng lẻo đã được phân tích và chỉ rõ. Từ đó (3) đề xuất giải pháp khắc phục trong việc xây dựng những giải pháp phần mềm sau này để tận dụng tối đa tài nguyên từ những hệ thống đã được đầu tư xây dựng trước đây. Nguyễn Thị Kim Anh - K16 HTTTA 12 Khóa luận tốt nghiệp Phát triển Hệ thống thông tin doanh nghiệp dựa trên Kiến trúc hướng dịch vụ CHƯƠNG 2: PHƯƠNG PHÁP PHÁT TRIỂN ỨNG DỤNG DỰA TRÊN KIẾN TRÚC HƯỚNG DỊCH VỤ Chương 2 sẽ trình bày tổng quan về kiến trúc hướng dịch vụ - SOA, xem xét và đánh giá sự phù hợp của việc lựa chọn giải pháp để phục vụ phát triển các hệ thống thông tin - HTTT trong các doanh nghiệp. Để làm rõ các thành phần kiến trúc, tác giả sẽ trình bày chi tiết các khái niệm liên quan tới Service (Dịch vụ), Web service (Dịch vụ trên nền tảng Web), SOA (Kiến trúc hướng dịch vụ), ESB (trục tích hợp dữ liệu).
Với cách tiếp cận này, việc nâng cấp và phát triển HTTT tại các tổ chức doanh nghiệp được kỳ vọng có thể thực hiện nhanh chóng, hiệu quả với chi phí thấp. Tổng quan về kiến trúc hướng dịch vụ Ngày nay, các hệ thống thông tin (HTTT) của các doanh nghiệp ngày càng trở nên cồng kềnh bởi việc triển khai và xây dựng hàng loạt các ứng dụng phân tán trên nhiều nền, kỹ thuật và các công nghệ khác nhau. Trên thực tế, phương pháp phát triển HTTT theo hướng truyền thống dẫn tới sự thiếu liên kết giữa các HTTT với các hoạt động nghiệp vụ và giữa các HTTT với nhau. Và với bức tranh muôn màu của những HTTT đã, đang và sẽ hiện hữu các doanh nghiệp cảm thấy mình đang bị mắc kẹt trong một khối dữ liệu nội bộ bởi những HTTT tách biệt.
Nhiều tổ doanh nghiệp đã bắt tay vào xây dựng những hệ thống có chuẩn chung và đi đôi với việc xây dựng những HTTT mới là việc “gỡ bỏ và thay mới” toàn bộ hệ thống, các ứng dụng và chức năng hiện có. Tuy nhiên chi phí, thời gian và công sức cho việc “đập đi xây lại” là rất lớn. Vấn đề đặt ra là làm sao để gắn kết những công nghệ mới cho hệ thống trong khi vẫn giữ được những tri thức công nghệ từ những hệ thống đã được xây dựng trước đó. Và làm sao để các HTTT và các ứng dụng có thể trao đổi với nhau một cách liền mạch? Bởi vậy “tích hợp dữ liệu” là bài toán mà các doanh nghiệp cần giải quyết và hướng đến.
Đã có nhiều giải pháp được đưa ra song song với sự phát triển của các vấn đề kinh doanh của các doanh nghiệp và kiến trúc hướng dịch vụ (SOA) đang được coi là giải pháp tiên tiến cho việc xây dựng HTTT cho các doanh nghiệp. Vậy Kiến trúc SOA là gì? Và làm thế nào để các doanh nghiệp triển khai HTTT dựa trên Kiến trúc SOA? 2. Khái niệm về kiến trúc SOA Có rất nhiều quan điểm về kiến trúc hướng dịch vụ (SOA - Service Oriented Architecture), tùy vào từng góc độ, nhu cầu và định hướng của từng doanh nghiệp khác nhau để có những khái niệm phù hợp về kiến trúc SOA. Kiến trúc hướng dịch vụ (SOA) cung cấp một kiến trúc hạ tầng cho phép nhiều ứng dụng khác nhau có thể trao đổi dữ liệu và tham gia vào quy trình nghiệp vụ mặc Nguyễn Thị Kim Anh - K16 HTTTA 13 Khóa luận tốt nghiệp Phát triển Hệ thống thông tin doanh nghiệp dựa trên Kiến trúc hướng dịch vụ dù khác nhau về mặt ngôn ngữ lập trình cũng như nền tảng phát triển của các ứng dụng[2].
SOA là một cách tiếp cận hay một phương pháp luận để thiết kế và tích hợp các thành phần khác nhau, bao gồm các phần mềm và các chức năng riêng lẻ lại thành một hệ thống hoàn chỉnh. “Kiến trúc hướng dịch vụ (SOA) là một kiểu kiến trúc hỗ trợ tích hợp các nghiệp vụ của doanh nghiệp bởi việc kết nối các dịch vụ”. Theo Wikipedia “Một SOA là một nhóm các dịch vụ, giao tiếp với các dịch vụ khác. Tiến trình giao tiếp này liên quan đến một trong hai luồng dữ liệu giữa nhà cung cấp dịch và đối tượng sử dụng dịch vụ hoặc là một hệ thống phức tạp hơn của cả hai hay nhiều hơn các nhà cung cấp dịch vụ.
Sự liên giao tiếp (intercommunication) này đưa đến những nhu cầu cho điều kiện kết nối giữa hai hoặc nhiều dịch vụ với nhau”. Kiến trúc hướng dịch vụ có thể được hiểu là một hướng tiếp cận để xây dựng các hệ thống phân tán cung cấp các ứng dụng dưới các dạng dịch vụ tới các ứng dụng người dùng cuối cùng hoặc các dịch vụ khác. SOA là một 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ó khả năng giao tiếp với một ứng dụng khác mà không cần biết các chi tiết hệ thống bên trong), có giao diện được định nghĩa rõ ràng và độc lập với nền tảng của hệ thống, và có thể tái sử dụng. Trên một phương diện khác có thể hiểu “Kiến trúc hướng dịch vụ là một cách tiếp cận để tổ chức các tài nguyên công nghệ thông tin mà ở đó dữ liệu, logic và nguồn nhân lực hạ tầng được truy cập thông qua các giao diện (interface) và thông điệp (message)”.
Mặc dù có nhiều quan điểm khác nhau nhưng trong phạm vi của để tài SOA được định nghĩa một cách tổng quát như sau: SOA là tập hợp các dịch vụ (Services) được kết nối mềm dẻo với nhau, có giao tiếp được định nghĩa rõ ràng, độc lập với nền tảng hệ thống và có thể tái sử dụng. Mỗi dịch vụ thực hiện một chức năng chuyên biệt nào đó như: tạo kết nối, truy xuất dữ liệu, hiển thị dữ liệu,… Khi người dùng cần thực hiện một chức năng nào đó, thay vì viết mã lệnh thì chỉ cần gọi dịch vụ thực hiện chức năng đó. Kết quả cuối cùng thu được khi tổ chức/doanh nghiệp xây dựng HTTT áp dụng giải pháp SOA là việc truy xuất/sử dụng dữ liệu giữa các HTTT trong doanh nghiệp một cách dễ dàng thông qua các dạng dữ liệu được quy định (XML, JSON). Như vậy doanh nghiệp cần phải hệ thống hóa lại các dịch vụ dữ liệu nào mình cần và chuyển bộ phận công nghệ tiến hành việc xây dựng từng phần các dịch vụ dữ liệu đó phục vụ nhu cầu cho doanh nghiệp ở hiện tại và trong tương lai.
Nguyễn Thị Kim Anh - K16 HTTTA 14 Khóa luận tốt nghiệp Phát triển Hệ thống thông tin doanh nghiệp dựa trên Kiến trúc hướng dịch vụ 2. Kiến trúc của SOA Mục đích của Kiến trúc hướng dịch vụ là nhằm giúp các HTTT trong doanh nghiệp có thể giao tiếp với nhau, tận dụng những tài nguyên sẵn có của các hệ thống cũ để giảm thiểu chi phí thực hiện, phát triển cũng như bảo trì hệ thống. Mô hình của kiến trúc SOA có thể được mô tả như sau: Hình 2.1: Mô hình kiến trúc SOA Các thành phần của kiến trúc SOA Thành phần cung cấp dịch vụ (Web Services Implementation) là một thực thể có khả năng được địa chỉ hóa qua mạng, nó có thể chấp nhận và thực thi các yêu cầu từ những thành phần sử dụng dịch vụ. Thành phần cung cấp dịch vụ 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 có thể thực thi các yêu cầu dịch vụ.
Thực thể này xuất bản giao ước dịch vụ của nó trong một kho đăng ký dịch vụ để các thành phần sử dụng dịch vụ có thể truy cập. Thành phần sử dụng dịch vụ (Web Services Customer) là một ứng dụng, một dịch vụ, hoặc một loại module phần mềm khác có yêu cầu sử dụng dịch vụ. Đây là thực thể khởi tạo việc định vị dịch vụ tại một kho đăng ký dịch vụ, liên kết tới dịch vụ qua một kênh truyền thông và thực thi các chức năng của dịch vụ. Thành phần này thực thi nhiệm vụ bằng cách gửi tới dịch vụ một yêu cầu được định dạng theo đúng giao ước.
Thành phần đăng ký dịch vụ (UDDI) là một thư mục trên mạng có chứa các dịch vụ có sẵn dùng. Lưu trữ các giao thức từ các thành phần cung cấp dịch vụ và cung cấp các giao ước đó cho các thành phần sử dụng dịch vụ. Dịch vụ UDDI, đóng vai trò như người chỉ đường cho các thành phần sử dụng dịch vụ, để khi thành phần này thay đổi thì thành phần sử dụng dịch vụ không cần phải biên dịch lại hay cấu hình lại. Kiến trúc phân tầng của hệ thống SOA Nguyễn Thị Kim Anh - K16 HTTTA 15 Khóa luận tốt nghiệp Phát triển Hệ thống thông tin doanh nghiệp dựa trên Kiến trúc hướng dịch vụ Nguồn: www.2: Kiến trúc phân tầng của SOA Các tầng chức năng: Tầng 1: Tầng dưới cùng, mô tả các hệ thống vận hành.
Tầng này chứa các hệ thống hoặc các ứng dụng hiện có, bao gồm các ứng dụng được đóng gói, các ứng dụng đang có. Kiến trúc theo tầng của một kiến trúc hướng đối tượng có thể thúc đẩy các hệ thống hiện có, tích hợp chúng bằng cách sử dụng tích hợp hướng dịch vụ. Tầng 2: Tầng thành phần thực hiện các dịch vụ, có thể bằng cách sử dụng một hoặc nhiều ứng dụng trong tầng các hệ thống vận hành. Như được thể hiện trong hình 2.2, người dùng và các quy trình nghiệp vụ không có quyền truy cập trực tiếp tới các thành phần mà chúng truy cập vào các dịch vụ.
Các thành phần hiện có có thể được tái sử dụng nội bộ hoặc được sử dụng trong một kiến trúc SOA nếu thích hợp. Tầng 3: Các dịch vụ cung cấp các cơ chế thành phần cho từng đơn vị doanh nghiệp cụ thể, và trong một số trường hợp là các thành phần của từng dự án và cung cấp các dịch vụ thông qua các giao diện của chúng. Trong tầng này, các giao diện được thể hiện ra ngoài thông qua các đặc tả dịch vụ. Ở đó, các dịch vụ tồn tại một cách độc lập hoặc là tổng hợp của một số dịch vụ.
Tầng 4: Quy trình nghiệp vụ, thể hiện các dịch vụ đã được triển khai tới môi trường. Các dịch vụ này cũng được nhóm thành các nhà cung cấp dịch vụ và được người dùng dịch vụ sử dụng.