Tải bản đầy đủ (.doc) (92 trang)

Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.77 MB, 92 trang )

PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
1. Thông tin về sinh viên
Họ và tên sinh viên: Mai Văn Quân
Điện thoại liên lạc: 0904812646 Email:
Lớp: Hệ thống thông tin – K50 Hệ đào tạo: Chính quy
Đồ án tốt nghiệp được thực hiện tại:
Thời gian làm ĐATN: Từ ngày 1 / 3 /2010 đến 29 / 5 /2010
2. Mục đích nội dung của ĐATN
Tìm hiểu tổng quan về dịch vụ Cloud-computing và nền tảng Windows Azure Platform.
3. Các nhiệm vụ cụ thể của ĐATN
- Tìm hiểu về cloud-computing, định nghĩa, các loại hình dịch vụ, các ưu nhược điểm
cũng như thách thức của kiểu hình dịch vụ này
- Tìm hiểu về nền tảng Windows Azure Platform, kiến trúc, chức năng của các thành phần
trong nền tảng này cũng như một số use cases quan trọng
- Tìm hiểu về lập trình trên nền tảng Windows Azure Platform.
4. Lời cam đoan của sinh viên:
Tôi – Mai Văn Quân - cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự hướng
dẫn của Tiến sĩ Nguyễn Hữu Đức
Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳ công
trình nào khác.
Hà Nội, ngày tháng năm
Tác giả ĐATN
Mai Văn Quân
5. Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép bảo vệ:
Hà Nội, ngày tháng năm
Giáo viên hướng dẫn
Tiến sĩ Nguyễn Hữu Đức
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 1
Mục lục
Mục lục 2
Lời nói đầu – Lý do chọn đề tài: 8


Lời cảm ơn: 9
Phần 1: Tổng quan về Cloud Computing 10
1.1 Định nghĩa cloud computing – điện toán đám mây 10
1.2 Các đặc tính của điện toán đám mây 11
1.3 Tại sao lại chọn cloud –computing 17
1.4 Các nền tảng Cloud computing phổ biến : 19
1.4.1 Amazon EC2 20
1.4.2 Google App Engine 20
1.4.3 Microsoft Windows Azure: 21
Phần 2: Windows Azure Platform: 22
2.1.Kiến trúc Windows Azure Platform : 22
2.1.1Hệ điều hành Windows Azure : 22
2.1.2 SQL Azure: 24
2.1.3 .NET Services – AppFabric 26
2.1 Windows Azure: 26
2.1.1Compute Service 30
2.1.2 Storage Service 32
2.2 Windows Azure AppFabric 53
2.2.1 Access Control Service 53
2.2.2 Service Bus 64
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 2
2.3 SQL Azure 77
Các hạn chế đối với SQL Azure: 80
Kết nối dữ liệu trên SQL Azure 81
Phần 3: Windows Azure Platform Development 85
Tổng kết: 90
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 3
Danh mục các hình vẽ, bảng biểu
Hình 1.1: Giới thiệu về cloud computing 10
Hình 1.2: Các kiểu hình dịch vụ đối với Cloud computing 13

Bảng 1.3: Lợi ích và thách thức đối với IaaS 14
Bảng 1.4: Lợi ích và thách thức đối với PaaS 14
Bảng 1.4 Lợi ích và thách thức đối với SaaS 15
Bảng 1.5 So sánh giữa Cloud computing và grid computing 17
Hình 1.6: Mối quan tâm đối với cloud computing 19
Hình 2.1 Cấu trúc cơ bản của Windows Azure Platform 22
Hình 2.2: Cấu trúc của hệ quản trị cơ sở dữ liệu SQL Azure 25
Hình 2.3 Vai trò của Fabric Controller trong Windows Azure 27
Bảng 2.4: Đặc tính 3 kiểu lưu trữ trong Windows Azure Storage 28
Hình 2.6: Kiến trúc của Windows Azure Storage 33
Hình 2.7 Kiến trúc của dịch vụ Blob 34
Hình 2.8: Minh hoạ về việc upload và commit các Block 37
Hình 2.9 Các kịch bản khi upload block 40
Hình 2.11 Kiến trúc dịch vụ Table 48
Hình 2.12 Minh hoạ về việc phân vùng Table theo PartitionKey 50
Bảng 2.12 Các loại dữ liệu mà dịch vụ Table hỗ trợ 50
Hình 2.13 Các thao tác trên Bảng bằng ADO.NET Data Service và HTTP Verb 52
Hình 2.14 Lược đồ sử dụng giữa Access Control Service, Khách hàng và dịch vụ Web. 53
Bảng 2.15 Ví dụ về các trường thông tin trong một SWT 58
Hình 2.16: Chi tiết các bước làm việc của ACS để xác thực và cấp quyền người dùng 59
Hình 2.17: Minh hoạ một kịch bản sử dụng ACS 62
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 4
Hình 2.18: Mô hình Enterprise Service Bus 64
Hình 2.19 Kiến trúc Relay Service 65
Hình 2.20: Kiến trúc Service bus 66
Hình 2.21: Lược đồ tích hợp Service Bus với Access Control Service 67
Bảng 2.22 Các kiểu truyền Message trong Service Bus 70
Hình 2.23 Lược đồ domain name của Service Bus 71
Hình 2.24 Quá trình giao tiếp client-service thông qua Relay Service 73
Hình 2.25: Hoạt động của Message Buffer 75

