Vấn đề: Để giải quyết một vấn để nghiệp vụ lớn, phức tạp – một khối giải pháp logic tươngứng được đưa ra, điều này tạo ra một ứng dụng khép kín độc lập với các ràng buộc vềkhả năng tái s
Trang 1VIỆN CÔNG NGHỆ THÔNG TIN
-o0o -BÁO CÁOMôn: Kiến trúc hướng dịch vụ (SOA)
Đề tài:
SOA DESIGN PATTERNS
Nhóm thực hiện:
Vũ Đoàn Đoàn Hữu Hậu Nguyễn Thị Lan Anh
Lê Văn Khanh Ngô Doãn Lập
Lớp: Quản lý hệ thống thông tin K2
Trang 2MỤC LỤC
PHẦN I TỔNG QUAN 2
I Giới thiệu chung 2
II Phân chia công việc 3
PHẦN II SERVICE DESIGN PATTERNS 5
I Foundational Service Patterns 5
1 Service Identification Patterns 5
1.1 Functional Decomposition - Phân tích chức năng 6
1.2 Service Encapsulation 8
2 Service Definition Pattern 11
II Service Implementation Patterns 16
1 Service Façade 16
2 Redundant Implementation 18
III Service Security Patterns 20
1 Exception Shielding 20
2 Message screening 22
TÀI LIỆU THAM KHẢO 24
Trang 3PHẦN I TỔNG QUAN
I Giới thiệu chung
Trong công nghệ phần mềm(software engineering) nói chung, design pattern là giải pháptổng quát có thể dùng lại cho các vấn đề phổ biến trong thiết kế phần mềm Designpattern không phải là design cuối cùng có thể dùng để chuyển thành code Nó chỉ là cácgợi ý, mẫu mà chỉ ra cách giải quyết vấn đề trong các trường hợp Các design patterntrong thiết kế hướng đối tượng thường chỉ ra mối quan hệ và tương tác giữa các lớp haycác đối tượng, chứ không chỉ ra các lớp, đối tượng cụ thể nào Thuật toán không phảidesign patterns vì chúng chỉ qiải quyết các vấn đề tính toán chứ không giải quyết các vấn
đề thiết kế
Design pattern giúp tăng tốc độ phát triển phần mềm bằng cách đưa ra các mô hình test,
mô hình phát triển đã qua kiểm nghiệm Thiết kế phần mềm hiệu quả đòi hỏi phải cânnhắc các vấn đề sẽ nảy sinh trong quá trình hiện thực hóa (implementation) Dùng lại cácdesign pattern giúp tránh được các vấn đề tiềm ẩn có thể gây ra những lỗi lớn, đồng thờigiúp code dễ đọc hơn Thông thường, chúng ta chỉ biết áp dụng một kĩ thuật thiết kế nhấtđịnh để giải quyết một bài toán nhất định Các kĩ thuật này rất khó áp dụng với các vấn
đề trong phạm vi rộng hơn Design pattern cung cấp giải pháp ở dạng tổng quát
Xem xét trên quan điểm xây dựng hệ thống phần mềm, kiến trúc hướng dịch vụ(SOA )cũng có những mẫu thiết kế riêng của nó đã được kiểm chứng Do vậy việc xemxét và tìm hiểu các mẫu thiết kế trong kiến trúc hướng dịch vụ sẽ giúp cho quá trình thiết
kế được đảm bảo hơn, ít lỗi hơn Các vấn đề được giải quyết nhanh hơn, đôi khi có thể
là trọn vẹn hơn
Với mục đích có cái nhìn tổng quan về các mẫu thiết kế trong kiến trúc hướng dịch vụ.Nhóm chúng em nhận đề tài tìm hiểu các mẫu thiết kế trong SOA thông qua việc tìm hiểunội dung cuốn sách SOA design pattern của tác giả Thomas Erl
II Phân chia công việc
Trong kiến trúc hướng dịch vụ, đơn vị cơ bản nhất là dịch vụ (services) Một số services
có liên hệ với nhau cho một quy trình nghiệp vụ nào đó được gộp lại thành một dịch vụghép (service composition) Tập hợp các dịch vụ ghép cho một lĩnh vực kinh doanh nào
đó được gộp lại thành một kho dịch vụ (service inventory) Hình dưới đây mô tả quan hệgiữa chúng
Trang 4Các vấn đề về thiết kế trong SOA sẽ được trình bày theo luồng mạch từ các vấn đề liênquan đến thiết kế dịch vụ (Service design pattern), thiết kế các dịch vụ ghép (Servicecomposition design pattern) đến thiết kế các kho dịch vụ (Service Inventory designpattern) Hình dưới đây sẽ cho chúng ta có cái nhìn tổng quan về mô hình dịch vụ trongSOA
Với nội dung công việc như vậy, nhóm phân chia công việc như sau
Trang 5Các nội dung tổng quan, nhóm đã trình bày trong buổi báo cáo kết quả tìm hiểu Phần tiếp theo của tài liệu này chỉ tổng hợp và trình bày cụ thể các vấn đề liên quan đến thiết
kế các dịch vụ Đây là phần cơ sở nhất, nền tảng cho việc xây dựng kiến trúc hướng dịch vụ
Trang 6PHẦN II SERVICE DESIGN PATTERNSIII Foundational Service Patterns
Các pattern đưa ra trong phần này đại diện cho các bước đầu tiên cần thiết để phânvùng, tổ chức giải pháp logic vào các dịch vụ hỗ trợ các pattern sau đó Các pattern trongphần này có thể được xem là nền tảng xây dựng nguyên lý định hướng dịch vụ
1 Service Identification Patterns
Pattern (mẫu) định danh dịch vụ (hình 1) về bản chất thực hiện phân tách các vấn
đề (mối quan tâm) nghiệp vụ để hỗ trợ thiết kế kiến trúc định hướng dịch vụ
Service Identification Pattern gồm hai loại: Functional Decomposition và ServiceEncapsulation
Hình 1 Hai mẫu trong trong Service Identification Pattern sẽ được áp dụng cho quá trình
phân tách các vấn đề (mối quan tâm) nghiệp vụ
IV Functional Decomposition - Phân tích chức năng
1.1.1 Vấn đề:
Để giải quyết một vấn để nghiệp vụ lớn, phức tạp – một khối giải pháp logic tươngứng được đưa ra, điều này tạo ra một ứng dụng khép kín độc lập với các ràng buộc vềkhả năng tái sử dụng và quản trị truyền thống
Trang 7Hình 2 Một cách tiếp cận để giải quyết vấn đề lớn là xây dựng một khối giải pháp logic
tương ứng
1.1.2 Giải pháp:
Functional Decomposition về bản chất như một ứng dụng dùng để phân tích cácvấn đề đưa ra ban đầu Nguyên tắc của Functional Decomposition là phân tích các vấn đềlớn thành các vấn đề nhỏ hơn (gọi là các mối quan tâm), trên cơ sở đó ta xây dựng cácđơn vị giải pháp logic tương ứng với các vấn đề nhỏ đã phân tách
Hình 3 Thể hiện phương pháp tiếp cận chia vấn đề lớn thành các vấn đề nhỏ , giải pháplogic tương ứng cũng được phân chia thành các đơn vị giải pháp logic riêng lẻ ứng với
từng vấn đề nhỏ1.1.3 Ứng dụng:
Tùy theo tính chất, mức độ của vấn đề, một quy trình phân tích hướng dịch vụ cóthể được tạo ra để xây dựng các vấn đề nhỏ hơn
Pattern Function Decomposition chỉ thực hiện phân tách các vấn đề lớn thành cácvấn đề nhỏ Nó là một cách thức quan trọng để phân biệt định hướng dịch vụ với cácphương pháp thiết kế phân tách khác, Function Decomposition thực hiện phân tách saocho dựa trên kết quả phân tách ta sẽ xác định được cách thức định nghĩa các đơn vị giảipháp logic tương ứng
Pattern Function Decomposition không áp dụng riêng lẻ, nó là điểm bắt đầu chomột quy trình: thực hiện phân tách các chức năng, dựa vào thể hiện cụ thể của từng chứcnăng áp dụng các pattern tiếp theo để phân chia các đơn vị logic tương ứng
1.1.4 Ảnh hưởng:
Việc quản lý nhiều chương trình nhỏ có thể dẫn đến độ phức tạp trong thiết kếtăng lên và khó khăn trong việc quản lý (quản trị)
Trang 8Khi phân phối các đơn vị giải pháp loggic cần quan tâm tới tính kết nối, độ tincậy, bảo mật và bảo trì để đảm bảo chắc chắn rằng mỗi một đơn vị giải pháp trong chuỗiliên kết quy trình hoạt động khi chạy đảm bảo tính ổn định và độc lập.
Hơn nữa, hiệu quả của việc ứng dụng pattern này phụ thuộc vào chất lượng địnhnghĩa (cách đưa ra vấn đề) Đối với một quy trình nghiệp vụ (xem như một vấn đề lớn) đểphân chia được chính xác và phù hợp, nó cần được được ghi chép một cách chi tiết vàchính xác để trong quá trình phân tích có đủ cơ sở Nếu việc định nghĩa quy trình nghiệp
vụ không tốt dẫn đến việc phân chia và tách các vấn đề không hiệu quả sẽ kéo theo việcđịnh nghĩa các dịch vụ sau này không hiệu quả
1.1.5 Ví dụ:
Mối quan tâm sau phân tách Đơn vị giải pháp logic tương ứng
Từ yêu cầu đối với quy trình vận chuyển
hàng hóa theo dây chuyền, được phân tách
thành các vấn đề quan tâm tương ứng như
sau:
Với mỗi một vấn đề quan tâm, tương ứngvới một giải pháp được định nghĩa:
Quan tâm 1 - Làm thế nào để chất lượng
dầy chuyền được đảm bảo?
Giải pháp 1 – dây chuyền được kiểm tra bằng tay
Quan tâm 2 - Làm thế nào có thể ghi lại
tóm tắt thông tin hàng hóa trong dây
chuyền
Giải pháp 2 – dây chuyền được ghi lại tựđộng như là một phần của hệ thống kiểmsoát hàng hóa
Quan tâm 3 - Làm thế nào dây chuyền có
thể tham chiếu tới bất kỳ một đơn đặt hàng
lại tương ứng?
Giải pháp 3 - Sau khi ghi lại thông tinhàng hóa, hệ thống sẽ thực hiện một kiểmtra chéo cho các đơn đặt hàng lại, tiêu chítìm kiếm đưa ra ở đây là số hiệu hàng hóa.Quan tâm 4 - Làm thế nào để dây chuyền
có thể xác định được đâu là đơn đặt hàng
lại?
Giải pháp 4 – đơn đặt hàng lại tiếp theotrong hàng đợi được lấy ra từ hệ thốngquản lý đơn hàng (hồ sơ về hàng hóa) vàđánh dấu xác nhận
Mối quan tâm 5 - Làm thế nào để dây
chuyền phân phối được các đơn đặt hàng
Trang 9- Tăng khả năng mở rộng (sau phát triển hệ thống k cần thay đổi nhiều): bằng cáchtách các phần của hệ thống thành nhiều phần nhỏ.
- Cải thiện khả năng bảo mật, các phần cụ thể riêng biệt của hệ thống sẽ được gắnquyền truy cập riêng và đưa ra các yêu cầu bảo đảm tính bảo mật
- Tăng độ tin cậy, các phần của hệ thống sau khi phân tách sẽ được đặt tại các máychủ khác nhau không tập trung tại một máy
- Tăng khả năng tái sử dụng các phần trong phạm vi của hệ thống (hoặc trong giớihạn của doanh nghiệp đưa ra)
Hình 4 Một doanh nghiệp thực hiện việc phân tách các giải pháp nhưng trong giới hạn
của tổ chức
Khi một doanh nghiệp bưng bít việc phân tách các giải pháp (như hình 4), nó cóthể gặp phải thách thức trong việc quản trị và thiết kế, như:
- Lãng phí và dư thừa không cần thiết
- Cung cấp ứng dụng không hiệu quả
- Môi trường kỹ thuật (phần cứng, hệ điều hành ) tốn kém
- Kiến trúc doanh nghiệp và cơ sở hạ tầng phức tạp, tốn kém
- Chi phí hoạt động, duy trì tốn kém
1.1.2 Giải pháp:
Giải pháp logic sau khi được phân tách phù hợp có thể xem như một tài nguyêncủa doanh nghiệp, được đóng gói và thể hiện như một dịch vụ Điều này có nghĩa là bảnthân của giải pháp logic có thể dùng làm nền tảng cho một dịch vụ mới , hoặc nó có thểđược đóng gói bởi các dịch vụ đã tồn tại khác Điều này tạo ra một môi trường mà ở đócác dịch vụ chia sẻ được cho nhau (hình 5)
Trang 10Hình 5 Một doanh nghiệp trong đó các giải pháp logic riêng lẻ sử dụng các giải pháp
logic đã đóng gói như các dịch vụ
1.1.3 Ứng dụng:
Giải pháp logic phù hợp để đóng gói dịch vụ cần được xác định cụ thể Khôngphải tất cả các giải pháp logic đều được coi là nguồn tài nguyên của doanh nghiệp Việcxác định giải pháp logic nào được xem như một nguồn tài nguyên của doanh nghiệp căn
cứ theo các tiêu chí hướng dẫn sau:
- Giải pháp logic có chứa chức năng hữu ích đối với các phần bên ngoài giới hạnứng dụng của doanh nghiệp Đây là giải pháp logic thông thường tạo cơ sở chodịch vụ trung lập (agnostic service)
- Giải pháp logic được thiết kế để thúc đẩy các nguồn tài nguyên của doanh nghiệp.Giải pháp logic này được xây dựng sau khi các giải pháp trung lập ban đầu đượcphân tách Nó thống nhất với các dịch vụ trung lập Giải pháp này thường tạo cở
sở cho dịch vụ (Non-Agnostic service )
- Việc thực thi giải pháp logic có bị ràng buộc cứng không Với những giải pháplogic ràng buộc cứng sẽ không được xem như tài nguyên của doanh nghiệp Bất kểbản chất của giải pháp logic thể hiện giống như tài nguyên của doanh nghiệp,nhưng có những giới hạn, ràng buộc trong sẽ làm việc đóng gói hạn chế khônghiệu quả
Áp dụng các tiêu chí ở trên để xác định các giải pháp logic phù hợp để đóng gói,các giải pháp logic không phù hợp sẽ được lọc ra (hình 6)
Hình 6 Tập hợp các giải pháp logic tương ứng với các vấn đề nhỏ (thể hiện các hìnhkhối), những hình khối được tô đậm là những giải pháp logic được lọc ra để đóng gói.Kiến thức quan trọng trong thiết kế kiến trúc hướng dịch vụ đó là xác định đượcđúng giải pháp logic nào thích hợp để đóng gói dịch vụ Nếu như các nguyên tắc thiết kếban đầu trong thiết kế hướng dịch vụ không được áp dụng chuẩn, việc đóng gói các giảipháp logic sẽ khó khăn
Trang 11Việc ứng dụng Pattern này chỉ để xác định và lọc ra các giải pháp logic (sẽ ápdụng trong Pattern service definition ở bước sau) Các giải pháp logic được xem là phùhợp cho đóng gói dịch vụ sẽ được đưa ra để ứng dụng tiếp sau đó
1.1.4 Ảnh hưởng:
Việc đóng gói giải pháp logic như một dịch vụ cần xem xét về các chính sáchquản trị và thiết kế bổ sung thêm vào
1.1.5 Ví dụ:
Đơn vị giải pháp logic Tính phù hơp để đóng gói
Giải pháp 1 – dây chuyền được kiểm tra
bằng tay
Không phù hợp, bởi giài pháp này là cácbước thực hiện bằng tay
Giải pháp 2 – dây chuyền được ghi lại tự
động như là một phần của hệ thống kiểm
soát hàng hóa
Phù hợp, vì các giải pháp này thực hiện tựđộng,hữu ích cho doanh nghiệp, không bịgiới hạn
Giải pháp 3 - Sau khi ghi lại thông tin
hàng hóa, hệ thống sẽ thực hiện một kiểm
tra chéo cho các đơn đặt hàng lại, tiêu chí
tìm kiếm đưa ra ở đây là số hiệu hàng hóa
Phù hợp, vì các giải pháp này thực hiện tựđộng,hữu ích cho doanh nghiệp, không bịgiới hạn
Giải pháp 4 – đơn đặt hàng lại tiếp theo
trong hàng đợi được lấy ra từ hệ thống
quản lý đơn hàng (hồ sơ về hàng hóa) và
đánh dấu xác nhận
Phù hợp, vì các giải pháp này thực hiện tựđộng,hữu ích cho doanh nghiệp, không bịgiới hạn
Giải pháp 5 - chuỗi này được vận chuyển
1 Service Definition Pattern
Việc xác định các giải pháp logic phù hợp để đóng gói dịch vụ, gom nhóm vàphân phối các giải pháp logic theo các chức năng nhất định là các bước thiết lập các biêndịch vụ cơ bản Đường biên này thực sự quan trọng khi một loạt các dịch vụ được tậphợp và liên quan tới nhau
Để xác định đường biên phù hợp nhất cho một dịch vụ cần căn cứ vào chức năng
mà dịch vụ đó thực hiện Đường biên xác định chức năng nào thực hiện bên trong và bênngoài dịch vụ Pattern định nghĩa dịch vụ giúp đưa ra tiêu chí để xác định dịch vụ nào làagnostic, dịch vụ nào là non-agnostic, giúp tổ chức dịch vụ agnostic theo từng khả năngriêng biệt
Trang 12Hình 7 Service definition pattern - Mẫu định nghĩa dịch vụ tổ chức dịch vụ logic theo từng phạm vi cụ thể từ đó thiết lập đường biên dịch vụ
2.1 Agnostic Context
2.1.1 Vấn đề:
Một giải pháp logic đưa ra để giải quyết một mối quan tâm (vấn đề) đơn lẻ thường
sẽ gồm những nguyên lý, các nguyên lý này không chỉ ứng dụng để giải quyết một mốiquan tâm đặt ra, nó cũng có thể phù hợp để giải quyết các vấn đề quan tâm khác Gomnhóm các tính năng (nguyên lý) đa ứng dụng (giải quyết được nhiều mối quan tâm) vàđơn ứng dụng với nhau vào thành một đơn vị logíc sẽ hạn chế hoặc thậm chí loại trừđược khả năng sử dụng lại các giải pháp logic (hình 8)
Hình 8 Các đơn vị giải pháp logic sẽ được xây dựng để giải quyết các mối quan tâm(thu được khi phân tách từ vấn đề lớn) Các đơn vị 1, 3 và 6 tương ứng là các giảipháp logic chứa đa tính năng (ngoài tính năng giải quyết mối quan tâm tương ứng)bên trong nó còn tính năng đơn có giải quyết mối quan tâm khác Giải pháp logic vớitính năng đơn (non-agnostic) giải quyết duy nhất một mối quan tâm được thể hiệnbằng các hình sọc chéo
Trang 132.1.2 Giải pháp:
Các giải pháp logic trung lập có được từ các phân tách ở trên sẽ được tập hợp vào
để giải quyết vấn đề lớn khác Một hay nhiều dịch vụ với các thuộc tính chức năng đaứng dụng (trung lập) cụ thể sẽ được xác định sau đó dựa vào phạm vi của giải pháp cungcấp
Hình 9 Áp dụng Pattern này dẫn đến một tập con các giải pháp logíc Tập con này sẽ tiếptục được phân tách và phân phối vào trong các dịch vụ với các thuộc tính (phạm vi) trunglập riêng
2.1.4 Ảnh hưởng:
Ứng dụng Pattern này sẽ gia tăng độ phức tạp trong thiết kế và các vấn đề liênquan đến quản trị (Việc quản trị các dịch vụ trung lập sẽ phức tạp hơn so với giải pháplogic dành riêng cho một mối quan tâm đơn lẻ)
2.1.5 Ví dụ:
Trang 14nào có thể ghi lại tóm tắt
thông tin hàng hóa trong
dây chuyền
chuyền được ghi lại tựđộng như là một phầncủa hệ thống kiểm soáthàng hóa
nào dây chuyền có thể
tham chiếu tới bất kỳ một
đơn đặt hàng lại tương
ứng?
Giải pháp 3 - Sau khi ghilại thông tin hàng hóa,
hệ thống sẽ thực hiệnmột kiểm tra chéo chocác đơn đặt hàng lại, tiêuchí tìm kiếm đưa ra ởđây là số hiệu hàng hóa
- Thực hiện câu truy vấn từ khóa
là số mô hình gán vào thông tindây chuyền nhập ở trên để xácđịnh các đơn đặt hàng lại
- Nếu có dữ liệu, câu truy vấn sẽtrả về một danh sách các đơn đặthàng lại chưa xử lý sắp xếp theongày
- Nếu không có dữ liệu, chấmdứt quá trình
Quan tâm 4 - Làm thế
nào để dây chuyền có thể
xác định được đâu là đơn
đặt hàng lại?
Giải pháp 4 – đơn đặthàng lại tiếp theo tronghàng đợi được lấy ra từ
hệ thống quản lý đơnhàng (hồ sơ về hànghóa) và đánh dấu xácnhận
- Truy vấn dữ liệu các đơn đặthàng lại, xét đơn đặt hàng lạiđầu tiên (ngày xa nhất) (sau đólần lượt với các đơn đặt hàng lại
- Thay đổi trạng thái đơn hàng
từ "đặt hàng lại" thành "đã hoànthành"
- Lưu lại thông tin bản ghi vừasửa
Sau khi xem xét, đánh giá các hành động trong các giải pháp trên Các hành độngtrong các giải pháp sẽ được phân loại để tái sử dụng lại (hình thành cơ sở các thuộc tínhchức năng trung lập), các hành động trong các giải pháp trên được tổ chức, gom nhómthành các agnostic service contexts sau (hình 10):
Inventory Processing
- Tạo một bản ghi tóm tắt hàng hóa mới
- Nhập thông tin dây chuyền, thông tin dây chuyền nhập vào sẽ được gán thêm số
mô hình xác định trước
- Lưu lại bản ghi