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
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
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ử
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.
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
- 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.
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
- 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.
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
độ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
Đồ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