Kiến trúc SOA và giải pháp của Oracle
TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
…………… ……………
BÁO CÁO NCKH
ĐỀ TÀI:
NGHIÊN CỨU KIẾN TRÚC HƯỚNG DỊCH VỤ
(SERVICE-ORIENTED ARCHITECTURE)
VÀ GIẢI PHÁP CỦA ORACLE
MỤC LỤC
Chương 1: Tổng quan về SOA
1.1.Thực trạng hiện tại và một số mô hình trong hệ thống phân tán
1.1.1. Thực trạng
1.1.2. Một số mô hình trong hệ thống phân tán
1.2.Giới thiệu kiến trúc hướng dich vụ SOA
1.2.1. Kiến trúc hướng dịch vụ là gì?
1.2.2. Các nguyên tắc chính của hệ thống SOA
Khoá luận tốt nghiệp
1
Kiến trúc SOA và giải pháp của Oracle
1.2.3. Các tính chất của hệ thống SOA
1.2.4. Lợi ích của SOA
1.2.5. Kiến trúc phân tầng chi tiết của SOA
1.2.6. Một số mô hình triển khai SOA
1.3.Xây dựng một hệ thống SOA
4.1. Chu trình phát triển của một hệ thống SOA
4.2. Các kỹ thuật hỗ trợ
4.3. Dịch vụ và nguyên tắc thiết kế một dịch vụ
1.4.Vấn đề bảo mật trong SOA
4.1. Đặt vấn đề
4.2. Giới thiệu một số kiến trúc hướng dịch vụ
nay của CNTT là các tổ chức, các cơ sở doanh nghiệp. Với sự phát triển của Internet và
với xu thế hội nhập chung của toàn thế giới, các tổ chức, doanh nghiệp cần bắt tay, phối
hợp hoạt động và chia sẻ tài nguyên với nhau để nâng cao hiệu quả hoạt động. Khi đó
các sản phẩm sẽ ngày càng phức tạp, kéo theo chi phí sản xuất, quản lý và bảo trì. Đặc
biệt, ngành công nghệ phần mềm còn đối mặt với vấn đề hóc búa là bảo mật, và tái sử
dụng lại các hệ thống sẵn có, vấn đề không tương thích về hệ thống giữa các tổ chức
hợp tác với nhau.
Để giải quyết vấn đề trên người ta đã đưa ra nhiều giải pháp và hiện nay, một giải
pháp đang được quan tâm là kiến trúc hướng dịch vụ (Service Oriented Architecture –
SOA).
Các ứng dụng khi sử dụng dịch vụ này chỉ cần gửi thông điệp yêu cầu đến một dịch
vụ (service) khác và chờ nhận kết quả từ dịch vụ đó và dịch vụ này không phụ thuộc
vào môi trường hệ điều hành, ví dụ như các dịch vụ WEB hiện nay chẳng hạn, nó thể
hiện rất rõ ý tưởng này. Công nghệ SOA giúp chúng ta trong việc phát triển các
services này rất hiệu quả. Hiện nay nhiều công ty phần mềm lớn trên thế giới đều quan
tâm phát triển hệ thống này ví dụ như Oracle, IBM, Microsoft,… Mong muốn tìm hiểu
một cách khái quát về công nghệ SOA và những lợi ích đạt được của kiến trúc này
chính là lý do em thực hiện đề tài:
Kiến trúc hướng dịch vụ
(Service Oriented Architecture - SOA)
và giải pháp của Oracle.
Khoá luận tốt nghiệp
4
Kiến trúc SOA và giải pháp của Oracle
Mục tiêu của đề tài:
Gồm những vấn đề sau:
1. Đề tài tập trung vào việc nghiên cứu một cách tổng quan về SOA
- Nghiên cứu cơ sở lý thuyết của kiến trúc SOA, các tính chất và lợi ích của kiến
trúc này.
- Tìm hiểu những vấn đề liên quan đến xây dựng hệ thống SOA và các nguyên tắc
đang được nhiều tổ chức quan tâm đầu tư với mức chi phí cao dẫn đầu hiện nay cho các
dự án dạng này.
Vấn đề lập trình dư thừa và tái sử dụng. Chẳng hạn, một doanh nghiệp có nhiều chi
nhánh khác nhau, mỗi chi nhánh lại có một hệ thống tách biệt và xây dựng ở những thời
điểm khác nhau và cần kết nối lại với nhau sẽ không tránh khỏi việc sử dụng dư thừa tài
nguyên, dữ liệu không đồng nhất…
Hầu như mọi tổ chức đều phải đối mặt với vấn đề tích hợp vì nhiều lí do như mở
rộng thêm chi nhánh, thêm hệ thống bạn hàng mới, hoặc là cần kết nối các hệ thống có
sẵn… Vấn đề kéo theo là chi phí thay đổi mã nguồn cũ, kiểm thử, bảo trì…
Thực trạng này tạo thêm một áp lực nặng nề với các doanh nghiệp và tổ chức, các
nhà phát triển phần mềm.
Khoá luận tốt nghiệp
6
Kiến trúc SOA và giải pháp của Oracle
1.1.2. Một số mô hình trong hệ thống phân tán
Ba kiến trúc phân tán phổ biến nhất hiện nay là DCOM, CORBA và EJB.
Các kiến trúc này là sự mở rộng của hệ thống hướng đối tượng bằng cách cho phép
phân tán các đối tượng trên mạng. Đối tượng đó có thể không nằm trong vùng không
gian ứng dụng, hoặc nằm trên một máy khác không chứa ứng dụng nhưng vẫn được
tham chiếu sử dụng như một phần ứng dụng.
• CORBA - Common Object Request Broker Architecture
CORBA được định nghĩa bởi Object Managerment Group (OMG), là một
kiến trúc phân tán mở, độc lập nền tảng và độc lập ngôn ngữ.
CORBA Common Model (CCM) định nghĩa ra qui trình thiết kế, phát
triển, đóng gói, triển khai và thực thi các thành phần phân tán. CCM định nghĩa
khái niệm Ports cho các thành tố. Các Ports này được dùng để kết nối các thành
phần có sẵn với nhau, tạo các hệ thống phân tán phức tạp hơn.
Ưu điểm của CORBA: có thể thoả mãn mọi ngôn ngữ, nền tảng phần cứng,
giao thức mạng và công nghệ để phát triển CORBA.
Nhược điểm: là ngôn ngữ lập trình cấp thấp, khó học và cần đội ngũ phát
phải giống nhau.
Những chuẩn trên đa phần là những chuẩn đóng. Ví dụ: đối tượng java trong mô
hình EJB chỉ trao đổi được với các đối tượng cùng mô hình và không thể trao đổi được
với các đối tượng DCOM.
Lượng thông tin trong mỗi lần giao dịch là ít, được thực hiện nhiều lần vì vậy dẫn
đến chiếm dụng băng thông sử dụng và thời gian đáp trả dữ liệu nhanh.
Một vấn đề đặt ra là làm thế nào để các hệ thống phân tán phát triển trên các công
nghệ khác nhau có thể giao tiếp được với nhau? Cách tiếp cận mới này đáp ứng được
yêu cầu đó. Đó là cách tiếp cận theo kiểu “kiến trúc hướng dịch vụ.”
Khoá luận tốt nghiệp
9
Kiến trúc SOA và giải pháp của Oracle
1.2. Giới thiệu kiến trúc hướng dich vụ SOA
1.2.1. Kiến trúc hướng dịch vụ là gì
Kiến trúc hướng dịch vụ (Service Oriented Architecture) là một hướng tiếp cận với
việc thiết kế và tích hợp các phần mềm, chức năng hệ thống theo dạng module, trong đó
mỗi module đóng vai trò là một “dịch vụ có tính loose coupling” và có khả năng truy
cập thông qua môi trường mạng. Một cách đơn giản thì một hệ thống SOA là tập hợp
các dịch vụ được chuẩn hoá trên mạng, trao đổi với nhau trong ngữ cảnh một tiến trình
nghiệp vụ.
SOA có ba đối tượng chính minh hoạ trong hình sau:
2. Hình 3: Sơ đồ cộng tác trong SOA hiện nay
Nhà cung cấp dịch vụ (Service Provider) cần cung cấp thông tin về những dịch vụ
của mình trong một dịch vụ lưu trữ thông tin dịch vụ (Service Registry). Người sử dụng
(Service Consumer) tìm kiếm thông tin về dịch vụ cần thiết trong Service Regisstry sau
đó xây dựng kênh giao tiếp với nhà cung cấp.
Khoá luận tốt nghiệp
10
Kiến trúc SOA và giải pháp của Oracle
SOA cung cấp các giải pháp để giải quyết các vấn đề tồn tại của các hệ thống hiện
• Các dịch vụ chia sẻ lược đồ
Các dịch vụ nên cung cấp thành phần giao tiếp (Interface) của nó ra bên ngoài và
hỗ trợ chia sẻ các cấu trúc thông tin, các ràng buộc dữ liệu thông qua các lược đồ dữ
liệu (Schema) chuẩn. Như thế hệ thống sẽ có tính dễ liên kết và dễ dàng mở rộng
• Tính tương thích của các dịch vụ dựa trên chính sách
Một dịch vụ muốn tương tác với các dịch vụ khác thì phải thoả mãn các chính
sách (Policy), các yêu cầu (Requirements) của dịch vụ đó như: mã hoá, bảo mật. Mỗi
dịch vụ phải cung cấp công khai các chính sách và các yêu cầu bảo mật của mình.
1.2.3. Các tính chất của hệ thống SOA
• Loose coupling
Vấn đề kết nối ám chỉ các ràng buộc giữa một số module với nhau. Có hai loại kết
nối là rời (loose) và chặt (tigh). Các module có tính loose coupling có một số ràng buộc
được mô tả rõ ràng, trong khi các module có tính tigh coupling thì lại có một số ràng
buộc không được biết trước. Hầu hết các phần mềm đều hướng đến tính loose coupling.
SOA sử dụng loose coupling thông qua việc sử dụng hợp đồng và liên kết (contract
and binding). Một người sử dụng truy vấn đến nơi lưu trữ và cung cấp thông tin dịch vụ
(Registry) để lấy thông tin về loại dịch vụ cần sử dụng. Registry sẽ trả về mọi dịch vụ
thoả mãn tiêu chuẩn tìm kiếm. Từ đó người dùng chỉ việc chọn dịch vụ mình cần, thực
thi phương thức trên đó theo mô tả để nhận dịch vụ từ Registry. Bên sử dụng dịch vụ
không cần phụ thuộc trực tiếp vào tin cài đặt của dịch vụ mà chỉ dựa trên hợp đồng dịch
vụ đó hỗ trợ.
Tính loose coupling giúp gỡ bỏ những ràng buộc điều khiển giữa những hệ thống
đầu cuối. Mỗi hệ thống có thể tự quản lý độc lập làm tăng hiệu suất, khả năng mở rộng
và khả năng đáp ứng cao. Loose coupling làm tách biệt giữa bên cung cấp và bên sử
dụng, nhưng nó đòi hỏi các interface phải theo một chuẩn và cần một thành phần trung
gian quản lý để trung chuyển yêu cầu giữa các hệ thống đầu cuối
Khoá luận tốt nghiệp
12
Kiến trúc SOA và giải pháp của Oracle
• Tái sử dụng dịch vụ
gọi là interoperable chứa trong nó một giao thức và một định dạng dữ liệu mà mỗi
client kết nối đến nó đều hiểu. Interoperability đạt được bằng cách hỗ trợ các giao thức
và định dạng dữ liệu chuẩn của dịch vụ và client Hệ thống ánh xạ mỗi tính chất và ngôn
ngữ qua một đặc tả trung gian. Đặc tả này sẽ chịu trách nhiệm ánh xạ giữa định dạng dữ
liệu khả kết (interoperable) đến định dạng của dữ liệu tuỳ thuộc vào hệ thống. Ví dụ
Wrb Service là một đặc tả trung gian cho giao tiếp giữa các hệ thống JAX-RPC, JAXM
chuyển các đối tượng dạng Java thành SOAP.
• Tự động dò tìm và ràng buộc động
SOA hỗ trợ khái niệm dò tìm dịch vụ (Service discovery). Một người sử dụng
cần một dịch vụ nào đó có thể tìm kiếm dịch vụ theo những tiêu chuẩn khi cần. Người
sử dụng dịch vụ chỉ cần hỏi một Registry về dịch vụ thoả mãn yêu cầu của họ.
Ví dụ, một hệ thống chuyển khoản (Consumer) yêu cầu Registry tìm kiếm tất cả
các dịch vụ có khả năng kiểm tra thẻ tín dụng. Registry trả về một tập các thông tin thoả
mãn yêu cầu. Các entry chứa thông tin về dịch vụ bao gồm cả phí dịch vụ. Bên sử dụng
sẽ chọn một dịch vụ có chi phí thấp nhất và kết nối đến nhà cung cấp dịch vụ đó dựa
trên thông tin của entry mà registry tìm được để yêu cầu sử dụng dịch vụ kiểm tra thẻ
tín dụng. Trong phần mô tả dịch vụ kèm theo đã có tất cả các tham số cần thiết để thực
thi dịch vụ. Bên sử dụng chỉ cần định dạng dữ liệu cần thiết theo mô tả của nhà cung
cấp dịch vụ và gửi đi. Nhà cung cấp sẽ thực thi kiểm tra thẻ tín dụng và trả về kết quả là
một thông điệp theo đúng định dạng như trong phần mô tả dịch vụ. Mối ràng buộc duy
nhất giữa nhà cung cấp và người sử dụng là bản hợp đồng được cung cấp bởi Registry
trung gian. Mối ràng buộc này là ràng buộc trong thời gian chạy chứ không phải là ràng
buộc trong thời gian biên dị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ạy.
Với SOA, bên sử dụng không cần biết định dạng của thông điệp yêu cầu cũng
như thông điệp trả về, hay địa chỉ dịch vụ khi gọi đến. Bên sử dụng triệu gọi một cách
động.
• Tự hồi phục
Khoá luận tốt nghiệp
14
15
Kiến trúc SOA và giải pháp của Oracle
SOA mang đến khả năng tổng hợp một lớp các ứng dụng mới bằng cách kết hợp
chức năng từ các hệ thống có sẵn, cung cấp cho người cuối những chức năng liên kết.
Tức là một số tiến trình cũ có khả năng được kết hợp với nhau bên trong một cổng
thông tin (portal) giúp cho người dùng có thể truy cập một lần mà vẫn có thể có hàng
loạt thông tin về các sản phẩm của các doanh nghiệp. Với SOA, một ứng dụng tổng hợp
có thể được tổng hợp dễ dàng bất kể sự khác nhau về địa lý hoặc công nghệ phát triển
dịch vụ đó. Điều này cho phép doanh nghiệp phản ứng nhanh theo yêu cầu, giảm chi
phí và tăng hiệu quả kinh doanh.
• Tăng tính linh hoạt và triển khai cài đặt nhờ tính loose coupling
Tính loose coupling đem lại lợi ích cho SOA là phía triệu gọi dịch vụ không cần
quan tâm đến địa chỉ hay công nghệ cài đặt dịch vụ. Việc triệu gọi dịch vụ thông qua
một giao diện chuẩn nên giúp cho các lập trình viên tránh được việc phải lặp lại các
công việc tạo mới các service có khả năng hiểu được mọi công nghệ sử dụng trong cùng
một hệ thống.
Lợi ích thứ hai mà Loose coupling đem lại là với một hệ thống SOA, các doanh
nghiệp dễ dàng cung cấp các dịch vụ ra bên ngoài cho một đối tác nào đó sử dụng. Đối
tác đó không cần biết cách thức cài đặt và công nghệ của dịch vụ như thế nào. Tương
tự, nếu đối tác đó cũng cài đặt hệ thống SOA thì việc tích hợp và sử dụng các dịch vụ
cũng dễ dàng hơn nhiều.
Cuối cùng, tính loose coupling tăng khả năng triển khai. Chỉ cần bọc những thành
phần sử dụng interface ứng dụng lại thành một dịch vụ, ta đã có một thành phần dịch vụ
độc lập trong hệ thống SOA như những dịch vụ khác.
• Thích ứng với những thay đổi trong tương lai
• Hỗ trợ đa thiết bị và đa nền tảng
SOA cung cấp một tầng giao tiếp trừu tượng từ các nền tảng bên dưới. Điều này
cho phép hỗ trợ nhiều loại thiết bị đầu cuối khác nhau như các Browser, thiết bị di động
như điện thoại, pager, PDA… sử dụng cùng một chức năng mà vẫn có thông tin trả về
tuỳ theo dạng thiết bị. Tính chất độc lập về công nghệ này của SOA tiết kiệm rất nhiều