Quan niệm này có thể được diễn giải một cách đơn giản: các nguồn tính toán khổng lồ như các phần cứng máy chủ, phần mềm, và các dịch vụ chương trình ứng dụng, ..., sẽ nằm tại các máy chủ
Trang 1Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
TRƯỜNG ĐẠI HỌC CNTT & TT
Nguyễn Thương Huyền
KIẾN TRÚC HƯỚNG DỊCH VỤ (SOA) VÀ ỨNG DỤNG
TRONG ĐIỆN TOÁN ĐÁM MÂY
Chuyên ngành: Khoa học máy tính
Trang 2Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
luận văn là bản thân tôi tự tìm hiểu và nghiên cứu, dưới sự hướng dẫn tận tình, khoa
học của thầy giáo Đoàn Văn Ban
Các tài liệu, số liệu tham khảo được trích dẫn đầy đủ nguồn gốc Tôi xin chịu
trách nhiệm trước pháp luật lời cam đoan của mình
LỜI CẢM ƠN
Tôi trân trọng cảm ơn PGS TS Đoàn Văn Ban, người thầy đã trực tiếp tận
tình hướng dẫn tôi trong suốt quá trình học tập và làm luận văn, đồng thời tôi xin trân trọng cảm ơn các thầy cô trong Khoa Công nghệ thông tin và truyền thông, Trường Đại học Công nghệ thông tin, Trường Đại học Thái Nguyên đã tạo điều kiện thuận lợi, giúp tôi hoàn thành luận văn này
Tác giả
Trang 3MỤC LỤC
LỜI CAM ĐOAN
MỤC LỤC i
GIẢI THÍCH THUẬT NGỮ iii
DANH MỤC CÁC HÌNH vii
MỞ ĐẦU 1
CHƯƠNG 1: ĐIỆN TOÁN ĐÁM MÂY 3
1.1 Giới thiệu chung 3
1.2 Mô hình kiến trúc tổng quát 5
1.3 Các thành phần của điện toán đám mây 6
1.4 Các tầng kiến trúc của điện toán đám mây 8
1.5 Một số mô hình điện toán đám mây 10
1.5.1 Mô hình kiến trúc điện toán đám mây của IBM 10
1.5.2 Amazon Web Services 11
1.6 Điện toán đám mây - hạ tầng cơ sở và ứng dụng 14
1.7 Phân tích ưu và nhược điểm của điện toán đám mây 16
1.7.1 Các lợi ích chính của điện toán đám mây 16
1.7.2 Các hạn chế của điện toán đám mây 18
1.8 Kết luận 19
CHƯƠNG 2: KIẾN TRÚC HƯỚNG DỊCH VỤ 20
2.1 Giới thiệu về kiến trúc hướng dịch vụ 20
2.1.1 Kiến trúc hướng dịch vụ là gì ? 20
2.1.2 Bốn nguyên tắc chính của hệ thống SOA 22
2.1.3 Các tính chất của một hệ thống SOA 23
2.1.4 Lợi ích của SOA 30
2.1.5 Một số mô hình triển khai SOA 30
Trang 4Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
2.1.6 Kiến trúc phân tầng chi tiết của SOA 35
2.2 Ứng dụng “SOA SUITE” 38
2.2.1 Giới thiệu 38
2.2.2 ServiceBus 39
2.2.3 BpelEngine 49
2.3 Kết luận 57
CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG SỬ DỤNG SOA 58
3.1 Các bước thực hiện trong chu kì sống SOA 58
3.1.1 Vòng đời hệ thống SOA 59
3.1.2 Các pha cơ bản xây dựng hệ thống SOA 59
3.2 Bài toán bán hàng qua mạng sử dụng SOA 61
3.3 Phân tích và thiết kế hệ thống 61
3.3.1 Mô tả bài toán 61
3.3.2 Biểu đồ Use case của hệ thống 62
3.3.3 Biểu đồ tuần tự cho hoạt động mua hàng 63
3.3.4 Biểu đồ luồng dữ liệu (diagram) 64
3.3.5 Biểu đồ cơ sở dữ liệu 64
3.3.6 Giao diện chương trình 66
3.4 Kết luận 68
KẾT LUẬN VÀ ĐỀ NGHỊ 70
TÀI LIỆU THAM KHẢO 71
Trang 5GIẢI THÍCH THUẬT NGỮ
ngoài hệ thống tương tác với hệ thống
Asynchronous
Kỹ thuật xây dựng ứng dụng Web với sự phối hợp một số công nghệ XHTML, CSS,
XMLHttpRequest,…
Application
Chief Information
Kiểu theo tầng được dùng để miêu tả cách trình bày các tài liệu viết bằng ngôn ngữ HTML, XHTML, XML,
Dynamic Hyper Text
Document Object Model DOM
Mô hình đối tượng tài liệu là một giao diện lập trình ứng dụng độc lập với hệ điều hành
Trang 6Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
Thư viện lập trình cho phép Javascript trong trang Web tương tác với Java trên máy chủ
Hyper Text Markup
Organizations to
promote standards of
structured information
OASIS Tổ chức quốc tế xúc tiến các tiêu chuẩn
thông tin có cấu trúc
Trang 7Programming
Portable Document
Cổng giao tiếp điện tử Portal Cổng giao tiếp điện tử tích hợp thông tin
và dịch vụ
Hệ quản trị cơ sở dữ liệu QTCSDL Hệ quản trị cơ sở dữ liệu
Really Simple
Chuẩn định dạng tài liệu dựa trên XML cho phép tra cứu thông tin tóm lƣợc trong một đoạn dữ liệu ngắn gọn
Service Oriented
Simple Object Access
Giao thức truy nhập đối tƣợng đơn giản
Structured Query
Universal Description,
Discovery, and
Integration
Trang 8Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
Extended Hyper Text
eXtensible Markup
Extensible Stylesheet
Language
Transformations
Web Services Business
Process Execution
Language
BPEL
Ngôn ngữ thực hiện qui trình kinh doanh
WS
Trang 9DANH MỤC CÁC HÌNH
Hình 1.1 Mô hình “Điện toán đám mây” Error! Bookmark not defined Hình 1.2 Mô hình kiến trúc điện toán đám mây Error! Bookmark not defined Hình 1.3 Các thành phần của điện toán đám mây Error! Bookmark not defined Hình 1.4 Cơ sở hạ tầng các tầng của điện toán đám mây Error! Bookmark not defined
Hình 1.5 Cơ sở hạ tầng điện toán đám mây hỗ trợ để học viện có thể phân phối các giải pháp phần mềm như là các
dịch vụ Error! Bookmark not defined
Hình 1.6 Mẫu kiến trúc của máy chủ ảo 2 lớp cho các ứng dụng dựa trên đám mây 11
Hình 1.7 Tính toán “đám mây” di trú tài nguyên trên Internet Error! Bookmark not defined Hình 1.8 Ảo hóa và sử dụng tài nguyên Error! Bookmark not defined Hình 1.9 Các tầng của tính toán “đám mây” Error! Bookmark not defined Hình 2.1.1 Sơ đồ cộng tác trong SOA Error! Bookmark not defined Hình 2.1.2 Tính chất loose-coupling Error! Bookmark not defined Hình 2.1.3 Các đối tượng hạt mịn (fine-grained) Error! Bookmark not defined Hình 2.1.4 Các đối tượng hạt thô (coarse-grained) Error! Bookmark not defined Hình 2.1.5 Các mức độ mịn (granularity) Error! Bookmark not defined Hình 2.1.6 Mô hình service registry Error! Bookmark not defined Hình 2.1.7 Mô hình service broker Error! Bookmark not defined Hình 2.1.8 Mô hình service bus Error! Bookmark not defined Hình 2.1.9 Mô hình service bus phân tán Error! Bookmark not defined Hình 2.1.10 Kiến trúc phân tầng của hệ thống SOA [3] Error! Bookmark not defined Hình 2.2.1 Các thành phần của SOASuite Error! Bookmark not defined Hình 2.2.2 Môi trường trao đổi thông điệp SOAP của serviceBUS Error! Bookmark not defined
Trang 10Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
Hình 2.2.3 Liến kết giữa ServiceBus và WSE Messaging [9] Error! Bookmark not defined Hình 2.2.4 Qui trình xử lý thông điệp của serviceBUS Error! Bookmark not defined Hình 2.2.5 Sơ đồ kiến trúc của BpelEngine Error! Bookmark not defined Hình 2.2.6 Tạo các đối tượng triển khai hoạt động Error! Bookmark not defined Hình 2.2.7 Sơ đồ điều phối thông điệp của engine Error! Bookmark not defined Hình 2.2.8 Sơ đồ phân cấp của các xử lý Error! Bookmark not defined Hình 3.1 Vòng đời hệ thống SOA Error! Bookmark not defined Hình 3.2 Mô hình bài toán bán hàng qua mạng Error! Bookmark not defined Hình 3.3 Sơ đồ use case của hệ thống Error! Bookmark not defined Hình 3.4 Biểu đồ tuần tự của hoạt động mua hàng Error! Bookmark not defined Hình 3.5 Biểu đồ luồng dữ liệu Error! Bookmark not defined Hình 3.6 Cơ sở dữ liệu admin Error! Bookmark not defined Hình 3.7 Cơ sở dữ liệu khách hàng Error! Bookmark not defined Hình 3.8 Cơ sở dữ liệu đặt hàng Error! Bookmark not defined Hình 3.9 Cơ sở dữ liệu sản phẩm Error! Bookmark not defined Hình 3.10 Giao diện chính của chương trình Error! Bookmark not defined Hình 3.11 Giao diện đăng ký Error! Bookmark not defined Hình 3.12 Giao diện giỏ hàng Error! Bookmark not defined Hình 3.13 Hóa đơn Error! Bookmark not defined
Trang 11MỞ ĐẦU
“Điện toán đám mây” là sự kết hợp nhiều công nghệ hiện có như: Kiến trúc hướng dịch vụ (Service Oriented Architecture - SOA), ảo hóa, điện toán tự trị với những ý tưởng mới để tạo ra một giải pháp công nghệ thông tin đầy đủ “Điện toán đám mây” (cloud computing) là một giải pháp bao gồm tất cả, trong đó các tài nguyên điện toán như phần cứng, phần mềm, mạng, lưu trữ, được cung cấp nhanh chóng cho người dùng theo họ yêu cầu Các nguồn tài nguyên hoặc các dịch vụ được phân phát có thể quản trị để đảm bảo khả năng sẵn sàng cao, an ninh và chất lượng Yếu tố chính cho các giải pháp này là chúng sở hữu khả năng điều chỉnh tăng và giảm, để cho người dùng có được những tài nguyên mà họ cần Các giải pháp “điện toán đám mây” cho phép công nghệ thông tin (CNTT) được cung cấp như một dịch vụ Đối tượng phục vụ chủ yếu hiện 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à 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 đề rất quan trọng 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ụ (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 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 và ứng dụng SOA trong điện toán đám mây, ví dụ như Oracle, IBM, Microsoft,
Luận văn được kết cấu gồm 3 chương với các nội dung chính sau:
Trang 12Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
Chương I: Điện toán đám mây
- Giới thiệu khái quát về điện toán đám mây và ứng dụng
Chương II: Kiến trúc hướng dịch vụ
- Trình bày kiến trúc hướng dịch vụ và ứng dụng trong điện toán đám mây Chương III: Xây dựng ứng dụng sử dụng SOA
phép trưng bày, giới thiệu các loại máy tính và điện thoại đến khách hàng Khách hàng có thể đặt hàng sản phẩm trên website Ở đây bài toán bán hàng qua mạng được xây dựng trên mô hình SOA Service registry
Trang 13CHƯƠNG 1: ĐIỆN TOÁN ĐÁM MÂY 1.1 Giới thiệu chung
Điện toán đám mây (cloud computing), còn gọi là điện toán máy chủ ảo,
là mô hình tính toán sử dụng các công nghệ máy tính và phát triển dựa vào mạng Internet
Thuật ngữ “Điện toán đám mây” ra đời giữa năm 2007 không phải để nói về một trào lưu mới, mà để khái quát lại các hướng phát triển của cơ sở hạ tầng Công nghệ Thông tin (CNTT) vốn đã và đang diễn ra từ những năm qua Quan niệm này
có thể được diễn giải một cách đơn giản: các nguồn tính toán khổng lồ như các phần cứng (máy chủ), phần mềm, và các dịch vụ (chương trình ứng dụng), , sẽ nằm tại các máy chủ ảo (đám mây) trên Internet thay vì trong máy tính gia đình và văn phòng (trên mặt đất) để mọi người kết nối và sử dụng mỗi khi họ cần Nói cách khác, ở mô hình tính toán này, mọi khả năng liên quan đến công nghệ thông tin đều
được cung cấp dưới dạng các “dịch vụ”, cho phép người sử dụng truy cập các dịch
vụ công nghệ thông tin từ một nhà cung cấp nào đó “trong đám mây” mà không cần phải biết về công nghệ đó, cũng như không cần quan tâm đến các cơ sở hạ tầng phục vụ công nghệ đó
Theo tổ chức IEEE, “Điện toán đám mây là hình mẫu trong đó thông tin
được lưu trữ thường trực tại các máy chủ trên Internet và chỉ được lưu trữ tạm thời
ở các máy khách, bao gồm máy tính cá nhân, trung tâm giải trí, máy tính trong doanh nghiệp, các phương tiện máy tính cầm tay, ” [4]
Hình 1.1 Mô hình “Điện toán đám mây”
Trang 14Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
Điện toán đám mây là khái niệm tổng thể bao gồm cả các khái niệm như phần mềm dịch vụ, Web 2.0 và các vấn đề khác xuất hiện gần đây, các xu hướng công nghệ nổi bật, trong đó đề tài chủ yếu của nó là vấn đề dựa vào Internet
để đáp ứng những nhu cầu tính toán của người dùng Ví dụ, dịch vụ Google Apps [20] cung cấp những ứng dụng kinh doanh trực tuyến thông thường, có thể truy nhập từ một trình duyệt web, còn các phần mềm và dữ liệu đều được lưu trữ trên các máy chủ
Với các dịch vụ sẵn có trên Internet, doanh nghiệp không phải mua và duy trì hàng trăm, thậm chí hàng nghìn máy tính cũng như các phần mềm Họ chỉ cần tập trung sản xuất bởi đã có người khác lo cơ sở hạ tầng và công nghệ thay họ Google ủng hộ điện toán đám mây tích cực nhất, bởi hoạt động kinh doanh của họ dựa trên việc phân phối các dịch vụ máy chủ ảo (virtual server) Điện toán đám mây cho phép người dùng tiếp cận đến các tài nguyên tính toán và lưu trữ khối lượng dữ liệu khổng lồ mà không cần biết chúng ở đâu và được cấu hình như thế nào
Tuy nhiên, mặt hạn chế là người dùng sẽ bị phụ thuộc vào công nghệ mà nhà
cung cấp đưa ra cho họ, khiến cho sự linh hoạt và sáng tạo giảm đi Điện toán đám
mây có nguy cơ lặp lại khiếm khuyết của mô hình tính toán cũ: các công ty sở hữu
những hệ thống trung tâm máy tính lớn mainframe (tương tự như cloud) và mọi người sẽ kết nối với chúng qua các trạm Người sử dụng cảm thấy bị gò bó vì chỉ có quyền thực hiện những việc trong phạm vi nhà quản trị cho phép nên không thể bắt kịp cải tiến mới nhất
Nhưng điện toán “đám mây” hiện có tính mở hơn rất nhiều và quan trọng hơn, đây là giải pháp giá rẻ của các doanh nghiệp cũng như sự lựa chọn hàng đầu cho những ai thường xuyên phải đi xa Ngay cả những hãng có năng lực tài chính cũng đánh giá cao xu hướng này, như Coca-Cola gần đây đã ký thỏa thuận đưa tất
cả tài khoản e-mail của họ (khoảng 75.000) lên dịch vụ trực tuyến Microsoft Exchange Online [15]
Trang 151.2 Mô hình kiến trúc tổng quát
Phần lớn hạ tầng cơ sở của điện toán đám mây hiện nay là sự kết hợp của những dịch vụ đáng tin cậy được phân phối thông qua các trung tâm dữ liệu (data center) được xây dựng trên những máy chủ với những cấp độ khác nhau của các công nghệ ảo hóa Những dịch vụ này có thể được truy cập từ bất kỳ đâu trên thế giới, trong đó Đám mây là một điểm truy cập duy nhất cho tất cả các máy tính có nhu cầu của khách hàng Các dịch vụ thương mại cần đáp ứng yêu cầu chất lượng dịch vụ từ phía khách hàng và thông thường đều đưa ra các mức thỏa thuận dịch
vụ Các tiêu chuẩn mở (Open standard) và phần mềm mã nguồn mở (open source software) cũng góp phần phát triển điện toán đám mây
Tất cả các tài nguyên tính toán (phần cứng, phần mềm) được tổ chức thành danh mục các dịch vụ (Services Catalog) Các dịch vụ này được cung cấp lên mạng Internet ở các Server trong các đám mây thông qua các công cụ cung cấp dịch vụ (Provisioning Tool) Các dịch vụ được tương tác với người sử dụng thông qua các phần giao diện tương tác người sử dụng (User Interaction Interface) Tất cả các dịch
vụ được quản lý bởi Quản lý hệ thống (Systems Management) và được theo dõi bởi
hệ thống giám sát (Monitoring & Metering) [2]
Theo kiến trúc của điện toán đám mây, có thể xử lý theo lô (batch processing) nhiều công việc theo truyền thống được tải xuống kết hợp với tính toán lưới:
Hình 1.2 Mô hình kiến trúc điện toán đám mây
Trang 16Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
- Lưu trữ đám mây (Cloud storage): Mô hình lưu trữ dữ liệu trên mạng các
máy tính, trong đó dữ liệu được lưu trữ ở nhiều server ảo (multiple virtual servers)
- Các dịch vụ đám mây (Cloud services): Dịch vụ Web được cung cấp
thông qua điện toán đám mây
1.3 Các thành phần của điện toán đám mây
Điện toán đám mây là cách thức chuyển đổi các chương trình ứng dụng diện rộng theo kiến trúc và phân phối các dịch vụ Trong nhiều thập kỷ qua, các hãng CNTT đã tập nhiều công sức, thời gian và các tài nguyên để xây dựng cơ sở hạ tầng
và cung cấp chúng để dành thế cạnh tranh Phần lớn các trường hợp theo cách tiếp cận đó dẫn đến kết quả:
- Những vùng lớn các khả năng tính toán không được sử dụng hết công
suất
- Trong nhiều trường hợp phải tận dụng những máy tính không đủ mạnh để
làm các máy chủ, trong khi rất nhiều máy chủ mạnh lại không được sử dụng hết công suất
- Chi phí cho các ứng dụng giải quyết các bài toán đặt ra trong thực tế là
rất cao, tốn kém (toàn bộ chi phí là của chủ nhân)
- Với điện toán đám mây, những khả năng tính toán vượt trội được cung
cấp cho khách hàng đúng theo yêu cầu với một chi phí thấp nhất có thể
Điện toán đám mây được phát triển để khắc phục những nhược điểm trên Điện toán đám mây gồm 6 thành phần chính liên quan với nhau như trong hình sau
Trang 17- Cơ sở hạ tầng (Infrastructure): Cơ sở hạ tầng của điện toán đám mây là phần cứng được cung cấp như là các dịch vụ, nghĩa là được chia sẻ và có thể sử dụng lại dễ dàng Các tài nguyên phần cứng được cung cấp theo các thời gian cụ thể theo yêu cầu Dịch vụ kiểu này giúp cho việc giảm chi phí bảo hành, chi phí sử dụng, …
- Lưu trữ đám mây (Cloud Storage): là khái niệm tách dữ liệu khỏi quá trình xử lý và chúng được lưu trữ ở những vị trí từ xa Lưu trữ đám mây cũng bao gồm cả các dịch vụ CSDL, ví dụ như BigTable của Google, SimpleDB của Amazon…
- Nền tảng đám mây (Cloud Platform): Là dịch vụ cho việc phát triển phần mềm ứng dụng và quản lý các yêu cầu phần cứng, nhu cầu phần mềm Ví dụ nền dịch vụ như Khung ứng Web (Web application frameworks), Web hosting,
- Ứng dụng (Application): Ứng dụng đám mây là một đề xuất về kiến trúc phần mềm sẵn sàng phục vụ, nhằm loại bỏ sự cần thiết phải mua phần mềm, cài đặt, vận hành và duy trì ứng dụng tại máy bàn/thiết bị (desktop/device) của người sử dụng Ứng dụng đám mây loại bỏ được các chi phí/tài nguyên để bảo trì và vận hành các chương trình ứng dụng
- Dịch vụ (Services): Dịch vụ đám mây là một phần độc lập của phần mềm có thể kết hợp với các dịch vụ khác để thực hiện tương tác, kết hợp giữa các máy tính
Hình 1.3 Các thành phần của điện toán đám mây
Trang 18Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
với nhau để thực thi chương trình ứng theo yêu cầu trên mạng Ví dụ các dịch vụ hiện nay như: Simple Queue Service, Google maps, các dịch vụ thanh tóan linh họat trên mạng của Amazon,
- Khách hàng (Client): Khách hàng đám mây là những yêu cầu phần mềm hoặc phần cứng để tận dụng các dịch vụ điện toán đám mây trên mạng Thiết bị cung cấp cho khách hàng có thể là Web browser, PC, laptop hoặc mobile, …
1.4 Các tầng kiến trúc của điện toán đám mây
Theo kiến trúc do Sun đề xuất, điện toán đám mây cung cấp các dịch vụ ở tất
cả các tầng, từ phần cứng tới các phần mềm như trong hình sau
Cơ sở hạ tầng của điện toán đám mây gồm 6 tầng kiến trúc [2]:
1 Các server thực (Physical Servers),
5 Các chương trình ứng dụng và trên cao nhất là các dịch vụ
Hình 1.4 Cơ sở hạ tầng các tầng của điện toán đám mây
Trang 196 Các dịch vụ có thể chia thành 3 lớp chính: Phần mềm dịch vụ (software as a service), nền tảng dịch vụ (platform as a service) và cơ sở hạ tầng dịch vụ (infrastructure as a service) Các lớp này có thể tập hợp thành các tầng kiến trúc khác nhau, có thể chồng chéo, gối nhau
- Phần mềm dịch vụ (Software as a service - SaaS): Tương tự như dịch vụ theo
yêu cầu, một phần mềm có thể thực hiện trên nền đám mây và làm dịch vụ cho nhiều người sử dụng đầu cuối, nhiều khách hàng (các tổ chức ) khác nhau Ví dụ, salesforce.com là SaaS điển hình , ngoài ra phải kể đến Google Apps dịch vụ thư điện tử, xử lý văn bản , … hay force com là những dịch vụ có thể được xem là nền dịch vụ
- Nền tảng dịch vụ (Platform as a service - PaaS): Nền dịch vụ đóng gói tầng
kiến trúc phần mềm và cung cấp nó như là một dịch vụ để xây dựng những dịch vụ
ở mức cao hơn Ở đây, PaaS phụ thuộc vào người cung cấp dịch vụ và người sử dụng dịch vụ Có thể thực hiện các dịch vụ PaaS phụ thuộc vào các phương diện dịch vụ của người sản xuất hoặc khách hàng:
o Một số người có thể tạo ra môi trường tích hợp hệ điều hành OS, các phần mềm trung gian, phần mềm ứng dụng, hoặc phát triển những môi trường cung cấp cho khách hàng phát triển phần mềm giống như một dịch vụ Ví dụ NetBeans™
là môi trường phát triển thích hợp, Sun GlassFish™ Web stack hỗ trợ cho các ngôn ngữ lập trình giống như Perl hoặc Ruby
o Một số người có thể sử dụng PaaS như là các dịch vụ đóng gói thông qua một API Dịch vụ thương mại của PaaS phải kể đến như Google Apps Engine, cung cấp các ứng dụng trên nền cơ sở hạ tầng của Google‟s infrastructure
- Cơ sở hạ tầng dịch vụ (Infrastructure as a service - IaaS): cung cấp các khả
năng lưu trữ cơ sở và tính toán như là các dịch vụ chuẩn Servers, các hệ thống lưu trữ (storage systems ), switches, routers, và nhiều hệ thống phụ trợ khác giúp cho việc xử lý tải công việc từ các thành phần ứng dụng tới các ứng dụng tính toán hiệu
Trang 20Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
năng cao Dịch vụ thương mại của loại dịch vụ này có thể kể ra là Joyent, sản phẩm chính là dòng các máy chủ ảo sẵn sàng dịch vụ theo yêu cầu
1.5 Một số mô hình điện toán đám mây
1.5.1 Mô hình kiến trúc điện toán đám mây của IBM
Sau đây là một mô hình kiến trúc “Điện toán đám mây” của IBM sử dụng các máy ảo VM [14]
Máy chủ của IBM sử dụng bộ xử lý Intel thế hệ mới và Phần mềm mới cho Trung tâm Dữ liệu (Data Center – System x) Với năng lực mở rộng có khả năng hỗ trợ tới 96 lõi xử lý và 1 TB bộ nhớ, các máy chủ System x của IBM sẽ bổ sung cho dòng sản phẩm VMware vSphere thế hệ mới IBM sắp phát hành Chúng là một lựa chọn tuyệt vời dành cho các khách hàng đang triển khai những môi trường điện toán đám mây
Một ví dụ khác thể hiện khả năng kết hợp cơ chế ảo với bản thân các dịch vụ
để phát triển các ứng dụng Web theo kiến trúc 2 tầng vào đám mây như trong hình sau
Hình 1.5 Cơ sở hạ tầng điện toán đám mây hỗ trợ để học viện có thể phân phối
các giải pháp phần mềm như là các dịch vụ
Trang 21APACHE
A
- Người phát triển ứng dụng có thể chọn cân bằng tải (Load Balancer), Web
server, database server từ thư viện được cấu hình trước trong máy ảo VM
- Người phát triển ứng dụng có thể thiết lập cấu hình cho từng thành phần
ứng dụng nhằm đáp ứng yêu cầu của khách hàng
- Người phát triển ứng dụng có thể lập trình trên kiến trúc mới và tạo ra các
thành phần phần mềm phù hợp với các yêu cầu cụ thể của từng ứng dụng
- Người phát triển ứng dụng có thể lựa chọn các mẫu ảnh cho từng lớp và
triển khai chúng, xử lý trên mạng, bảo đảm an toàn , an ninh cho các phần mềm ứng dụng
1.5.2 Amazon Web Services
Amazon Web Services ([2],[18]) là tập hợp các dịch vụ cung cấp cho người lập trình có khả năng truy cập tới hạ tầng kiến trúc tính toán kiểu sẵn sàng-để-sử dụng (ready-to-use) của Amazon Các máy tính có nền tảng vững chắc đã được xây dựng và tinh chế qua nhiều năm của Amazon bây giờ là có thể cho phép bất cứ ai cũng có quyền cập tới qua Internet Amazon cung cấp một số dịch vụ Web , bao gồm các dịch vụ khối hợp nhất (building-block) cơ bản, cái mà đáp ứng được một
số yêu cầu cốt lõi của hầu hết các hệ thống như : lưu trữ, tính toán, truyền thông điệp
và tập dữ liệu Có thể xây dựng các ứng dụng phức tạp và gồm n hiều phần khác Hình 1.6 Mẫu kiến trúc của máy chủ ảo 2 lớp cho các ứng dụng dựa trên đám
mây
Trang 22Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
nhau bằng cách sử dụng các chức năng phân tầng với các dịch vụ đáng tin cậy, hiệu quả khối hợp nhất được cung cấp bởi Amazon Các dịch vụ Web mà tồn tại bên trong đám mây phía bên ngoài môi trường của người sử dụng và có khả năng thực hiện là rất cao
Các thành phần chính của hạ tầng cơ sở của các trang Web ứng dụng, cái mà cung cấp hầu hết các khối xây dựng cơ bản phổ biến cần thiết cho hầu hết các ứng dụng không tầm thường:
- Lưu trữ (Storage): Mọi người sử d ụng đều có nhu cầu lưu trữ -cho các tệp ,
các tài liệu , các dữ liệu tải về của người sử dụng hoặc các bản sao lưu Có thể tiến hành lưu trữ bất kỳ các ứng dụng cần thiết của người sử dụng trong Amazon Simple Storage Service (S3) và nhận được các lợi ích với nó như có khả năng mở rộng, đáng tin cậy và với mức chi phí thấp cho việc lưu trữ
- Tính toán (Computing): Amazon Elastic Compute Cloud (EC2) cung cấp khả
năng để mở rộng tài nguyên tính toán của người sử dụng lớn lên hoặc giảm xuống dựa trên nhu cầu và tạo ra khả năng cung cấp dịch vụ mới một cách dễ dàng
- Gửi thông điệp (Messaging): Thực hiện tách riêng các thành phần ứng dụng
của người sử dụng bằng cách sử dụng khả năng không giới hạn của việc truyền thông điệp được cung cấp bởi Amazon Simple Queue Service (SQS)
- Tập hợp dữ liệu (Datasets): Amazon SimpleDB (SDB) cung cấp khả năng
mở rộng, lập chỉ mục, khả năng lưu trữ mà không cần bảo trì, cùng với việc thực hiện xử lý và truy vấn với tập hợp dữ liệu
Amazon và vấn đề về bảo mật
- Sự chứng thực (Authentication): Đảm bảo rằng yêu cầu đang gửi bởi
người dùng sở hữu thùng hoặc đối tượng Mỗi yêu cầu trên S3 phải bao gồm khóa truy cập Amazon Web Services xác định người dùng một cách duy nhất
- Sự cấp phép (Authorization): Đảm bảo rằng người dùng đang cố gắng truy
cập tới tài nguyên có quyền truy cập tới tài nguyên đó Mỗi đối tượng S3 có một
Trang 23danh sách quản lý truy cập (access-control list - ACL) gắn với nó mà xác định một cách minh bạch các quyền và giới hạn cho tài nguyên đó Có thể cấp quyền truy cập tới tất cả các người dùng của Amazon Web Services hoặc tới một người dùng cụ thể được xác định bởi địa chỉ email, hoặc có thể cấp quyền truy cập nặc danh cho mọi người dùng
- Tính tích hợp (Integrity): Mỗi yêu cầu E3 phải có chữ ký số của người
dùng yêu cầu với một khóa bí mật của Amazon Web Services Khi nhận được yêu cầu, S3 sẽ kiểm tra chữ ký để đảm bảo rằng yêu cầu đó không bị can thiệp trong quá trình luân chuyển
- Mã hóa (Encryption): Có thể truy cập S3 thông qua giao thức HTTPS để
đảm bảo rằng dữ liệu được chuyển đi thông qua một kết nối được mã hóa
- Không từ chối (Nonrepudiation): Mỗi yêu cầu S3 được dán tem thời gian
(time-stamped) và phục vụ như chứng cớ của giao dịch Mỗi và mọi yêu cầu REST gửi tới S3 phải trải qua các bước cơ bản cần thiết cho việc bảo mật sau:
Yêu cầu và các tham số cần thiết phải được gộp lại thành một chuỗi ký tự (string)
ký băm xác thực (keyed-Hash Message Authentication Code - HMAC) của chuỗi yêu cầu
băm xác thực hợp lệ của yêu cầu không
Nếu (và chỉ nếu) chữ ký là hợp lệ, thì Amazon S3 mới tiến hành xử lý yêu cầu
Trang 24Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
1.6 Điện toán đám mây - hạ tầng cơ sở và ứng dụng
Từ góc nhìn bên ngoài, Điện toán đám mây đơn giản chỉ là việc di trú tài nguyên tính toán (Computing resources) và lưu trữ từ doanh nghiệp vào “đám mây” trên Internet Người dùng (Computing Users) chỉ định yêu cầu tài nguyên và nhà cung cấp đám mây (cloud provider) hầu như tập hợp các thành phần ảo này trong hạ tầng của nó
Nhưng tại sao người sử dụng lại sẵn sàng từ bỏ quyền kiểm soát tài nguyên của mình và cho phép chúng tồn tại ảo trong “đám mây” ? Có nhiều lý do nhưng có
lẽ quan trọng nhất là tính dễ mở rộng và chi phí thấp Ưu điểm mới của Điện toán đám mây là khả năng ảo hóa và chia sẻ tài nguyên giữa các ứng dụng
Hình 1.7 Tính toán “đám mây” di trú tài nguyên trên Internet
Hình 1.8 Ảo hóa và sử dụng tài nguyên
Trang 25Ở đây các nền tảng tồn tại độc lập cho các ứng dụng khác nhau như App/OS
A, App/OS A, mỗi ứng dụng chạy trên server của nó, server U, server V Trong
“đám mây”, server có thể được chia sẻ (được ảo hóa) giữa các hệ điều hành và các ứng dụng để sử dụng server tốt hơn Bên trong “đám mây” không chỉ có một dịch
vụ mà là một tập các dịch vụ Các tầng định nghĩa mức dịch vụ được cung cấp
Tầng thấp nhất là Hạ tầng (Hạ tầng như một dịch vụ - IaaS) bao gồm các server, storage IaaS là hạ tầng cho thuê như một dịch vụ bao gồm các máy tính ảo hóa (virtualization) và băng thông dành riêng cho lưu trữ và truy cập Internet Về cơ bản, đó là khả năng cho thuê máy tính hay trung tâm dữ liệu với ràng buộc về chất lượng dịch vụ (Quality of Service – QoS) sao cho người dùng có khả năng chạy phần mềm hay hệ điều hành nào đó tùy ý
Lên mức tiếp theo là tầng nền (Platform) như một dịch vụ - PaaS PaaS giống như IaaS nhưng gồm cả hệ điều hành và các dịch vụ cần thiết cho một ứng dụng chuyên biệt Ví dụ PaaS ngoài server và lưu trữ ảo hóa cung hệ điều hành đặc biệt
và tập các ứng dụng (như một máy ảo) cùng các dịch vụ cần thiết như MySQL, … Nói cách khác, PaaS là IaaS với một ngăn xếp phần mềm dành cho một ứng dụng
Trên cùng là các dịch vụ được cung cấp: ứng dụng (Application) Tầng này được gọi là Phần mềm như một dịch vụ (SaaS) và nó là mô hình triển khai phần
Hình 1.9 Các tầng của tính toán “đám mây”
Trang 26Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
mềm từ một hệ tập trung sang chạy trên máy tính cục bộ Dưới dạng dịch vụ “đo” được, SaaS cho phép bạn thuê một ứng dụng và chỉ trả tiền cho thời gian sử dụng
Trên đây là cái nhìn sơ lược về Điện toán đám mây, bỏ qua một số khía cạnh như là Dữ liệu như một dịch vụ (DaaS) cho phép người dùng trả tiền cho dung lượng lưu trữ và băng thông truy cập Các dịch vụ “đám mây” cũng đang nối lên, chúng vừa có cơ chế nội để tương kết (interoperability) vừa cung cấp các API cho bên ngoài
1.7 Phân tích ưu và nhược điểm của điện toán đám mây
1.7.1 Các lợi ích chính của điện toán đám mây
Để tạo ra lợi ích từ đám mây điện toán , các lập trình viên phải thiết lập các tham số trên các ứng dụng để họ có thể sử dụng một cách tối ưu nhất các mẫu kiến trúc và triển khai do đám mây điện toán hỗ trợ Lợi ích của các ứng dụng triển khai sử dụng đám mây điện toán bao gồm giảm thời gian thực hiện và thời gian phản hồi, giảm rủi ro trong việc triển khai cơ sở hạ tầng vật lý , giảm giá đầu vào, và tăng cường các cải tiển công nghệ
- Giảm thời gian thực hiện và thời gian phản hồi:Để các ứng dụng sử dụng đám mây điện toán hoạt động một cách hiệu quả bằng cách thực hiện công việc theo
lô (batch job ), khi giải quyết một vấn đề , điện toán đám mây có thể tập trung sử dụng 1000 servers để giải quyế t bài toán đó trong khoảng thời gian bằng 1/1000 thời gian mà một server chạy riêng lẻ Đối với các ứng dụng , để có yêu cầu phản hồi (trả lời các kết quả ) nhanh thì cần tham số hóa các ứng dụng đó để các bài toán được chuyể n cho các máy ảo hỗ trợ để tối ưu thời gian phản hồi trong khi điều chỉnh yêu cầu cho phù hợp với yêu cầu của khách hàng
- Giảm thiểu rủi ro cơ sở hạ tầng : Các tổ chức IT có thể sử dụng đám mây
để giảm rủi ro vốn có t rong việc đầu tư các servers cũng như các các cơ sở hạ tầng khác Để xây dựng một ứng dụng mới thành công ? Nếu như thế thì cần bao nhiêu tài nguyên và triển khai như thế nào để đủ đáp ứng được sự tăng lên nhanh chóng
Trang 27của khối lượng công việc Nếu không xác định tốt yêu cầu , cần đầu tư một lượng lớn server, điều này có thể dẫn đến sự dư thừa ? Thông thường các ứng dụng này chỉ tồn tại trong một thời gian ngắn , các tổ chức IT sẽ đầu tư một xây dựng một cơ sở
hạ tầng đồ sộ để phần lớn thời gian của hệ thống máy móc này nằm ở trạng thái treo (idle) Trong trường hợp đặt một ứng dụng ra ngoài đám mây , việc thay đổi và độ rủi ro của giá cả cơ sở hạ tầng đắt hay rẻ lại là vấn đề của các nhà cung cấp đám mây Với việc tăng lên về mặt số lượng, nhà cung cấp đám mấy phải xây dựng được một cơ sở hạ tầng đủ mạnh để nó có thể thu hút được sự phát triển và khả năng phân bổ tải của các khách hàng cá nhân , giảm thiểu các rủi ro tài chính mà họ có thể gặp phải Nói cách khác, ở điện toán đám mây sẽ giảm được rủi ro do phải đầu tư cơ sở
hạ tầng bằng cách kích hoạt khả năng tính toán đột biến , nơi mà mộ t trung tâm dữ liệu của doanh nghiệp tăng khả năng phân bổ tải bằng một thiết kê cho phép gửi các công việc quá tải ra một đám mây chung Vòng đời của các ứng dụng có thể được quản lý tốt hơn trong môi trường có các nguồ n tài nguyên khan hiếm , và nơi
mà các nguồn tài nguyên có thể được tìm kiếm để chia sẻ cho phù hợp với yêu cầu với chi phí rẻ nhất có thể
- Hạ giá đầu vào : Tính toán đám mây có một số đặc tình giúp giảm giá cho đầu vào như sau:
o Do cơ sở hạ tầng đi thuê nên có thể kiểm soát được chi phí và đầu tư ban đầu có thể gần như bằng 0
o Các ứng dụng được phát triển ở cấp thấp , được phát triển nhanh nên chi phí thấp Các tổ chức triển khai các ứng d ụng chạy trong môi trường đám mâ y phải đưa ra giá cá cạnh tranh so với đối thủ
- Tăng cường các cải tiến : Tính toán đám mây có thể tăng các cải tiến Chi phí của đầu vào thấp giúp cho các công ty mới thâ m nhập thị trường vẫn có thể đưa
ra các sản phẩm mới với giá thành thấp Càng nhiều công ty tham gia vào thị trường, mức cạnh tranh càng cao nên càng sản phẩm được đổi mới liên tục
Trang 28Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
1.7.2 Các hạn chế của điện toán đám mây
Bên cạnh những lợi ích như đã phân tích ở trên, điện toán đám mây chắc chắn còn rất mới mẻ và có những điều hạn chế không tránh khỏi
- Những lo ngại về an ninh, bảo mật thông tin Giao trách nhiệm về các ứng
dụng và dữ liệu quan trọng cho đối tác thứ ba (nhà dịch vụ), có nghĩa là khách hàng phải biết chính xác các nhà cung cấp dịch vụ điện toán máy chủ ảo xử lý thế nào về các vấn đề an ninh và kiến trúc hệ thống Các nhà cung cấp dịch vụ sẽ minh bạch đến mức nào về những chi tiết trên vẫn còn là câu hỏi Các nhà cung cấp dịch vụ điện toán đám mây thường lưu trữ dữ liệu của nhiều khách hàng khác nhau lên cùng một phần cứng Trong khi đó, các công ty muốn dữ liệu của họ được tách biệt rõ ràng so với dữ liệu của đối thủ cạnh tranh Không có gì đáng ngạc nhiên khi những nỗi lo về bảo mật là yếu tố hàng đầu cản trở doanh nghiệp sử dụng điện toán đám mây Theo một cuộc khảo sát vừa qua của trang web CIO.com, 59% trong số 173 lãnh đạo doanh nghiệp và công nghệ thông tin (CNTT) cho rằng các nhà cung cấp dịch vụ chưa quan tâm đúng mức đến những điều lo ngại về bảo mật của họ
- Hiệu suất hoạt động của các ứng dụng: Các nhà cung cấp công nghệ chưa
định ra được đầy đủ mô hình kinh doanh và giá cả, đây cũng là một trong những lý
do khiến một số CIO, những người chưa nhìn thấy hiệu quả đầu tư của họ từ SaaS (phần mềm dịch vụ), xem xét điện toán đám mây với cái nhìn nghi hoặc Tất nhiên
là còn có yếu tố khác: đó là sự minh bạch
- Nỗi lo mất kiểm soát: An ninh, độ trễ (latency), dịch vụ kèm theo và tính sẵn
sàng là những vấn đề mà các nhà quản lý CNTT quan tâm khi đề cập đến điện toán đám mây Các nhà cung cấp còn có quá nhiều việc phải làm trong những năm tới để làm hài lòng các CIO Một số người suy nghĩ rằng họ không còn giữ dữ liệu của họ nữa, nó đang ở một nơi mà họ không có ở đó, không quản lý trực tiếp Bằng cách tự lưu trữ ứng dụng của mình, một công ty có thể dễ dàng xác định những mục tiêu kiểm soát và duy trì tình trạng toàn vẹn của dữ liệu theo yêu cầu của luật lệ Tuy nhiên, nếu công ty này muốn đưa những ứng dụng tài chính của mình lên “đám
Trang 29mây”, họ chắc chắn sẽ phải đánh giá lại những mục tiêu kiểm soát để bảo đảm không vi phạm vấn đề tuân thủ luật lệ
- Cơ sở pháp lý: Có thể thấy rằng sở dĩ điện toán đám mây vẫn chưa thông
dụng là bởi việc triển khai chúng không hoàn toàn dễ dàng Ngoài ra, hiện nay nhiều nước, nhất là Việt Nam còn thiếu cơ chế pháp lý phù hợp để hỗ trợ mô hình kinh doanh mới này
- Mặt hạn chế nữa là người dùng sẽ bị phụ thuộc vào công nghệ mà nhà cung
cấp đưa ra cho họ, khiến cho sự linh hoạt và sáng tạo giảm đi Điện toán đám mây
có nguy cơ lặp lại khiếm khuyết của mô hình điện toán cũ: các công ty sở hữu những hệ thống máy tính trung ương lớn (cloud) và mọi người sẽ kết nối với chúng qua các trạm
Về cơ bản, công nghệ luôn phát triển và sẽ giải quyết các vấn đề trên, còn khung pháp lý không sớm thì muộn cũng sẽ được triển khai Xét một cách toàn diện, những lợi ích to lớn của điện toán đám mây sẽ dần được khẳng định, và doanh nghiệp luôn đi theo những gì có lợi nhất cho họ
1.8 Kết luận
Chương này giới thiệu khái quát về điện toán đám mây như là mô hình kiến trúc, các thành phần của điện toán đám mây, các tầng kiến trúc, các ứng dụng và những lợi ích hạn chế của Điện toán đám mây
Trang 30Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
CHƯƠNG 2: KIẾN TRÚC HƯỚNG DỊCH VỤ 2.1 Giới thiệu về kiến trúc hướng dịch vụ
2.1.1 Kiến trúc hướng dịch vụ là gì ?
Kiến trúc hướng dịch vụ (SOA) 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 kết nối lỏng”, và có khả năng truy cập thông qua môi trường mạng Hiểu một cách đơn giản thì một hệ thống SOA là một 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 [7], theo định nghĩa của DotNetGuru: “Khái niệm về hệ thống trong đó mỗi ứng dụng được xem như một nguồn cung cấp dịch vụ”
Dịch vụ là yếu tố then chốt trong SOA Có thể hiểu dịch vụ như là hàm chức năng (mô-đun phần mềm) thực hiện qui trình nghiệp vụ nào đó Một cách cơ bản, SOA là tập hợp các dịch vụ kết nối „mềm dẻo‟ với nhau (nghĩa là một ứng dụng có thể „nói chuyện‟ với một ứng dụng khác mà không cần biết các chi tiết kỹ thuật bên trong), có giao tiếp (dùng để gọi hàm dịch vụ) được định nghĩa rõ ràng và độc lập với nền tảng hệ thống và có thể tái sử dụng SOA là cấp độ cao hơn của phát triển ứng dụng, chú trọng đến qui trình nghiệp vụ và dùng giao tiếp chuẩn để giúp che đi
sự phức tạp kỹ thuật bên dưới
Thiết kế SOA tách riêng phần thực hiện dịch vụ (phần mềm) với giao tiếp gọi dịch vụ Điều này tạo nên một giao tiếp nhất quán cho ứng dụng khách (client)
sử dụng dịch vụ bất chấp công nghệ thực hiện dịch vụ Thay vì xây dựng các ứng dụng đơn lẻ và đồ sộ, nhà phát triển sẽ xây dựng các dịch vụ tinh gọn có thể triển khai và tái sử dụng trong toàn bộ quy trình nghiệp vụ Điều này cho phép tái sử dụng phần mềm tốt hơn, cũng như tăng sự linh hoạt vì nhà phát triển có thể cải tiến dịch vụ mà không làm ảnh hưởng đến ứng dụng client sử dụng dịch vụ Trong SOA
có ba đối tượng chính, minh họa trong hình 2.1.1
Trang 31Nhà cung cấp dịch vụ (service provider) sẽ đăng kí thông tin về dịch vụ mà mình có thể cung cấp (các chức năng có thể cung cấp, khả năng của hệ thống, giá
cả dịch vụ, …) vào đăng kí dịch vụ (service registry) Người sử dụng (service consumer) khi có nhu cầu về một dịch vụ nào đó sẽ tìm kiếm thông tin trên đăng kí dịch vụ Ngoài chức năng hỗ trợ tìm kiếm, đăng kí dịch vụ còn có thể xếp hạng các nhà cung cấp dịch vụ dựa trên các tiêu chí về chất lượng dịch vụ, bầu chọn từ các khách hàng đã sử dụng dịch vụ, … Khi đã xác định được nhà cung cấp dịch vụ mong muốn, người sử dụng thiết lập kênh giao tiếp trực tiếp với nhà cung cấp dịch
vụ nhằm sử dụng dịch vụ hoặc tiến hành thương lượng thêm (về mặt giá cả, tài nguyên sử dụng, …)
SOA cung cấp 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 nay như: phức tạp, không linh hoạt và không ổn định Một hệ thống triển khai theo mô hình SOA có khả năng dễ mở rộng, liên kết tốt Đây chính là cơ sở và nền tảng cho việc tích hợp, tái sử dụng lại những tài nguyên hiện có [14]
Thật ra, tư tưởng về một hệ thống SOA không phải là mới Mô hình Kỹ thuật đối tượng phân phối (Common Object Request Broker Architecture - CORBA) và
Model - DCOM) của Microsoft hay như Enterprise Java Bean (EJB) của Java đã cung cấp tính năng này từ lâu Tuy nhiên những cách tiếp cận hướng dịch vụ này vẫn còn gặp phải một số vấn đề khó khăn SOA không chỉ là một cải tiến đáng kể
Hình 2.1.1 Sơ đồ cộng tác trong SOA
Trang 32Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
giúp giải quyết những yếu điểm của các công nghệ trước mà còn đem đến nhiều ưu điểm nổi trội hơn
2.1.2 Bốn nguyên tắc chính của hệ thống SOA
2.1.2.1 Sự phân định ranh giới rạch ròi giữa các dịch vụ
Các dịch vụ thực hiện quá trình tương tác chủ yếu thông qua thành phần giao tiếp Thành phần giao tiếp này sẽ qui định về những định dạng thông điệp sử dụng trong quá trình trao đổi: thông điệp nào sẽ được chấp nhận và thông điệp nào sẽ không được xử lý Và đây chính là cách duy nhất để các đối tượng bên ngoài có thể truy cập thông tin và chức năng của dịch vụ Ta chỉ cần gửi các thông điệp theo các định dạng đã được định nghĩa trước mà không cần phải quan tâm đến cách xử lý của dịch vụ như thế nào (môi trường thực thi, ngôn ngữ lập trình ) Điều này đạt được do sự tách biệt giữa thành phần giao tiếp và thành phần xử lý trong kiến trúc của dịch vụ
2.1.2.2 Các dịch vụ tự hoạt động
Các dịch vụ cần phải được triển khai và hoạt động như những thực thể độc lập mà không lệ thuộc vào một dịch vụ khác Dịch vụ phải có tính bền vững cao, nghĩa là nó sẽ không bị sụp đổ khi có sự cố Để thực hiện điều này, dịch vụ cần duy trì đầy đủ thông tin cần thiết cho quá trình hoạt động của mình để có thể tiếp tục hoạt động trong trường hợp một dịch vụ cộng tác bị hỏng; và để tránh các cuộc tấn công từ bên ngoài (như gửi thông điệp lỗi, hay gửi thông điệp ồ ạt) bằng cách sử dụng các kỹ thuật về an toàn, bảo mật
2.1.2.3 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 của nó (interface) 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 (độc lập ngôn ngữ, độc lập hệ nền) Như thế hệ thống của ta sẽ có tính liên kết và khả năng dễ mở rộng
Trang 332.1.2.4 Tính tương thích của dịch vụ dựa trên chính sách
Điều này nghĩa là, một dịch vụ khi muốn tương tác với một dịch vụ khác thì phải thỏa mãn các chính sách (policy) và yêu cầu (requirements) của dịch vụ đó như là mã hóa, bảo mật Để thực hiện điều này, mỗi dịch vụ cần phải cung cấp công khai các yêu cầu, chính sách đó
2.1.3 Các tính chất của một hệ thống SOA
2.1.3.1 Kết nối lỏng (Loose coupling)
Vấn đề kết nối (coupling) ám chỉ đến một số ràng buộc giữa cách module với nhau Có hai loại coupling là rời (loose) và chặt (tight) Các module có tính kết nối lỏng có một số ràng buộc được mô tả rõ ràng trong khi các module có tính kết nối chặt lại có nhiều ràng buộc không thể biết trước Hầu như mọi kiến trúc phần mềm đều hướng đến tính kết nối lỏng giữa các module Mức độ kết dính của mỗi hệ thống ảnh hưởng trực tiếp đến khả năng chỉnh sửa hệ thống của chính nó Kết dính càng chặt bao nhiêu thì càng có nhiều thay đổi liên quan cần chỉnh sửa ở phía sử dụng dịch vụ mỗi khi có thay đổi nào đó xảy ra Mức độ coupling tăng dần khi bên
sử dụng dịch vụ càng cần biết nhiều thông tin ngầm định của bên cung cấp dịch vụ
để sử dụng dịch vụ được cung cấp Nghĩa là nếu bên sử dụng dịch vụ biết vị trí và chi tiết định dạng dữ liệu của bên cung cấp dịch vụ thì quan hệ giữa hai bên càng chặt Ngược lại, nếu bên sử dụng dịch vụ không cần biết mọi thông tin chi tiết của dịch vụ trước khi triệu gọi nó thì quan hệ giữa hai bên càng có tính kết nối lỏng
SOA hỗ trợ kết nối lỏng 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ề tất cả những dịch vụ thoả tiêu chuẩn tìm kiếm Từ bây giờ người dùng chỉ việc chọn dịch vụ mà mình cần, và thực thi phương thức trên đó theo mô tả dịch vụ nhận được từ registry Bên sử dụng dịch vụ không cần phụ thuộc trực tiếp vào cài đặt của dịch vụ mà chỉ dựa trên hợp đồng mà dịch vụ đó hỗ trợ
Trang 34Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
Tính kết nối lỏng 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 nhằm tăng hiệu suất, khả năng mở rộng và khả năng đáp ứng cao Những thay đổi cài đặt cũng được che dấu
đi Kết nối lỏng đem đến sự độc lập giữa bên cung cấp và bên sử dụng nhưng nó đòi hỏi các giao diện phải theo 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
2.1.3.3 Sử dụng dịch vụ bất đồng bộ
Trong phương thức triệu gọi dịch vụ bất đồng bộ, bên gọi gửi một thông
Hình 2.1.2 Tính chất loose-coupling
Trang 35điệp với đầy đủ thông tin ngữ cảnh tới bên nhận Bên nhận xử lý thông tin và trả kết quả về thông qua một “kênh thông điệp”, bên gọi không phải chờ cho đến khi thông điệp được xử lý xong Khi sử dụng kết hợp thông điệp dạng coarse-grained với một dịch vụ chuyển thông điệp, các yêu cầu dịch vụ có thể được đưa vào hàng đợi và xử
lý với tốc độ tối ưu Do bên gọi không phải chờ cho đến khi yêu cầu được xử lý xong và trả về nên không bị ảnh hưởng bởi việc xử lý trễ và lỗi khi thực thi các dịch
vụ bất đồng bộ Trên lý thuyết một hệ thống SOA có thể hỗ trợ gửi và nhận cả thông điệp đồng bộ và bất đồng bộ
2.1.3.4 Quản lý các chính sách
Khi sử dụng các dịch vụ chia sẻ trên mạng, tùy theo mỗi ứng dụng sẽ có một luật kết hợp riêng gọi là các chính sách Các chính sách cần được quản lý các áp dụng cho mỗi dịch vụ cả khi thiết kế lẫn khi trong thời gian thực thi Việc này tăng khả năng tạo ra các dịch vụ có đặc tính tái sử dụng Bởi vì các chính sách được thiết
kế tách biệt, và tùy vào mỗi ứng dụng nên giảm tối đa các thay đổi phần mềm Nếu không sử dụng các chính sách, các nhân viên phát triển phần mềm, nhóm điều hành
và nhóm hỗ trợ phải làm việc với nhau trong suốt thời gian phát triển để cài đặt và kiểm tra những chính sách Ngược lại, nếu sử dụng chính sách, những nhân viên phát triển phần mềm giờ chỉ cần tập trung vào quy trình nghiệp vụ trong khi nhóm điều hành và nhóm hỗ trợ tập trung vào các luật kết hợp
2.1.3.5 Độ thô mịn (Coarse granularity)
Khái niệm độ mịn trong dịch vụ có thể hiểu theo hai cách Đầu tiên, nó được hiểu trong phạm vi toàn bộ kiến trúc cài đặt của dịch vụ Thứ hai, nó được hiểu trong phạm vi từng phương thức của từng giao diện triển khai Mức độ mịn cũng được hiểu ở mức tương đối Ví dụ, nếu một dịch vụ cài đặt tất cả chức năng của một hệ thống ngân hàng, chúng ta xem nó là hạt thô (coarse-grained) Nếu nó hỗ trợ chỉ chức năng kiểm tra thẻ tín dụng, chúng ta lại xem nó là hạt mịn (fine-grained) Trước khi có kiến trúc thành tố và dịch vụ, các hệ thống phân tán chủ yếu dựa trên
Trang 36Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
ý tưởng phân tán đối tượng Những hệ thống phân tán đối tượng chứa bên trong nó nhiều đối tượng hạt mịn trao đổi thông tin với nhau qua mạng Mỗi đối tượng có những ràng buộc với nhiều đối tượng khác bên trong hệ thống Do truy cập đến một đối tượng phải qua nhiều trung gian mà hiệu quả đạt được không cao nên khuynh hướng thiết kế hệ thống phân tán đối tượng đang dần chuyển sang thiết kế các giao diện hạt thô (coarser-grained interface)
Hình 2.1.3 minh họa một hệ thống phân tán đối tượng với nhiều mối liên kết cùng với kích thước và độ phức tạp của hệ thống ngày càng tăng, những ràng buộc này trở nên ngày càng khó quản lý Hiệu suất cũng giảm tương ứng số lượng các kết nối trung gian Khả năng bảo trì cũng giảm khi số lượng ràng buộc giữa những đối tượng ngày một tăng Khi một đối tượng cần được thay đổi ở giao diện, nó có thể ảnh hưởng đến một lượng lớn những đối tượng phân tán khác Nhân viên phát triển phải biên dịch và triển khai lại toàn bộ đối tượng bị thay đổi và những đối tượng liên quan với chúng
Một hệ thống dựa trên quản lý các truy cập đến đối tượng bên trong dịch vụ thông qua một số giao diện hạt thô như hình 2.1.4 Một dịch vụ có thể được cài đặt như một tập những đối tượng hạt mịn nhưng bản thân những đối tượng đó lại được
sử dụng trực tiếp qua mạng Trong khi đó một dịch vụ được cài đặt như những đối tượng có một hoặc nhiều đối tượng hạt thô hoạt động như những mặt tiền (facades) phân tán thì những đối tượng này lại có thể được sử dụng qua mạng và cho phép truy cập đến các đối tượng sâu bên trong Tuy nhiên các đối tượng bên trong dịch
vụ đó bây giờ sẽ trao đổi trực tiếp với nhau ở trong cùng một máy chứ không phải trên mạng
Trang 37Mặc dù những dịch vụ nói chung hỗ trợ giao diện thô hơn các hệ thống phân tán đối tượng và các hệ thống hướng thành tố, độ “thô” vẫn hàm chứa bên trong nó chứa một mức độ mịn nào đó, như hình 2.1.5
Hình 2.1.3 Các đối tượng hạt mịn (fine-grained)
Hình 2.1.4 Các đối tượng hạt thô (coarse-grained)
Hình 2.1.5 Các mức độ mịn (granularity)
Mịn
Trang 38Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
2.1.3.6 Khả năng cộng tác (Interoperability)
Kiến trúc hướng dịch vụ nhấn mạnh đến khả năng cộng tác [9], khả năng mà các hệ thống có thể giao tiếp với nhau trên nhiều nền tảng và ngôn ngữ khác nhau Mỗi dịch vụ cung cấp một giao diện có thể được triệu gọi thông qua một dạng kết nối Một kết nối gọi là dữ liệu khả kết (interoperable) chứa bên trong nó một giao thức và một định dạng dữ liệu mà mỗi khách hàng kết nối đến nó đều hiểu Khả năng cộng tác được thực hiện 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à các khách hàng Kỹ thuật này đạt được bằng cách ánh xạ mỗi tính chất và ngôn ngữ qua một đặc tả trung gian Đặc tả trung gian sẽ chịu trách nhiệm ánh xạ giữa định dạng của dữ liệu khả kết đến định dạng dữ liệu tùy thuộc vào nền tảng hệ thống Ví dụ WebService là một đặc tả trung gian cho giao tiếp giữa các hệ thống, JAX-RPC và JAXM chuyển đối tượng dạng Java thành SOAP
2.1.3.7 Tự động dò tìm và ràng buộc động
SOA hỗ trợ khái niệm truy tìm dịch vụ (service discovery) [8] Một người sử dụng cần đến một 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 khi cần Người sử dụng chỉ cần hỏi một registry về dịch vụ nào thoả yêu cầu tìm kiếm Ví dụ, một hệ thống chuyển khoản (consumer) yêu cầu một registry tì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 entry thoả yêu cầu Các entry chứa thông tin về dịch vụ, bao gồm cả phí giao dịch Bên sử dụng sẽ chọn một dịch vụ có phí giao dịch thấp nhất trong danh sách các dịch vụ trả về, kết nối đến nhà cung cấp dịch vụ đó dựa trên thông tin registry entry
để 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 dùng để thực thi dịch vụ, bên sử dụng chỉ cần định dạng
dữ liệu yêu cầu đúng theo mô tả cung cấp và gửi đi Nhà cung cấp dịch vụ sẽ thực thi kiểm trả thẻ tín dụng và trả về một thông điệp có định dạng đúng như trong phần
mô tả dịch vụ Mối ràng buộc duy nhất giữa bên cung cấp và bên 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 ràng buộc trong lúc biên dịch Tất cả thông tin
Trang 39cần thiết về dịch vụ được lấy về và sử dụng trong khi chạy
Ví dụ trên cho thấy cách bên sử dụng triệu gọi dịch vụ một cách “động” Đây là một thế mạnh của SOA Với SOA, bên sử dụng dịch vụ không cần biết định dạng của thông điệp yêu cầu và thông điệp trả về, cũng như địa chỉ dịch vụ cho đến khi cần
từ nhiều những dịch vụ của nhiều tổ chức khác nhau Độ tin cậy phụ thuộc vào khả năng phục hồi của phần cứng sau khi bị lỗi Hạ tầng mạng phải cho phép các kết nối động từ nhiều hệ thống khác nhau kết nối đến trong khi chạy Một khía cạnh khác ảnh hưởng đến độ tin cậy là kiến trúc mà dựa trên đó ứng dụng được xây dựng Một kiến trúc hỗ trợ kết nối và thực thi động khi chạy sẽ có khả năng tự phục hồi hơn một hệ thống không hỗ trợ những tính năng trên
Thêm vào đó, bởi vì những hệ thống dựa trên dịch vụ yêu cầu sự tách biệt giữa dịch vụ và cài đặt, nên có thể có nhiều cài đặt khác nhau cho cùng một giao diện Nếu một thể hiện dịch vụ nào đó không hoạt động thì một thể hiện khác vẫn
có thể hoàn tất giao dịch cho khách hàng mà không bị ảnh hưởng gì Khả năng này chỉ có được khi khách hàng chỉ tương tác với giao diện của dịch vụ chứ không tương tác trực tiếp cài đặt của dịch vụ Đây là một trong những tình chất cơ bản của các hệ thống hướng dịch vụ
Trang 40Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn
2.1.4 Lợi ích của SOA
Nói đến SOA là nói đến „tiết kiệm‟- cả tiết kiệm chi phí lẫn thu được giá trị nhiều hơn từ các hệ thống có sẵn Hẳn cũng phải có lý do để hàng trăm tập đoàn đã chú ý đến SOA như một giải pháp tích hợp nhằm giảm giá thành của một đề án một cách rất ấn tượng [3]
Tính kết nối lỏng giúp tăng tính linh hoạt và khả năng triển khai cài đặt
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
2.1.5 Một số mô hình triển khai SOA
Chúng ta sẽ thảo luận về ba mô hình triển khai chính của SOA là: service registy, service broker và service bus
Service registry: đây là mô hình truyền thống để định vị và liên kết các dịch
vụ trong một hệ thống SOA (Hình 2.1.6) Mô hình service registry [7] về cơ bản chỉ cần các chuẩn Web services thông thường là giao thức truy nhập đối tượng đơn giản (SOAP); tích hợp, khám phá và mô tả đa năng (UDDI) và WSDL (Web Services Description Language) Vấn đề lớn nhất của mô hình này là các liên kết dịch vụ là kết nối tĩnh và phải định nghĩa trong thiết kế, điều này làm cho mô hình trở nên cứng nhắc Có một cách cải tiến làm cho mô hình này linh hoạt hơn là tìm kiếm, định vị các dịch vụ khi chạy UDDI hỗ trợ nhiều cấu hình khác nhau cho cùng một dịch vụ cung cấp bởi nhiều nhà cung cấp dịch vụ khác nhau Điều này cho phép chia tải và tăng tính tin cậy bởi vì thư mục dịch vụ (service directory) có thể tìm kiếm một dịch vụ nào đó trên tất cả các nhà cung cấp dịch vụ hiện có Đặc điểm chính của SOA là tách rời phần giao tiếp/gọi dịch vụ với phần thực hiện dịch vụ