Phần mềm đang ngày càng trở nên phức tạp quá mức, những nguyên nhân chính khiến cho các hệ thống phần mềm có độ phức tạp tăng cao là:
- Sự xuất hiện của nhiều công nghệ mới => Tạo nên môi trường không đồng nhất; - Nhu cầu trao đổi, chia sẻ thông tin, tương tác giữa các hệ thống ngày càng tăng. - Lập trình dư thừa & không thể tái sử dụng, gây tốn kém rất nhiều, không những trong giai đoạn phát triển hệ thống mà trong cả các giai đoạn vận hành, bảo trì phần mềm.
Các câu hỏi đặt ra là làm thế nào để: - Giảm chi phí đầu tư cơ sở hạ tầng, - Khai thác hiệu quả các công nghệ có sẵn
- Phục vụ các yêu cầu của khách hàng tốt hơn. Đáp ứng tốt các thay đổi thường xuyên về mặt nghiệp vụ.
- Khả năng tích hợp cao với các hệ thống bên ngoài - ...
SOA (Service Oriented Architecture) là một giải pháp cho việc trả lời các câu hỏi nàỵ Giúp cho các ứng dụng có thể giao tiếp với nhau mà không cần biết các chi tiết kỹ thuật bên trong của từng ứng dụng. SOA đưa ra các chuẩn giao tiếp dùng đê gọi dịch vụ độc lập với nền tảng hệ thống.
SOA phát triển từ đầu những năm 2000, được khởi xướng bởi IBM. Hiện nay đang được đầu tư và ứng dụng rộng rãi bởi nhiều tập đoàn lớn như IBM, Oracle, SAP. Microsoft, ...
SOA = {Các module};
Trong đó, các module không đơn thuần là các gói phần mềm, hay các bộ thư viện nào đó mà nó là các dịch vụ. Mỗi dịch vụ hỗ trợ thực hiện một quy trình nghiệp vụ nào đó, chúng nằm rải rác ở nhiều nơi khác nhau và có thể truy cập thông qua môi trường mạng. Chúng được tích hợp với nhau để cùng cộng tác thực hiện một công việc nào đó theo yêu cầu của khách hàng.
Ví dụ: Các dịch vụ dự báo thời tiết, Người dùng có thể sử dụng MT PC, Laptop, Mobilẹ. để truy cập sử dụng các dịch vụ này qua môi trường kết nối và trả cước cho việc truy cập sử dụng dịch vụ.
Service Providers Service Consumer Service Request Service Response Service Registry Service Consummers Service Providers Find Re gist er Bind, execute
Để kết nối tới các dịch vụ, có nhiều cách, cách thông dụng nhất là dùng các giao thức mạng có sẵn (các dịch vụ Web) – Giúp cho việc kết nối các thành phần của hệ thống SOA lại với nhaụ Hình 2.1 mỏ tả cách kết nối đến dịch vụ.
Service Providers - Các nhà cung cấp dịch vụ: Cung cấp dịch vụ phục vụ cho một nhu
cầu nào đó của khách hàng. Các dịch vụ này được cung cấp qua môi trường mạng, được đăng ký ở một nơi nhất định trên mạng, nên chúng dễ dàng được tìm thấy và sử dụng lạị
Service Consumer - Người sử dụng dịch vụ: Gửi yêu cầu cung cấp dịch vụ đến nhà
cung cấp và sử dụng dịch vụ mà không cần biết vị trí của dịch vụ cũng như dịch vụ được xây dựng như thế nàọ Các dịch vụ này có thể có không gian địa chỉ bên ngoài ứng dụng, hoặc ở một máy khác so với máy chứa ứng dụng. SOA hướng đến kiến trúc ứng dụng phân tán.
SOA hỗ trợ khái niệm khai thác dịch vụ (Service Discovery) như sau: Người sử dụng cần dịch vụ nào, có thể tìm kiếm dịch vụ dựa trên một số tiêu chuẩn. Kết quả tìm kiếm là danh sách các dịch vụ thỏa mãn điều kiện, người sử dụng có thể chọn dịch vụ có phí giao dịch thấp nhất, kết nối đến nhà cung cấp dịch vụ để sử dụng dịch vụ.
Mối ràng buộc duy nhất giữa bên cung cấp dịch vụ và bên sử dụng dịch vụ là bản hợp đồng được cung cấp bộ đăng ký dịch vụ trung gian. Ràng buộc này là ràng buộc trong thời gian chạỵ Tất cả các thông tin cần thiết về dịch vụ được lấy về và sử dụng trong khi chạỵ Hình 2.2 Tổng quan về kiến trúc hướng dịch vụ - SOA
Service A Bản mô tả dịch vụ B Service B Qua gi ao thư c m ạng
Self – govering message
Service Registry: Là nơi lưu trữ các thông tin về các dịch vụ của các nhà cung cấp dịch
vụ khác nhaụ Người sử dụng dịch vụ dựa trên các thông tin này để tìm kiếm và lựa chọn nhà cung cấp dịch vụ phù hợp.
Các thành phần trong kiến trúc SOA giao tiếp với nhau sử dụng các thông điệp. Các thông điệp này dựa trên các giao thức đã được chuẩn hóa như HTTP. FTP, ...
=> Hệ thống SOA độc lập với nền, Các dịch vụ hoạt động trên các platform khác nhau vẫn có thể giao tiếp với nhau nhờ các giao diện đã được chuẩn hóa để cùng cộng tác thực hiện một tác vụ nào đó.
Hính 2.3 mô tả cách thức một một dịch vụ (dịch vụ A) truyền thông điệp để gọi dịch vụ khác (dịch vụ B)
Clound Computing PC Kitchen Sink Mobile Code: Database Database