2.3.1. SOA và ứng dụng Web Service
Web Service là một công nghệ rất phù hợp để thực hiện một dịch vụ theo định hướng kiến trúc. Dựa trên các tiêu chuẩn XML, SOA và Web Service có thể được phát triển như là thành phần ứng dụng lỏng sử dụng bất kỳ ngôn ngữ lập trình, bất kỳ giao thức, hoặc bất kỳ nền tảng. Điều này tạo điều kiện việc cung cấp các ứng dụng như một dịch vụ có thể truy cập vào bất cứ ai, bất cứ lúc nào, ở vị trí nào, và sử dụng bất kỳ nền tảng.
Điều quan trọng là chỉ ra rằng các Web Service không phải là công nghệ duy nhất có thể được sử dụng để thực hiện một SOA. Nhiều tổ chức đã thực hiện thành
Bùi Văn Quý CH CNTT 2013 33 công kiến trúc hướng dịch vụ sử dụng các công nghệ khác như CORBA, Java RMI, DCOM.
Web Service cũng đã được sử dụng bởi những người khác để thực hiện các kiến trúc không được phục vụ theo định hướng. Đặ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 là Web Service. Web Service cho phép truy cập thông qua định nghĩa giao thức và giao tiếp.
Về cơ bản, SOA là kiến trúc phần mềm phát xuất từ định nghĩa giao tiếp và xây dựng toàn bộ mô hình ứng dụng như là mô hình các giao tiếp, hiện thực giao tiếp và phương thức gọi giao tiếp. Giao tiếp là trung tâm của toàn bộ triết lý kiến trúc này.
Dịch vụ và module phần mềm nghiệp vụ được truy cập thông qua giao tiếp, thường theo cách thức yêu cầu đáp trả. Ngay cả với yêu cầu dịch vụ một chiều thì nó vẫn là yêu cầu trực tiếp có chủ đích từ một phần mềm này đến một phần mềm khác. Một tương tác định hướng dịch vụ luôn bao hàm một cặp đối tác là nguồn cung cấp dịch vụ và khách hàng sử dụng dịch vụ.
2.3.2. SOA và Web Service trong vấn đề tích hợp hệ thống
Web Service là những thành phần ứng dụng, giao tiếp bằng cách sử dụng giao thức mở chứa đựng và mô tả chính nó, có thể được phát hiện bằng cách sử dụng UDDI và có thể được sử dụng bởi ứng dụng khác khác nhau. Web Service hoạt động dựa trên nền tảng là XML và HTTP.
Web Service = XML + transport protocol (such as HTTP)
XML cung cấp một ngôn ngữ mà có thể được sử dụng giữa các nền tảng và ngôn ngữ lập trình khác nhau và vẫn thể hiện thông điệp và chức năng phức tạp, các giao thức HTTP là giao thức Internet được sử dụng nhiều nhất.
Hình dưới đây sẽ thể hiện ứng dụng Web Service vào hệ thống không phụ thuộc vào ngôn ngữ lập trình cũng như môi trường lập trình và tái sử dụng dịch vụ ở các hệ thống khác nhau. Ứng dụng mobile sử dụng java, ứng dụng sử dụng java kết nối tới hệ thống phổ cập tiểu học sử dụng Web Service trên nền DotNet trong khi ứng dụng DotNet lại kết nối hệ thống phổ cập trung học cơ sở sử dụng Web Service chạy trên nền J2EE.
Bùi Văn Quý CH CNTT 2013 34 Hình 2.11: Tích hợp Web Service trong SOA ([1])
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:
- 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 cho Web Service.
- Đóng gói các ứng dụng cho phép kế thừa với giao diện đúng theo chuẩn công nghệ chung. Các Web Service đều phải được sử dụng thông qua giao diện này.
- Sử dụng dữ liệu và tầng dữ liệu độc lập nằm giữa các ứng dụng để ẩn đi cấu trúc dữ liệu bên dưới. Mọi tương tác với dữ liệu đều phải thông qua Web Service. 2.4. Quy trình phát triển hệ thống
2.4.1. Thách thức khi phát triển hệ thống theo hướng dịch vụ
Cũng như các phương pháp phát triển phần mềm khác, để xây dựng được một hệ thống theo hướng dịch vụ cũng phải trải qua các giai đoạn tương tự. Tuy vậy, dù những lợi ích đạt được từ hệ thống SOA là rất lớn nhưng việc triển khai một hệ thống SOA không phải là điều dễ dàng. Từ mô hình tính toán tập trung sang mô
Bùi Văn Quý CH CNTT 2013 35 hình phân tán client server, rồi sau đó là kiến trúc dựa trên nền tảng Web và ngày nay quá trình này vẫn tiếp tục. Chúng ta đang ở thời kỳ quá độ sang mô hình tính toán dựa trên dịch vụ là kiến trúc hướng dịch vụ. Kiến trúc này ngày nay cũng đã và đang áp dụng và phát triển cho nhiều doanh nghiệp trên thế giới. Các doanh nghiệp phát triển phần mềm trong giáo dục cũng dần phát triển theo kiến trúc hướng dịch vụ hoặc kiến trúc phù hợp để đáp ứng nhu cầu thực tế. Nhưng để xây dựng và triển khai được hệ thống thì vẫn gặp phải một số vấn đề trở ngại:
Xác định dịch vụ
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ụ? Việc xác định dịch vụ và quyết định đối tượng cung cấp dịch vụ một cách thích hợp, hiệu quả là giai đoạn quan trọng và đầu tiên trong một giải pháp hướng dịch vụ Phân bổ dịch vụ
Đặ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ác đối tượng này được lưu và quản lí trong hệ thống. Vị trí của các thực thể này cũng là vị trí tốt nhất để đặt dịch vụ. Tuy nhiên bởi đặc tính của hệ là phân tán nên các đối tượng này phân bố rải rác ở nhiều vị trí và có thể một đối tượng được quản lí ở nhiều nơi. Vì vậy đồng bộ dữ liệu giữa các hệ thống trở nên là một yêu cầu quan trọng. Trong môi trường như thế thì dịch vụ sẽ được đặt ở đâu.
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) việc phân loại gom nhóm các dịch vụ thành các miền luận lý sẽ đơn giản hóa kiến trúc bởi sẽ giảm được số lượng các thành phần cần xây dựng. Việc định nghĩa các miền như thế cũng ảnh hưởng đến nhiều khía cạnh khác của kiến trúc hệ thống như cân bằng tải (load balancing), điều khiển truy cập (access control), sự phân chia theo chiều sâu hay chiều rộng của xử lý nghiệp vụ.
Đóng gói dịch 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ụ.
Nếu hệ thống khi được thiết kế đã quan tâm và hỗ trợ vấn đề tích hợp với các hệ thống mới thì vấn đề này sẽ dễ dàng hơn. Tuy nhiên các hệ thống cũ này trước
Bùi Văn Quý CH CNTT 2013 36 đây được xây dựng theo mô hình kín, đóng gói trong đó chứa toàn bộ các thông tin về nguyên tắc và qui trình xử lý thì nay, khi được tích hợp, các thông tin này cần được chia sẻ và phân bố trong 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 được yêu cầu phức tạp từ đối tượng sử dụng là có thực. Vấn đề là làm sao kết hợp các dịch vụ này một cách hiệu quả, theo những qui trình với những rằng buộc phức tạp.
Định tuyến dịch vụ
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 phải có tính độc lập địa chỉ cho đối tượng sử dụng các dịch vụ của hệ thống. Ngoài ra còn phải quan tâm đến vấn đề hiệu suất hoạt động của hệ thống vì việc định vị một dịch vụ là một quá trình cũng chiếm mất nhiều thời gian.
Quản lý dịch vụ
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àm sao để lựa chọn một chuẩn định dạng thông điệp trao đổi giữa các chuẩn? Làm sao có thể 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ý? Ngoài các khó khăn trên mỗi tổ chức với mỗi đặc thù riêng của mình có thể sẽ phải đối diện với các vấn đề khác trong quá trình triển khai hệ thống.
2.4.2. Quy trình xây dựng hệ thống
Quy trình hệ thống đi qua 4 giai đoạn chính: mô hình hóa, lắp ghép, triển khai và quản lý. Các giai đoạn này đều dựa trên nền tảng của việc quản trị và các thực nghiệm.
Giai đoạn mô hình hóa và thiết kế (Model)
- 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ở Giao đoạn lắp ráp các dịch vụ (Assemble)
Bùi Văn Quý CH CNTT 2013 37
- Xây dựng và thử nghiệm
- Tổ hợp các dịch vụ
Giai đoạn triển khai (Deploy)
- 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. Giai đoạn quản lí (Manage)
- 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ụ
Ngoài ra còn có quản trị và các trải nghiệm thực tế (Governance and best practice), đâ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
Các thông tin thu thập được trong pha quản lý sẽ được cung cấp trở lại qui trình phát triển và giúp cải thiện quá trình xây dựng hệ thống, làm cho hệ thống hoàn chỉnh hơn. Có nghĩa, qui trình là một vòng lặp cho tới khi hệ thống hoàn chỉnh theo nhu cầu thay đổi của doanh nghiệp và khách hàng.
2.4.3. Các bước cơ bản xây dựng hệ thống
Xây dựng hệ thống SOA trải qua 6 pha sau đây:
Hình 2.12: Các bước cơ bản trong xây dựng hệ thống SOA
Bùi Văn Quý CH CNTT 2013 38 Đây là giai đoạn đầu để quyết định phạm vi của hệ thống SOA. Hệ thống gồm những dịch vụ nào? Tầng dịch vụ là được lược đồ hóa ra (mapped out), và chia dịch vụ ra thành các mô hình, bao gồm hệ thống SOA sơ bộ.
- Bước 2: Thiết kế hướng dịch vụ (service-oriented design)
Đây là giai đoạn có sự kết hợp chặt chẽ về sự thỏa hiệp của doanh nghiệp và nguyên lý hướng dịch vụ thành quy trình thiết kế dịch vụ. Trong pha này, làm cho người thiết kế dịch vụ phải đương đầu với giải quyết vấn đề then chốt đó là thiết lập nên những ranh giới thông qua các dịch vụ. Các tầng dịch vụ là được thiết kế trong giai đoạn này có thể bao gồm tầng orchestrantion, các kết quả của nó là trong sự 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 bước này là giai đoạn xây dựng thực tế.Ở đây vấn đề về nền tảng phát triển đi vào hoạt động, không quan tâm tới nó là loại dịch vụ nào. Một cách cụ thể, là sự lựa chọn ngôn ngữ lập trình và môi trường phát triển sẽ quyết định những mẫu dịch vụ và quy trình nghiệp vụ orchestrantion nào phù hợp với thiết kế.
- Bước 4: Kiểm thử dịch vụ (Service testing)
Để đưa ra những tiềm năng cho việc dùng lại và bao gồm cả những trạng thái không biết trước được, các dịch vụ là được yêu cầu trải qua được sự nghiêm ngặt của việc kiểm thử trước khi được triển khai thành các sản phẩm.
- Bước 5: Triển khai dịch vụ (Service deployment)
Giai đoạn thực thi này đưa đến việc cài đặt và cấu hình cho các thành phần phân tán, các giao diện dịch vụ, và nhiều sản phẩm trung gian kết hợp với nhau thành những server.
- Bước 6: Quản trị dịch vụ (Service administration).
Sau khi các dịch vụ được triển khai, vấn đề quản lý các ứng dụng trở thành hàng đầu, mối quan tâm cho hệ thống phân tán, và các ứng dụng dựa trên các thành phần, và việc xem xét chúng như các dịch vụ trong một tổng thể.
2.4.4. Phương pháp xây dựng hệ thống
Nhìn chung có hai phương pháp chính để xây dựng hệ thống quản lý dữ liệu tiểu học dựa trên SOA:
Bùi Văn Quý CH CNTT 2013 39 đầu hệ thống theo mô hình SOA.
- Phương pháp 2: Xây dựng theo kiểu bottom-up nghĩa là xây dựng SOA dựa vào một bộ thư viện hay một nền tảng có sẵn.
Mỗi cách đều có những ưu nhược điểm riêng. Nếu xây dựng ngay từ đầu thì có thể dễ dàng kiểm soát và tối ưu nó, tuy nhiên chúng ta sẽ phải tốn rất nhiều thời gian, nhân lực và tiền bạc thì mới có thể xây dựng được hệ thống hoàn chỉnh. Ngược lại, nếu xây dựng hệ thống từ nền tảng có sẵn, chúng ta sẽ có được nhiều cái lợi như: thời gian phát triển và triển khai nhanh, được hỗ trợ tốt hơn. Bù lại chúng ta sẽ không thể tự do chỉnh sửa và thay đổi theo ý muốn.
Một số hệ thống cũ muốn nâng cấp hay tích hợp thêm một số dịch vụ hoặc tổ hợp lại với nhau thành một hệ thống lớn thường sử dụng phương pháp bottom-up để tận dụng cơ sở hạ tầng có sẵn và tiết kiệm chi phí. Còn hầu hết những hệ thống lớn hiện nay đi vào xây dựng đều theo định hướng SOA và áp dụng phương pháp top- down, nhằm mục đích đảm bảo khả năng mở rộng và thường xuyên thay đổi các yêu cầu với hệ thống. Tùy vào từng hệ thống mà việc xây dựng kiến trúc hướng dịch vụ có thể sử dụng chiến lược phù hợp.
Với hệ thống quản lý phổ cập tiểu học sẽ đi theo hướng phát triển từ đầu với mong muốn xây dựng hệ thống dựa trên SOA được tối ưu nhất.
Xây dựng hệ thống theo phương pháp top-down
Trong xây dựng hệ thống, top-down là cách xây dựng lấy xuất phát điểm là các yêu cầu ngiệp vụ, sau đó xác định các yêu cầu chức năng, các tiến trình nghiệp vụ và các tiến trình con, các trường hợp sử dụng (use cases) và đi tới xác định các thành phần, các dịch vụ... của hệ thống.
Phương pháp top-down hỗ trợ tạo ra các bước để hình thành tầng dịch vụ. Với phương pháp này phổ biến để tạo ra những kiến trúc dịch vụ có chất lượng cao, trong quá trình tạo ra nhiều những nghiệp vụ được sử dụng lại với các dịch vụ ứng dụng khác.
- Bước 1: Xác định phân loại các tập thông tin (Define relevant ontology) Bước này là để xác định, phân loại các tập thông tin được xử lý bởi các cơ cấu tổ chức của hệ thống. Các kết quả này là các từ vựng phổ biến, như sự định nghĩa mối quan hệ giữa các tập thông tin này với tập thông tin khác là như thế nào.
Bùi Văn Quý CH CNTT 2013 40 Các tổ chức có phạm vi rộng lớn hơn cùng với nhiều phạm vi nghiệp vụ có thể có vài ontology, theo mỗi cách quản lý thì các nghiệp vụ chia ra một cách rõ ràng. Bước 2: Gắn kết thích hợp mô hình nghiệp vụ (Align relevant business models).
- Bước 3: Thực hiện phân tích hướng đối tượng (perform service-oriented analysis): Xác định các dịch vụ và hướng tiếp cận cho các dịch vụ, mô hình hóa các dịch vụ.
- Bước 4: Thực hiện thiết kế hướng đối tượng (perform service-oriented design)
Thực hiện thiết kế hướng dịch vụ.
- Bước 5: Phát triển dịch vụ (Develop services)
Phát triển các dịch vụ theo yêu cầu. Các dịch vụ được phát triển theo những