Hình 2.25: Khởi tạo kết nối trực tiếp giữa client và Service 76
Hình 2.26: Kiến trúc mức cao của SQL Azure 77
Hình 2.27: Minh hoạ hoạt động của SQL Azure Fabric khi xảy ra lỗi 79
Bảng 2.28: Các tính năng CSDL mà SQL Azure hỗ trợ và không hỗ trợ 80
Bảng 2.29: Các tính năng quản trị mà SQL Azure hỗ trợ và không hỗ trợ 81
Hình 2.30: Kiến trúc Code-near connectivity 82
Hình 2.31: Kiến trúc code-far connectivity 83
Hình 3.1: Khởi tạo Development Storage 85
Hình 3.2: Khởi tạo Development Storage hoàn tất 86
Hình 3.3 Development Storage UI 86
Hình 3.4 Các template trong Visual Studio sau khi cài Windows Azure SDK 87
Hình 3.5 Development Fabric UI 88
Danh mục các từ viết tắt và thuật ngữ
Từ viết tắt và thuật ngữ Ý nghĩa
SLA
Service Level Agreement
ACS Access Control Bus
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 5
NIST National Instute Standard and Technology
SaaS Software as a Service
PaaS Platform as a Service
IaaS Infrastructure as a Service
SWT Simple Web Token
TDS Tabular Data Stream
WRAP Web Resource Authorization Protocol
Trong báo cáo này, có nhiều thuật ngữ tiếng Anh không có thuật ngữ tiếng Việt tương
đương, chúng sẽ được giữ nguyên sau khi đã có giải thích về ý nghĩa.
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 6
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 7
Lời nói đầu – Lý do chọn đề tài:

