SOA Kiến trúc hướng dịch vụ - Service oriented Architecture
Một tập hợp các dịch vụ web Tạo ra khả năng giao tiếp giữa các dịch vụ web Kết nối giữa các dịch vụ web hết sức mềm dẻo, lỏng lẻo
Bạn đang xem trước 20 trang tài liệu SOA Kiến trúc hướng dịch vụ - Service oriented Architecture, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
SOA
Phạm Hồng Phong - SoICT – HUST
SOA
Kiến trúc hướng dịch vụ - Service oriented Architecture
2
SOA
SOA
Một tập hợp các dịch vụ web
Tạo ra khả năng giao tiếp giữa các dịch vụ
web
Kết nối giữa các dịch vụ web hết sức mềm
dẻo, lỏng lẻo
3
SOA
Các mô hình lập trình trước ñây
Lập trình hướng cấu trúc / SSADM
(C/Pascal)
Lập trình hướng ñối tượng / OOADM &
CBD (C++/Java)
+ kết hợp mềm dẻo, ñộc lập nền tảng,
giao tiếp chuẩn & chia nhỏ công việc
ñến mức có thể
= Service Oriented Architecture
4
Tiếp cận SOA
Các ứng dụng
ñóng gói
Giai ñoạn trung gian:
các dịch vụ ñơn lẻ
ñược phân tách ra
Kiến trúc hướng
dịch vụ
5
Tiếp cận SOA
Ví dụ: Dịch vụ thu ngân của Ngân hàng dựa
trên hướng dịch vụ
Các kiểu thu ngân khác nhau tạo ra các
dịch vụ khác nhau
Người thu ngân ñược nghiệp vụ hóa ñể chỉ
phải thực hiện loại giao dịch nào ñó. Ví dụ:
oQuản lý tài khoản (mở và ñóng các tài khoản)
oTín dụng (yêu cầu phải thẩm ñịnh các ñiều
kiện, tư vấn, yêu cầu cho việc thế chấp)
oGửi/lấy tiền mặt (chuyển khoản, ñặt cọc, thu
hồi vốn)
oĐổi ngoại tệ (mua và bán các tiền tệ nước
ngoài)
6
SOA
oRất nhiều các nhân viên thu ngân xử lý các
loại dịch vụ khác nhau (giúp giảm tải công
việc cho công ty, tránh lỗi)
oChúng ta không biết ñược chi tiết ñiều gì
xảy ra sau quầy thu ngân (ñược che chắn
bởi kính chống nổ, các thanh sắt!!)
oNếu yêu cầu một giao dịch phức tạp, có thể
ta phải giao tiếp với rất nhiều các nhân viên
(Khách hàng giống như một ñiều phối viên
giao dịch!!)
7
Thuật ngữ và các khái niệm
Một dịch vụ - service là một gói các chức năng ñã
ñược chuẩn hóa và liên quan mật thiết với nhau
Được gọi nhiều lần (theo các giao dịch khác
nhau)
Được hiện thực bởi một tính năng chuyên biệt
Ví dụ: Quản lý Tài khoản
Một dịch vụ có thể ñược phân rã & bao gồm
nhiều các hàm dịch vụ. Ví dụ: Mở Tài khoản
Đơn vị con nhỏ nhất bên trong các hàm dịch
vụ ñược gọi là dịch vụ nguyên thủy
Ví dụ: Thủ tục phát sinh Số tài khoản tiếp theo
8
Thuật ngữ và các khái niệm
Các ñặc tính miêu tả ñầy ñủ về một dịch
vụ
Người yêu cầu dịch vụ - Service requester
(“Client”)
oXác định ai/ thành phần nào sử dụng dịch vụ
oĐối với họ, tính năng của dịch vụ được cung cấp
là quan trọng nhất, không cần biết nó được thực
hiện bên trong như thế nào (hộp đen) – quy tắc
đóng gói thông tin và thực thi
9
Thuật ngữ và các khái niệm
Nhà cung cấp dịch vụ - Service
provider(“Server”)
oAi/thành phần nào thực thi hay cung cấp dịch vụ
oCó trách nhiệm cho việc cung cấp địa chỉ dịch vụ,
và đảm bảo chất lượng QoS
oCó thể yêu cầu trả phí cho dịch vụ
oChất lượng dịch vụ(QoS)
oBao gồm tập các tham số để đánh giá chất lượng
oVí dụ: độ tin cậy, chi phí, thời gian thực thi, cấp độ
bảo mật, dự báo kết quả, các đảm bảo …
10
Thuật ngữ và các khái niệm
Giao diện – Interface
Một giao diện sẽ chứa ñặc tả về một dịch vụ,
ñược thực thi bởi một thành phần nào ñó. Giao
diện ñịnh nghĩa một thỏa thuận mà thành phần
thực thi nó phải tuân theo
Interface có thể ñược miêu tả sử dụng các ngôn
ngữ ñịnh dạng
Web Services Description Language (WSDL)
OMG/ISO Interface Definition Language (IDL) (for CORBA)
UML Object Constraint Language (OCL)
Tương tự: Java, C++ headers, . . .
Các giao diện an toàn kiểu lại thường có tính
chất coupling rất chặt
o Các kiểu thông ñiệp khác nhau là ñược phép ñối với một
thông ñiệp
11
Thuật ngữ và các khái niệm
Kiến trúc phần mềm: bao gồm một tập các
quyết ñịnh quan trọng về việc tổ chức/thiết kế
một hệ thống phần mềm
Lựa chọn các phần tử ñã ñược cấu trúc hóa
từ hệ thống, và interface cho chúng
Hành vi chỉ ra việc giao tiếp/cộng tác giữa
các phần tử
Phân rã/bố cục của các phần tử có hành vi và
có cấu trúc bên trong một hệ thống lớn
Kiểu kiến trúc áp dụng cho hệ thống này
12
Thuật ngữ và các khái niệm
Mẫu kiến trúc – Architectural Style
Định nghĩa một họ các hệ thống theo
các thuật ngữ như là một khuôn mẫu
của tổ chức có cấu trúc
Định nghĩa
oMột bộ từ vựng cho các thành phần/phần tử
như client, server, filter, layer, adapter, …
và các kiểu kết nối như pipe, broadcast,
queue, …
oMột tập các quy tắc cấu hình (rằng buộc) chỉ
ra cách thức các thành phần kết hợp với
nhau
13
Thuật ngữ và các khái niệm
Ví dụ một mẫu kiến trúc phần mềm:
hướng sự kiện (event-based), repository,
các máy ảo, ña tầng, …
14
Thuật ngữ và các khái niệm
Kiến trúc hướng dịch vụ: mẫu kiến trúc
gọi là hướng dịch vụ nếu như:
Nó không ở dạng nguyên khối (monolithic),
các khối chức năng chung được phân rã ra
khỏi các ứng dụng & được cung cấp thay thế
bởi các dịch vụ
oCác dịch vụ là tồn tại độc lập với ứng dụng và thể
hiện giao diện cho các chức năng
Thiết kế các phần tử cho một SOA
oCác thành phần: các dịch vụ (có thể là nhiều dịch
vụ kết hợp), người dùng (consumer) và nhà cung
cấp (provider)
oKiểu kết nối: kích hoạt dịch vụ từ xa
15
Thuật ngữ và các khái niệm
Các quy tắc cấu hình cho một SOA
oKhông phân tầng rõ rệt: việc thực thi
dịch vụ có thể sử dụng các dịch vụ
khác
oKhông ñiều khiển hệ thống ở một nơi
trung tâm, các thành phần có thể
hoạt ñộng tách rời nhau
oCác dịch vụ ñược thiết kế ñể sử dụng
chung
16
Thuật ngữ và các khái niệm
Hướng dịch vụ
Là một tập các quy tắc có tổ chức ñể xây dựng các hệ
thống lớn. Nó không bó buộc với bất cứ công nghệ nào
Ví dụ
Các dịch vụ “nằm ngang” chung:
o Logging, ñịnh danh (authentication/single-sign-on),
quản lý hệ thống, Thư mục tra cứu các dịch vụ, thông
báo sự kiện …
Các dịch vụ “nằm dọc”, thiết kế chuyên biệt cho từng
lĩnh vực nghiệp vụ
o Dịch vụ tìm kiếm tính năng sản phẩm, quảng lý ñịa
chỉ, dịch vụ truy vết trạng thái ñơn ñặt hàng, dịch vụ
tra cứu quảng cáo …
Một tổ chức có nhiều cách ñể cấu trúc hóa một hệ thống lớn
17
Ưu ñiểm thiết kế SOA
Mềm dẻo hơn, các quy tắc nghiệp vụ và các logic
tiến trình nghiệp vụ không ñược nhúng nhiều bên
trong các ứng dụng. Kết quả là:
Các tiến trình được thay đổi dễ hơn
Các dịch vụ đang có có thế được dùng trong nhiều
ngữ cảnh khác nhau
Giảm chi phí vận hành bởi tính ñồng nhất
Dư thừa các chức năng dịch vụ bị hạn chế rất nhiều
Kết quả
o Ít máy chủ hơn
o Ít bản quyền hơn
o Chi phí bảo trì thấp hơn
18
Ưu ñiểm thiết kế SOA
Chất lượng tốt hơn
Hạn chế dư thừa làm giảm các hành vi và dữ
liệu không đồng nhất
Trong suốt hơn
Kiến trúc hệ thống được cải thiện, dễ hiểu
hơn
Hạn chế rủi ro, chi phí và ñộ phức tạp
phát triển
Tăng năng suất cho các LTV thông qua tính
tái sử dụng
Các dự án có thể giúp thúc đẩy các dịch vụ
đang có 19
Chất lượng của kiến trúc phần mềm
20
SOA more …
Khung nhìn khái niệm của SOA
21
SOA more …
Trong một kiến trúc hướng dịch vụ, các
dịch vụ nghiệp vụ tương tác với nhau theo
cách mà các dịch vụ của một nhà hàng
tương tác. Kiến trúc cơ bản của một hệ
thống xử lý ñơn hàng và SOA là giống
nhau:
22
Các thành phần của SOA
23
Các thành phần của SOA
Application frontend: phần tử hoạt ñộng
của SOA, ñưa giá trị của SOA tới người
dùng cuối
Khởi tạo và ñiều khiển tất cả các hoạt
ñộng của hệ thống doang nghiệp
Ứng dụng web, ứng dụng GUI, …
Dịch vụ: thành phần phần mềm mà ñóng
gói bên trong các chức năng nghiệp vụ
mức cao
Contract: cung cấp ñặc tả về mục ñích,
tính năng, rằng buộc và sử dụng dịch vụ
24
Các thành phần của SOA
Interface: chức năng của dịch vụ ñược thấy
bởi Client
Implementation: Thực thi dịch vụ cung cấp
các logic nghiệp vụ và dữ liệu thích hợp. Nó
chứa: chương trình, cấu hình, dữ liệu và
datasets
Business logic: các tiến trình nghiệp vụ ñược
biểu diễn bởi dịch vụ
Data: dữ liệu ñược sử dụng bởi dịch vụ
Service repository: ñăng ký các dịch vụ và
thuộc tính của chúng giúp việc khám phá các
dịch vụ dễ dàng hơn: các hoạt ñộng, quyền
truy xuất, người sở hữu, chất lượng, …
25
Các thành phần của SOA
Enterprise Service Bus: một hạ tầng mềm
dẻo giúp tích hợp các ứng dụng và dịch vụ
một cách ñơn giản bằng: ñịnh tuyến các
thông ñiệp, các giao thức truyền dữ liệu
giữa người yêu cầu và dịch vụ, thực hiện
các sự kiện nghiệp vụ, cung cấp QoS, bảo
mật và quản lý tương tác giữa các dịch vụ
Open standards: các chuẩn có thể thực thi
sẵn có trên mạng
26
Dịch vụ và các kiểu dịch vụ
27
Dịch vụ và các kiểu dịch vụ
Các kiểu dịch vụ
1. Ứng dụng frontend: GUI -> trong pha thiết kế
& thực thi
2. Các dịch vụ cơ bản: dữ liệu& logic (dịch vụ
ngang) -> từ sơ ñồ quan hệ Entity
3. Các dịch vụ trung gian: gateway, adapters ->
thêm một dịch vụ mới
4. Các dịch vụ hướng tiến trình: các hoạt ñộng
nghiệp vụ (dịch vụ dọc)
5. Các dịch vụ doanh nghiệp công khai: thông
suốt doanh nghiệp, bảo mật, tự trị
Yếu tố quan trọng nhất trong SOA là tìm ra các
dịch vụ nghiệp vụ và ñịnh nghĩa phạm vi của nó
28
SOA Stack
29
Case study SOA
30
Case study SOA
31
32