Trong vòng vài năm trở lại đây, điện toán đám mây – cloud computing đã và đang
trở thành một trong những thuật ngữ được nhắc đến nhiều nhất trong ngành công nghệ
thông tin. Điện toán đám mây được hứa hẹn là giải pháp giải quyết được nhiều vấn đề
như độ sẵn sàng (availability), khả năng co giãn (scalability), chi phí (cost), điện năng
tiêu thụ (power consumption),… Tuy nhiên, hiểu rõ hơn về các khái niệm của cloud
computing, các đặc tính, các ưu điểm, nhược điểm cũng như các thách thức đối với công
nghệ để có thể khai thác, triển khai khi cần thiết lại là một việc còn chưa được quan tâm
đúng mức.
Đề tài này nhằm làm rõ phần nào các khía cạnh của cloud-computing, cũng như
nghiên cứu sâu hơn về một nền tảng cloud-computing cụ thể. Báo cáo sẽ cố gắng đưa ra
các định nghĩa về cloud computing, các đánh giá khách quan về ưu nhược điểm cũng như
tương lai của công nghệ này. Đồng thời, báo cáo cũng chọn nền tảng Windows Azure
Platform để đào sâu nghiên cứu, vì đây là một nền tảng có nhiều ưu điểm, lại thân thiện
với các nhà phát triển và sử dụng nhiều công cụ sẵn có.
Bố cục của báo cáo bao gồm:
Phần 1: Tổng quan về cloud computing, các khái niệm, định nghĩa, các ưu nhược điểm
của các loại hình dịch vụ trong cloud computing, các nền tảng cloud computing phổ biến
Phần 2: Đi sâu về nghiên cứu về nền tảng Windows Azure Platform, bao gồm nghiên cứu
về cơ sở hạ tầng – infrastructure, về cấu trúc – architect, một số use cases và API lập
trình
Phần 3: Giới thiệu về môi trường lập trình cho Windows Azure Platform
Tên của đề tài đồ án này là “Tìm hiểu về điện toán đám mây và nền tảng Windows
Azure Platform”, mặc dù từ “Platform” có nghĩa nền tảng nhưng để tránh nhầm lẫn với
“nền tảng hệ điều hành Windows Azure” (một thành phần của Windows Azure Plaform,
nên vẫn giữ từ “nền tảng” trong tiêu đề.
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 8
Lời cảm ơn:
Để có thể tìm hiểu về một nền tảng còn rất mới, với nhiều yêu cầu như: vừa phải
tìm hiểu được nền tảng ở mức khái quát tổng thể, vừa không để sót chi tiết, vừa đánh giá
được những điểm mạnh, vừa biết được những điểm yếu,… là một công việc có nhiều thử

thách. Em đã không thể hoàn thành đồ án này nếu thiếu sự hướng dẫn, chỉ bảo tận tình và
những định hướng, lời khuyên hữu ích từ thầy giáo hướng dẫn, Tiến Sĩ Nguyễn Hữu
Đức. Em xin gửi lời cảm ơn chân thành đến Thầy vì sự giúp đỡ quý báu của Thầy trong
suốt thời gian qua.
Do thời gian thực hiện đồ án là ngắn và do những hạn chế của bản thân, đồ án
không thể tránh khỏi những thiếu sót về mặt nội dung, câu chữ. Rất mong nhận được sự
phản biện, góp ý và phê bình của các thầy cô và các bạn.
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 9
Phần 1: Tổng quan về Cloud Computing
Lịch sử phát triển hơn 30 năm của ngành công nghệ phần mềm tuy chưa phải là
dài, nhưng đã chứng kiến những cuộc cách mạng mang tính nhảy vọt. Một trong những
thay đổi mang tính quyết định và có ý nghĩa nhiều nhất là sự thay đổi của kiến trúc phần
mềm (software architect). Có thể kể đến việc chuyển từ cấu trúc Mainframe sang kiến
trúc Client-server những năm cuối thập kỉ 80 của thế kỉ 20.
Và đến những năm đầu của thập niên 2010 này, chúng ta lại chứng kiến một cuộc
cách mạng nữa khi ngành công nghiệp phần mềm đang từng bước chuyển mình sang một
kiến trúc mới: Cloud computing – điện toán đám mây.
1.1 Định nghĩa cloud computing – điện toán đám mây
Hình 1.1: Giới thiệu về cloud computing.
Cloud-computing hiện vẫn là mẫu hình đang tiến hoán (evolting pagadism) , những định
nghĩa về mô hình này vẫn chưa thống nhất và các khái niệm hiện nay chỉ là tạm thời.
Những định nghĩa được nêu trong phần 1 của báo cáo này được lấy dựa trên các tài liệu
được sử dụng khá rộng rãi như wikipedia, hay định nghĩa của NIST - National Institute of
Standards and Technology. Trên thực tế, có thể có nhiều cách định nghĩa khác.
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 10
Theo NIST:
“Cloud computing is a model for enabling convenient, on-demand network access to a
shared pool of configurable computing resources (e.g., networks, servers, storage,
applications, and services) that can be rapidly provisioned and released with minimal
management effort or service provider interaction.”

Dịch: Điện toán đám mây là một mô hình cho phép truy cập mạng dễ dàng, theo yêu cầu,
đến một tài nguyên điện toán chia sẻ (như network, máy chủ, không gian lưu trữ, ứng
dụng và dịch vụ), có thể nhanh chóng cung cấp và thu hồi với chi phí quản lý và tương
tác với nhà cung cấp dịch vụ tối thiểu.
Source:
Định nghĩa trên đã nêu ra những đặc tính cơ bản nhất của điện toán đám mây, sẽ được
trình bày rõ hơn trong phần dưới đây:
1.2 Các đặc tính của điện toán đám mây
Cloud computing – điện toán đám mây liệu có đặc tính gì liên quan đến “đám mây”? Câu
trả lời là không. “Cloud” hoàn toàn mang nghĩa marketing.
5 đặc tính cơ bản (Essential characteristics):
On-demand self-service – Tự phục vụ theo nhu cầu
Khách hàng có thể tự tăng cường năng lực tính toán, ví dụ như thời gian server
hay không gian lưu trữ trên network, một cách hoàn toàn tự động dựa theo nhu cầu mà
không cần phải thương lượng với nhà cung cấp dịch vụ. Đặc tính này thường được biết
đến với tên gọi Pay-as-you-go
Broad network access- Truy cập thông qua mạng băng thông rộng.
Truy cập mạng băng rộng. Khả năng tính toán được cung cấp thong qua network
và được truy cập thông qua một cơ cấu chuẩn, mà có thể dung bằng nhiều nền tảng client
khác nhau (như mobile phones, laptops, và PDA)
Resource pooling – Quay vòng tài nguyên.
Tài nguyên điện toán của nhà cung cấp được quay vòng để phục vụ cho nhiều
khách hàng sử dụng một mô hình multi-tenant, với các tài nguyên thực và ảo hóa khác
nhau được cấp phát và tái cấp phát một cách động (dynamically) tùy thuộc vào yêu cầu
của khác hàng. Không phụ thuộc vị trí … khách hàng về tổng quát không có quyền hay
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 11
thậm chí là không có hiểu biết về vị trí chính xác của các tài nguyên được cung cấp
nhưng có thể xác định vị trí của các tài nguyên cấp cao hơn (ví dụ như nước, bang,
datacenter). Các tài nguyên bao gồm không gian lưu trữ, tính toán, bộ nhớ, băng thông
mạng và các máy ảo.

Rapid elasticity - Co giãn nhanh.
Khả năng tính toán có thể được cung cấp một cách nhanh chóng và co giãn, trong
một số trường hơp là tự động, để có thể giãn ra hoặc co vào phụ thuộc vào nhu cầu người
dùng. Đối với khách hàng, tài nguyên hiện có được coi như như vô hạn và có thể mua với
bất kì số lượng nào vào bất kì thời gian nào.
Measured Service.
Các hệ thống cloud tự động điều khiển và tối ưu hóa tài nguyên sử dụng bằng cách
trừu tượng hóa tương ứng với kiểu dịch vụ (lưu trữ, khả năng xử lý, băng thông, và số
người dùng active). Tài nguyên sử dụng có thể được giám sát, điều khiển và báo cáo một
cách trong suốt cho cả nhà cung cấp và khách hàng của dịch vụ đã dùng.
5 đặc tính ở trên do NIST đưa ra. Một số tài liệu đưa thêm đặc tính không phụ
thuộc vào địa điểm – Location Independence. Điều này có thể hiểu như có thể sử dụng
các dịch vụ của cloud computing từ mọi nơi. Tuy nhiên, đặc tính này có thể coi như đồng
nhất với đặc tính Broadband network access nên không được xét đến trong báo cáo này.
3 mẫu hình dịch vụ (3 service model)
3 mẫu hình dịch vụ cơ bản mà cloud computing đang được triển khai là
Infrastucture as a Service (IssA), Platform as a Service (PaaS) và Software as a Service
(SaaS).
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 12
Hình 1.2: Các kiểu hình dịch vụ đối với Cloud computing
On-Premises:
Ứng dụng chạy hoàn toàn trên hệ thống của doanh nghiệp. Đây là kiểu dịch vụ
phổ biến hiện nay. Doanh nghiệp quản lý hoàn toàn về hạ tầng mạng, hệ thống lưu trữ,
máy chủ,ảo hoá, hệ điều hành, phần mềm tầng giữa, các lớp runtime, dữ liệu và ứng
dụng. Trong phần còn lại của báo cáo này, các ứng dụng chạy trên hệ thống doanh nghiệp
như thế này sẽ được gọi chung là các ứng dụng on-premises
Các ứng dụng/dịch vụ On-premises được hiểu như các ứng dụng và dịch vụ chạy trên
nền tảng cơ sở hạ tầng của doanh nghiệp, chứ không phải trên cloud. Trong phần còn lại
của báo cáo này, khái niệm on-premises sẽ được dùng để chỉ các ứng dụng, dịch vụ như
vậy.

Cung cấp dịch vụ cơ sở hạ tầng (Infrastructure as as Service):
Khách hàng chỉ quản lý từ phần mềm tầng giữa – middeware trở lên, còn lại các
tầng từ hệ điều hành trở xuống do nhà cung cấp dịch vụ quản lý. Các dịch vụ dạng IaaS
hiện có:
Computers (Amazon EC2, Rackspace, GoGrid )
Storage (Amazon S3, MobileMe, Google Drive )
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 13
Elasticity (Rightscale…)
Bandwidth (Limelight, Amazon CloudFront…)
Lợi ích của IaaS Thách thức của IaaS
- Hệ thống được quản lý bởi SLA
giảm bớt được các lỗ thủng
- Thu nhập cao hơn trên tài nguyên
- Giảm chi phí do:
+ Ít phần cứng hơn
+Giảm bớt chi phí không gian
+Tăng tính tự động hoá và giảm bớt
sự can thiệp của các nhà quản trị
+ Giảm bớt tiêu thụ năng lượng
- Khả năng đạt được tiêu thụ theo yêu
cầu – consumption on demand.
- Tính di động - portability của các
ứng dụng
- Sự hoàn thiện của các công cụ quản
lý hệ thống
- Tích hợp qua giới hạn của Cloud
- Các vấn đề về bảo mật bên trong
Bảng 1.3: Lợi ích và thách thức đối với IaaS
Cung cấp dịch vụ cơ sở hạ tầng (Platform as a Service):
Khách hàng chỉ quản lý ứng dụng và dữ liệu của mình, các tầng phía dưới, từ tầng

runtime trở xuống do nhà cung cấp dịch vụ quản lý.
Các dịch vụ dạng PaaS hiện có:
Salesforce.com, Apprenda SaaSGrid, Google App Engine, Microsoft Azure, Appistry,
Talis Platform
Lợi ích của PaaS Thách thức
- Pay-as-you-go đối với môi trường
phát triển, test và kinh doanh
- Cho phép các nhà phát triển tập
trung vào mã ứng dụng
- Nền tảng toàn cầu
- Loại bỏ các phụ thuộc phần cứng và
các vấn đề về dung lượng (Capacity
concerns)
- Tính co giãn sẵn có
- Mô hình triển khai đơn giản
- Điều hành
- Bị trói với nhà cung cấp
- Mở rộng mẫu hình bảo mật với nhà
cung cấp
- Khả năng kết nối
- Sự tin cậy đối với SLA của bên thứ
3.
Bảng 1.4: Lợi ích và thách thức đối với PaaS
Cung cấp dịch vụ phần mềm (SaaS):
Khách hàng sử dụng phần mềm của nhà cung cấp. Các dịch vụ dạng SaaS hiện có:
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 14
Google Apps, Zoho, Acrobat.com, iWork.com, Kashflow, FreeAgent, WordPress.com,
MobileMe, Salesforce.com
Lợi ích của SaaS Thách thức của SaaS
- Tốc độ

- Giảm chi phí ban đầu, có khả năng
giảm chi phí toàn bộ (life-time cost
- Chuyển một phần/tất cả trách nhiệm
hỗ trợ
- Loại bỏ các nguy cơ về giấy phép
- Loại bỏ nguy cơ về tương thích
phiên bản
- Giảm ảnh hưởng của phần cứng
- Yêu cầu mô hình bảo mật với nhà
cung cấp (sự riêng tư và quyển sở
hữu dữ liệu)
- Điều hành và quản lý chi phí
- Đồng bộ giữa client và vendor
migration
- Hỗ trợ người dùng cuối tích hợp
- Khả năng co giãn
Bảng 1.4 Lợi ích và thách thức đối với SaaS
4 mẫu đóng gói (4 deployment models)
Private cloud.
Cloud riêng: Kiến trúc đám mây được điều khiển bởi riêng một tổ chức. Nó có thể được
quản lý bởi tổ chức hoặc một bên thứ ba và có thể tồn tại
Community cloud.
Kiến trúc đám mây được chia sẻ giữa một số tổ chức và hỗ trợ một cộng đồng cụ thể có
cùng các mối quan tâm (ví dụ: nhiệm vụ, yêu cầu an ninh, chính sách quản lý và … )Nó
có thể được quản lý bởi các tổ chức hoặc một bên thứ 3, và có thể tồn tại on-premises
hoặc off-premises
Public cloud.
Cloud mở: Kiến trúc đám mây được được công bố ra cộng đồng hoặc một nhóm các
doanh nghiệp lớn và do một tổ chức cung cấp dịch vụ cloud sở hữu.
Hybrid cloud.

Cloud lai: Kiến trúc đám mây là một tổ hợp của 2 hay nhiều cloud (private, community
hoặc public), vẫn giữ những thực thể riêng biệt nhưng có cùng một công nghệ chuẩn hóa
hay có chủ quyền, cho phép dữ liệu và tính di động của ứng dụng
Cloud computing và grid computing:
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 15
Cloud computing có thể coi là một xây dựng – implementation – đặc biệt của kiến trúc
client-server. Chính vì vậy, nó thường được đem so sánh với distributed computing và cụ
thể hơn là grid computing. Dưới đây sẽ là so sánh chi tiết về 2 kiến trúc này:
Cloud computing và grid computing đều “co giãn”. Khả năng co giãn đạt được bằng việc
cân bằng tải các instance của ứng dụng, chạy riêng rẽ trên nhiều hệ điều hành và kết nối
với nhau thông qua các Web service. CPU và băng thông network được cấp phát và thu
hồi theo yêu cầu. Khả năng lưu trữ của hệ thống tăng và giảm phụ thuộc vào số người
dùng, số instance, và lượng dữ liệu chuyển đổi ở một thời điểm xác định.
Cả 2 kiểu điện toán kết hợp multitenacy (sẽ được giải thích ở dưới) và multitask (đa
nhiệm) , điều này có nghĩa là nhiều khách hàng có thể thực hiện các công việc khác nhau,
truy cập một hay nhiều instance ứng dụng. Chia sẻ tài nguyên giữa nhiều user hỗ trợ
giảm chi phí cơ cấu hạ tầng và dung lượng tải lớn nhất (peak load capacity). Cloud và
Grid computing cung cấp SLA – service-level agreement (thoả thuận mức ứng dụng) với
đảm bảo thời gian sẵn sàng (uptime) lên đến 99%. Nếu một dịch vụ dưới mức đảm bảo
uptime đó, khách hàng sẽ nhận được tiền bồi thường.
Multi-tenacy là một nguyên lý cấu trúc, trong đó một ứng dụng chạy ở một instance phục
vụ đồng thời nhiều user (multitenant)
Đối với cloud computing, việc lưu trữ dữ liệu là rất mềm dẻo, có thể lưu trữ dữ liệu nhỏ
1byte, đến hàng terabytes. Grid computing có thể lưu trữ được các đối tượng có kích
thước 1 byte, nhưng điều này hoàn toàn không kinh tế. Trong mạng lưới data, kích thước
của dữ liệu phân tán phải lớn để đem lại lợi ích cao nhất
Grid computing Cloud Computing
Ý tưởng bên dưới Utility computing Utility Computing
Lợi ích chính Giải quyết các vấn đề tính
toán phức tạp

Cung câp một môi trường
co giãn chuẩn cho việc phát
triển, kiểm tra và triển khai
các phần mềm lấy mạng làm
trung tâm (network-centric)
Cấp phát và phân phối tài
nguyên
Điều hành và quản lý việc
chia sẻ tài nguyên, dùng các
công cụ lập lịch
(schedulers)
Mô hình khách hàng <->
nhà cung cấp đơn giản, trả
tiền theo sử dụng
Domain Nhiều domain Domain duy nhất
Đặc tính Miễn phí Thương mại
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 16
Bảng 1.5 So sánh giữa Cloud computing và grid computing
1.3 Tại sao lại chọn cloud –computing
Trước hết, phải nói rằng cloud-computing hoàn toàn không phải phải là một kiến
trúc phần mềm mới. Như Lawrence Ellison, chủ tịch tập đoàn Oracle từng phát biểu:
Cloud computing chỉ là “những gì chúng ta đã làm” và “việc duy nhất cần thay đổi trong
thời gian tới là quảng cáo” (nguồn: và
), có thể thấy qua việc minh họa
các dạng dịch vụ cloud computing ở trên, như các dịch vụ máy chủ riêng ảo, hosting,
webmail,… đều đã được nhắc đến từ lâu, trước khi thuật ngữ cloud-computing xuất hiện.
Nhiều người còn cho rằng, cloud computing là một thuật ngữ mang tính marketing hơn là
một xu hướng thật sự. Đây còn là vấn đề gây tranh cãi.
Tuy nhiên, ko thể phủ nhận cloud-computing đã thật sự hiện hữu và đem lại những
lợi ích thật sự cho ngành công nghiệp phần mềm và người dùng. Có thể kể đến trường

hợp của The New York Times, đã xử lý thành công hàng terabytes (nghìn tỷ byte) dữ liệu
với hàng trăm “compute units” của Amazon EC2 (sẽ được trình bày dưới đây) chỉ trong
36h. Nếu không phải là cloud computing, có thể đã mất đến hàng tuần hoặc hàng tháng
để xử lý toàn bộ dữ liệu này, với chi phí cao hơn nhiều.
Trong vài năm trở lại đây, với sự tham gia của các tập đoàn phần mềm lớn như
Microsoft, Google, hay Amazon, cloud computing đã có những bước tiến mạnh mẽ.
Đầu tiên, đó là việc cung cấp một nền tảng lập trình hợp nhất. Điều này cho phép
các nhà phát triển có thể nhanh chóng xây dựng ứng dụng đám mây trên nền tảng mà
công ty cung cấp, với những cấu trúc và API được thiết kế dành riêng cho cloud-
computing. Thứ hai, một công cụ quản lý hợp nhất, cho phép khách hàng sử dụng cloud-
computing có thể tuỳ biến dịch vụ cho phù hợp với nhu cầu của mình một cách đơn giản
và dễ dàng. Những điều này khiến cloud-computing có thể trở thành một xu hướng nổi
bật trong thời gian tới.
Lợi ích của Cloud-computing
Hãy tưởng tượng một công ty với khoảng 100 nhân viên cần sử dụng các hệ thống
phần mềm văn phòng cũng như nghiệp vụ. Để hệ thống này có thể là việc một cách hiệu
quả, chi phí bỏ ra là không nhỏ: Chi phí mua phần cứng (máy chủ, máy tính cá nhân cho
từng nhân viên, các thiết bị mạng), phần mềm (hệ điều hành, các phần mềm văn phòng và
nghiệp vụ), chi phí nhân công (thuê người lắp đặt, cài đặt, quản trị, bảo trì hệ thống). Chi
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 17
phí này là không nhỏ và khiến nhiều công ty gặp khó khăn trong việc triển khai tin học
hóa doanh nghiệp.
Ngoài ra, có thể trong hoạt động của doanh nghiệp, có những lúc tải của hệ thống
vượt qua năng lực hiện có. Để phục vụ điều này thì doanh nghiệp buộc phải nâng cấp hệ
thống của mình, thêm máy chủ, cải tiến phần mềm. Chi phí này là rất lớn. Nhưng sau khi
nâng cấp hệ thống, có những lúc tải lại xuống thấp, khiến cho năng lực hệ thống trở nên
lãng phí.
Với Cloud Computing, những vấn đề này được giải quyết một cách căn bản:
- Không cần hệ thống máy chủ và hệ thống mạng nội bộ trong công ty, chỉ cần các
máy client chi phí thấp được kết nối mạng Internet.

- Giảm bớt chi phí phần mềm vì không cần các phần mềm nghiệp vụ cài riêng. Có
thể chỉ cần một hệ điều hành và một trình duyệt để làm việc.
- Giảm bớt chi phí nhân công vì không cần quản trị hệ thống.
- Giảm bớt chi phí điện năng lãng phí(Go Green)
- Linh hoạt và mềm dẻo khi có thay đổi về tải. Khi cần tải nặng, hệ thống có thể tự
tăng khả năng xử lý của mình lên mà không cần can thiệp, và cũng tự động giảm
năng lực xử lý của mình khi tải thấp
Hạn chế của Cloud computing
Tuy nhiên, cloud computing không phải là giải pháp toàn diện và có thể áp dụng cho
mọi trường hợp phần mềm. Nói cách khác, cloud computing sẽ không hoàn toàn thay thế
các giải pháp dịch vụ phần mềm hiện có:
- Trước hết, dữ liệu của doanh nghiệp, cá nhân được upload lên trên cloud. Điều
này đồng nghĩa với doanh nghiệp, cá nhân phải tin tưởng vào nhà cung cấp dịch
vụ. Ngoài ra, ở một số doanh nghiệp với dữ liệu đặc thù, như ngân hàng, có những
luật quy định doanh nghiệp phải lưu trữ dữ liệu của khách hàng on-premises.
Trong những trường hợp như vậy, việc triển khai ứng dụng trên public cloud là
điều không thể.
- Tốc độ truy xuất ứng dụng. Với một số dịch vụ, người dùng không thể xác định
hay thiết lập vị trí của dữ liệu (trừu tượng hoá hoàn toàn ở cấp độ trung tâm dữ
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 18
liệu). Nếu người dùng và trung tâm dữ liệu ở xa nhau, thì sẽ dẫn đến hạn chế trong
tốc độ truy xuất và tăng độ trễ.
Để giải quyết vấn đề này, một số nhà cung cấp đưa ra giải phái CDN – Content
Delivery Network, cho phép lưu trữ các dữ liệu mà người dùng thường xuyên truy
cập ở một trung tâm dữ liệu gần với họ, nhằm tăng tốc độ truy xuất và giảm độ
trễ. Ví dụ với Amazon S3 và dịch vụ Blob của Windows Azure Storage
- Ngoài ra, bảo mật là vấn đề rất lớn. Nhà cung cấp dịch vụ cam kết bằng hợp đồng,
nhưng đối với một số khách hàng bảo mật chỉ có thể đạt được mức độ cần thiết khi
họ toàn quyền kiểm soát dữ liệu (cả về phần cứng và phần mềm – vật lý và logic)
và áp dụng các chính sách phù hợp.

Trong đó, bảo mật vẫn là mối quan tâm lớn nhất, theo khảo sát của InformationWeek:
Hình 1.6: Mối quan tâm đối với cloud computing
1.4 Các nền tảng Cloud computing phổ biến :
Như đã nói ở trên, Cloud computing đã và đang trở thành một xu hướng nổi bật trong
ngành công nghệ phần mềm và nhận được sự hậu thuẫn mạnh mẽ từ những công ty phần
mềm hàng đầu. Tuy nhiên, trong khuôn khổ của đề tài này, em chỉ đề cập đến 3 nền tảng
được sử dụng phổ biến nhất (đúng hơn là có khả năng phát triển lớn nhất trong tương lai)
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 19
1.4.1 Amazon EC2
Website: />EC2 là từ viết tắt của Elastic Cloud Computing. Đây là dịch vụ cung cấp khả năng tính
toán tuỳ biến trên cloud. Để lưu trữ dữ liệu, Amazon cung cấp song song dịch vụ S3
(Simple Storage Service).
Cơ sở của EC2 là các máy ảo mà Amazon gọi là AMI – Amazon Machine Images, chứa
một hệ điều hành, các ứng dụng và dữ liệu. Khách hàng có thể quản lý bao nhiêu instance
của mỗi AMI chạy vào mỗi thời điểm. Amazon cung cấp 3 lựa chọn cho việc tạo các
AMI này: Standard, High-Memory và High-CPU, với kích cỡ từ 1 nhân ảo chạy trên nền
32-bit, cho đến 8 nhân ảo chạy trên nền 64bit Cụ thể:
Standard: dành cho các ứng dụng tổng quát
High-Memory Instances: Dành cho các ứng dụng yêu cầu nhiều bộ nhớ, như các Web
Server
High-CPU: dành cho các ứng dụng cần nhiều tài nguyên CPU hơn RAM, thích hợp với
các ứng dụng yêu cầu tính toán nặng.
EC2 hỗ trợ các ngôn ngữ sau:
-Java
-PHP
-Ruby
-Các ngôn ngữ trên nền tảng Microsoft .NET
1.4.2 Google App Engine
Website: />Google App Engine là giải pháp chạy ứng dụng trên cơ cấu hạ tầng của Google,
cho phép nhà phát triển viết ứng dụng và upload lên các trung tâm dữ liệu của Google.

Google App Engine hỗ trợ 2 ngôn ngữ chính:
- Java, và các ngôn ngữ giống như Java (Jruby, Groovy, Scala,…) chạy trên môi
trường Java 6.
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 20
- Python 2.5.2 (phiên bản 2.6 chưa được hỗ trợ, phiên bản 3 đang được cân nhắc),
chạy trên nền Python Runtime Environment. Ứng dụng phải được viết hoàn toàn
trên nền Python, các extensions viết trên nền C không được hỗ trợ
Google App Engine cũng cung cấp một môi trường Sandbox (tương tự như các máy
ảo) và một hệ cơ sở dữ liệu Datastore. Datastore không phải là CSDL quan hệ truyền
thống mà thuộc dạng “schemeless”, với nền tảng lưu trữ là các thực thể - entity và thuộc
tính – property. Trong báo cáo này, chúng ta sẽ thấy Datastore tương tự như Table
service của Windows Azure Storage. Phiên bản App Engine Business dành cho khách
hàng lớn sẽ hỗ trợ BigTable, một hệ quản trị cơ sở riêng của Google.
Google App Engine cho phép sử dụng các tài khoản Google để xác thực các dịch
vụ, đồng thời có thể sử dụng các công cụ Google khác trong dịch vụ của mình.
1.4.3 Microsoft Windows Azure:
Website:
Lý do chọn Windows Azure làm nền tảng nghiên cứu của đề tài này:
Windows Azure là giải pháp cloud computing được đầu tư một cách nghiêm túc
nhằm thương mại hóa. Microsoft đã xây dựng 16 data centers trên khắp thế giới và vẫn
đang tiếp tục xây dựng thêm. Điều này đảm bảo cho tương lai của Windows Azure, ít
nhất là trong thời gian tới.
Windows Azure được xây dựng trên những nền tảng rất quen thuộc của Microsoft:
Windows Server 2008 với Hyper-V, SQL Server 2008 và .NET Framework. Các ứng
dụng hiện nay (đặc biệt là các ứng dụng web ASP.NET và dịch vụ web WCF – Windows
Communication Framework) có thể chạy trên nền Windows Azure mà hầu như không
phải sửa đổi hoặc chỉ phải sửa đổi rất ít. Điều này tạo thuận lợi rất lớn cho các nhà phát
triển cũng như các công ty khi muốn triển khai ứng dụng của mình trên Windows Azure.
Chính vì những lý do như vậy, phần 2, phần trọng tâm của đồ án này sẽ đi sâu vào
nghiên cứu kiến trúc của Windows Azure Platform dưới góc độ lập trình để có cái nhìn

sâu sắc và chi tiết hơn về nền tảng này.
Một trong những nhược điểm của Windows Azure Platform hiện nay là tài khoản
miễn phí dành cho nhà phát triển đã ngừng cung cấp. Các nhà phát triển buộc phải mua
các gói dịch vụ nếu như muốn tiếp tục làm việc với nền tảng này. Điều này gây nhiều khó
khăn trong việc thử nghiệm ứng dụng demo, nhất là Microsoft không cho phép mua dịch
vụ từ Việt Nam!
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 21
Phần 2: Windows Azure Platform:
Windows Azue Platform là nền tảng phục vụ cho điện toán đám mây của Microsoft. Đây
là nền tảng đầu cuối (end-to-end) cho việc phát triển và triển khai các dịch vụ đám mây.
Mỗi thành phần của Windows Azure Platform được thiết kế phục vụ một chức năng cụ
thể đối với các dịch vụ cloud. Trong phần này sẽ trình bày về kiến trúc mức cao của nền
tảng Windows Azure:
2.1.Kiến trúc Windows Azure Platform :
Windows Azure Platform bao gồm 3 thành phần chính: Windows Azure, SQL Azure và
App Fabric. Hình dưới đây minh họa 4 thành phần của Windows Azure:
Hình 2.1 Cấu trúc cơ bản của Windows Azure Platform
2.1.1Hệ điều hành Windows Azure :
Windows Azure là hệ điều hành nằm bên dưới, chịu trách nhiệm chạy các ứng dụng
cloud trên Windows Azure platform. Microsoft đặt tên Windows Azure là hệ điều hành
đám mây vì nó cung cấp tất cả các tính năng cần thiết để chạy các dịch vụ nền cloud. Nó
cung cấp môi trường runtime, bao gồm một máy chủ web, các dịch vụ tính toán, lưu trữ
đơn giản, hàng đợi (queues), các dịch vụ quản lý và các bộ cân bằng tải (load-balancer).
Windows Azure cũng cung cấp cho các nhà phát triển một fabric cục bộ cho việc xây
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 22
dựng và kiểm tra các service trước khi chúng được triển khai tới Windows Azure trên
cloud. 3 dịch vụ chủ chốt của Windows Azure bao gồm:
Compute:
Dịch vụ tính toán cung cấp khả năng hosting các dịch vụ trên nền tảng Windows Server
2008 64-bit với hỗ trợ Hyper-V. Nền tảng này được ảo hóa và được thiết kế để mở rộng

động (dynamically scalable) theo yêu cầu. Nền tảng này chạy trên Internet Information
Server (IIS) 7 cho các ứng dụng Web ASP.NET. Vào thời điểm này, hệ điều hành
Windows phía dưới và các thành phần cơ sở hạ tầng như IIS không xuất hiện trực tiếp đối
với các nhà phát triển. Sự trừu tượng hóa ở mức hệ điều hành, các nhà phát triển có thể
viết các dịch vụ managed (nền .NET) unmanaged (native code truyền thống) để chạy trên
Windows Azure mà không cần quan tâm về cơ sở hạ tầng của hệ điều hành phía dưới.
Storage:
Có 3 kiểu lưu trữ được hỗ trợ trong Windows Azure: table, blob và queue. Các kiểu lưu
trữ này hỗ trợ truy cập trực tiếp dựa trên các API của REST. Windows Azure table không
phải là kiểu bảng cơ sở dữ liệu quan hệ truyền thống như bảng trong SQL Server. Thay
vào đó, chúng cung cấp khả năng lưu trữ dữ liệu có kiến trúc, với mô hình dữ liệu độc
lập, thường được gọi là mô hình thực thể entity. Bảng được thiết kế để lưu trữ hàng
terabyte dữ liệu có độ sẵn sang cao, ví dụ như thông tin người dùng trên một site thương
mại lớn. Windows Azure blob được thiết kế để lưu trữ các tập hợp dữ liệu nhị phân –
binary lớn như video, ảnh, nhạc trên đám mây. Kích thước lớn nhất cho mỗi blob là
50GB. Windows Azure queues là các kênh giao tiếp không đồng bộ cho việc kết nối giữa
các dịch vụ và ứng dụng, không chỉ trong Windows Azure mà còn cho cả các ứng dụng
on-premises. Cũng có thể sử dụng queues để giao tiếp giữa các instance của Windows
Azure role. Kiến trúc của queue được thiết kế để hỗ trợ số lượng không giới hạn các
message, nhưng kích thước của mỗi message không được vượt quá 8KB. Bất kì tài khoản
nào có thể truy cập đến lưu trữ có thể truy cập đến table, blob và queue.
REST: Khái niệm REST được Roy Thomas phát minh trong luận văn tiến sĩ của mình
“Architectual Styles and the Design of Network-based Software Architectures” –
Representation State Transfer – REST là một cấu trúc giao diện cho các hệ thống triển
khai và truy cập thông qua network. Các entry point của hệ thống được trừu tượng hoá
vào web resource. Trong REST, mỗi tài nguyên có siêu dữ liệu và được định danh duy
nhất bằng một URL. Các thao tác trên tài nguyên cũng được mở thông qua URL, mỗi
URL tương tác với tài nguyên trả về một đại diện, có thể là bất kì tài liệu hay đối tượng
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 23
nhị phân nào. Ví dụ, các URL cho blob, queue và table đã trình bày ở trên đại diện REST

URL cho các tài nguyên của kiểu lưu trữ đó. Truy vấn các REST URL này trả về một đại
diện thích hợp cho các tài nguyên, ví dụ như các file blob hay các queue message.
Management:
Management services cung cấp cơ sở hạ tầng tự động và khả năng quản lý đối với các
dịch vụ Windows Azure trên cloud. Các khả năng này bao gồm việc tự động quản lý các
máy ảo và các dịch vụ đã triển khai, cấu hình switch, bộ định tuyến truy cập (access
router) và các bộ cân bằng tải (load-balancer) để duy trì trạng thái của dịch vụ mà người
dùng đã định nghĩa. Management services bao gồm một fabric controller chịu trách
nhiệm bảo trì dịch vụ. Fabric controller trừu tượng hóa cơ sở hạ tầng ảo hóa phía dưới đối
với các dịch vụ tính toán và lưu trữ. Nó cũng hỗ trợ việc nâng cấp động các dịch vụ mà
không gây ra bất kì downtime hay giảm tốc độ nào. Dịch vụ quản lý của Windows Azure
đồng thời hỗ trợ ghi lại file log cũng như tuỳ chọn dò vết – tracing và giám sát sử dụng
dịch vụ
2.1.2 SQL Azure:
SQL Azure là một cơ sở dữ liệu quan hệ trên nền tảng Windows Azure. Nó cung cấp các
khả năng cơ bản của hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) như một dịch vụ, và nó
được xây dựng trên nền tảng của SQL Server. Trong phiên bản hiện tại. các nhà phát
triển có thể truy cập đến SQL Server dử dụng tabular data stream (TDS), là cơ cấu
chuyển để truy cập các instance SQL Server on-premises thong qua các SQL client. SQL
client có thể là bất kì client nào, như ADO.NET, LINQ, ODBC, JDBC, ADO.NET Entity
Framework, hay ADO.NET Data Services
ADO.NET Data Services là một nền tảng độc lập để truy cập các dịch vụ dữ liệu nền
web. Nó có thể dùng không chỉ cho các dịch dụ dữ liệu nền web mà còn cả các dịch vụ
dữ liệu on-premises như SQL Server 2008.
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 24
Hình 2.2: Cấu trúc của hệ quản trị cơ sở dữ liệu SQL Azure
SQL Azure cung cấp các dịch vụ sau:
Lưu trữ dữ liệu quan hệ: Engine lưu trữ dữ liệu quan hệ là xương sống của SQL Azure,
dựa trên nền tảng SQL Server. Thành phần này cung cấp các tính năng của SQL Server
như bảng – table, chỉ mục – index, khung nhìn – view, stored procedure và trigger.

Đồng bộ dữ liệu: Data Sync cung cấp sự đồng bộ và tập hợp của dữ liệu từ/đến SQL
Azure tới các thiết bị của doanh nghiệp, trạm làm việc, đối tác và khách hàng sử dụng
Microsoft Sync Framework
Quản lý: Thành phần quản lý cung cấp khả năng cung cấp, đo đạc, tính toán, cân bằng tải,
vượt qua lỗi (failover) và bảo mật cho SQL Azure. Dựa trên SLA, mỗi CSDL được lặp
lại với trên 1 máy chủ chính và 2 máy chủ phụ. Trong trường hợp xảy ra lỗi, việc chuyển
đổi giữa các máy chủ chính và phụ được thực hiện tự động mà không xảy ra gián đoạn.
Truy cập dữ liệu: thành phần truy cập dữ liệu định nghĩa các phương thức khác nhau của
việc truy cập dữ liệu SQL Azure thông qua lập trình. Hiện tại, SQL Azure hỗ trợ Tabular
Data Stream (TDS), bao gồm ADO.NET, Entity Framework, ADO.NET Data Services,
ODBC, JDBC và LINQ. Các nhà phát triển có thể truy cập SQL Azure trực tiếp từ các
ứng dụng on-premises hoặc thông qua các dịch vụ cloud đã triển khai trên Windows
Azure. Có thể đặt cluster của dịch vụ tính toán Windows Azure và instance của SQL
Azure cùng nhau để tăng tốc độ truy cập dữ liệu.
Sinh viên thực hiện: Mai Văn Quân – Lớp Hệ thống thông tin – K50 25

×