ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
CHƯƠNG TRÌNH ĐẠO TẠO THẠC SĨ CNTT QUA MẠNG
________________
BÁO CÁO THU HOẠCH MÔN HỌC
TÍNH TOÁN LƯỚI
Đề tài:
Tìm hiểu tổng quan về điện toán đám
mây và giới thiệu một số công nghệ
điện toán đám mây của các hãng lớn
Giảng viên : PGS.TS. Nguyễn Phi Khứ
Sinh viên thực hiện: Tăng Chí Tâm
MSSV : CH1101130
Lớp : CH06
TP. HCM, NĂM 2013
Mục Lục
1. Tổng quan về công nghệ điện toán đám mây
(Cloud Computing)
1.1. Khái niệm điện toán đám mây (ĐTĐM)
Theo Wikipedia thì ĐTĐM là môi trường tính toán dựa trên internet mà ở đó tất
cả phần mềm, dữ liệu, tài nguyên được cung cấp cho máy tính và các thiết bị khác theo
nhu cầu
Hình 1. Mọi thứ đều tập trung vào đám mây
(trích từ: />ecosystem/)
Đứng ở góc nhìn khoa học kỹ thuật cũng có nhiều định nghĩa khác nhau, trong
đó có hai định nghĩa của Ian Foster và Rajkumar Buyya được dùng khá phổ biến và có
nhiều điểm tương đồng.
Theo Ian Foster: Cloud Computing là một mô hình điện toán phân tán có tính
co giãn lớn mà hướng theo co giãn về mặt kinh tế, là nơi chứa các sức mạnh tính toán,
kho lưu trữ, các nền tảng và các dịch vụ được trực quan, ảo hóa và co giãn linh động,
sẽ được phân phối theo nhu cầu cho các khách hàng bên ngoài thông qua Internet.
Theo Rajkumar Buyya: Cloud là một loại hệ thống phân bố và xử lý song gồm
các máy tính ảo kết nối với nhau và được cung cấp động cho người dùng như một
hoặc nhiều tài nguyên đồng nhất dựa trên sự thỏa thuận dịch vụ giữa nhà cung cấp và
người sử dụng.
3
Hình 2. Hình ảnh Cloud Computing
Cả hai định nghĩa trên đều định nghĩa Cloud Computing là một hệ phân bố,
cung cấp các dạng tài nguyên ảo dưới dạng dịch vụ một cách linh động theo nhu cầu
của người dùng trên môi trường internet.
Theo Viện tiêu chuẩn và công nghệ quốc gia Bộ Thương Mại Mỹ (NIST): Điện
toán đám mây là một mô hình cho phép truy cập mạng thuận tiện, theo nhu cầu đến
một kho tài nguyên điện toán dùng chung, có thể định cấu hình (ví dụ như mạng, máy
chủ, lưu trữ, ứng dụng) có thể được cung cấp và thu hồi một cách nhanh chóng với yêu
cầu tối thiểu về quản lý hoặc can thiệp của nhà cung cấp dịch vụ.
1.2. Các tính chất cơ bản của ĐTĐM
1.2.1. Cơ sở hạ tầng linh động (Dynamic computing infrastructure)
Điện toán mây yêu cầu cơ sở hạ tầng tính toán phải linh động, tức là nó
phải được chuẩn hóa để có thể "co dãn" được các nguồn lực điện toán. Trước
hết, hệ thống máy chủ của điện toán đám mây phải luôn dư thừa một lượng tài
nguyên nhất định để đảm bảo tính sẵn sàng khi có yêu cầu mở rộng mà không
cần thay đổi kiến trúc của tất cả các cụm máy. Tiếp đến, một hạ tầng linh động
thì nhất thiết phải được ảo hóa để có thể "co dãn". Ngày nay, môi trường ảo hóa
tạo điều kiện cho việc ảo hóa máy chủ thành nền tảng để chạy các dịch vụ (điển
hình là sản phẩm của VMWare, Microsoft hay Xen). Cơ chế ảo hóa sẽ đảm bảo
việc cấp phát và thu hồi tài nguyên cho các dịch vụ diễn ra một cách tự động
trên nền tảng phần cứng sẵn có. Điều này sẽ giúp tối đa hiệu năng sử dụng và
4
tái sử dụng tài nguyên, đồng thời làm tăng hiệu quả của vốn đầu tư cho trang
thiết bị phần cứng.
Hình 3. Sản phẩm VMware hiện đang được sử dụng như một nền tảng ảo hóa phổ
biến nhất trong lĩnh vực điện toán đám mây
Như vậy, cơ sở hạ tầng linh động là mấu chốt quan trọng trong việc hỗ
trợ tính mềm dẻo của việc cấp phát và thu hồi dịch vụ theo yêu cầu của người
sử dụng một cách nhanh chóng nhất mà vẫn duy trì sự an toàn và độ tin cậy cao
của hệ thống.
1.2.2. Môi trường điện toán hướng dịch vụ (IT service-centric approach)
Điều này tương phản hoàn toàn với mô hình truyền thống mà ta đã biết.
Trong hầu hết các trường hợp, người sử dụng thường chỉ muốn sử dụng vài
dịch vụ hay ứng dụng với mục đích cố định và có thời hạn; họ không muốn bị
sa lầy vào việc quản lý hệ thống và môi trường mạng. Với điện toán đám mây,
người sử dụng có thể lựa chọn dịch vụ hay ứng dụng mình thích mà không phải
chịu đựng sự có mặt những thứ không cần thiết khác. Không những thế họ cũng
có thể hủy dịch vụ bất cứ lúc nào khi không còn nhu cầu sử dụng nữa. Mặt
khác, những vấn đề liên quan đến việc cài đặt, cấu hình, hay bảo trì hay nâng
cấp hệ thống giờ đây trở nên đơn giản hơn rất nhiều vì dịch vụ từ "đám mây" sẽ
làm nhiệm vụ đó giúp họ.
5
Hình 4. Người dùng có thể lựa chọn dịch vụ tùy theo nhu cầu (chẳng hạn sử dụng
phần mềm văn phòng trên Microsoft Office365 với giá vài dollars gồm những tính
năng cơ bản thay vì mua cả bộ phần mềm Office với giá hàng trăm dollars gồm hàng
trăm tính năng không dùng đến bao giờ)
Như vậy, cách tiếp cận hướng dịch vụ của điện toán đám mây sẽ giúp
cho người sử dụng thực hiện công việc được nhanh hơn, dễ dàng hơn và đồng
thời cũng tiết kiệm được đáng kể chi phí.
1.2.3. Mô hình sử dụng tự phục vụ (Self-service based usage model)
Việc tương tác với các "đám mây" vẫn đòi hỏi người sử dụng tự phục vụ
ở mức độ nhất định. Những công việc mà người dùng tự phục vụ điển hình là:
tải dữ liệu lên máy chủ (upload), cá nhân hóa giao diện, cài đặt, cấu hình, tinh
chỉnh hệ thống theo nhu cầu; v.v Những dịch vụ hỗ trợ người dùng tự phục vụ
thường có giao diện dễ sử dụng, có tính trực quan để họ có thể quản lý hiệu quả
của công việc và chất lượng của nhà cung cấp dịch vụ. Lợi ích của việc tự phục
vụ này đều đến từ hai phía. Từ góc độ người dùng thì điều đó đem lại cho họ
cảm giác về sự "sở hữu", “độc lập” và “tự do” trong quá trình sử dụng dịch vụ.
Còn đối với nhà cung cấp dịch vụ, càng nhiều dịch vụ tự phục vụ có thể được
6
chuyển sang phía người sử dụng thì lúc đó càng cần ít công việc mà họ phải quản
lý hơn.
1.2.4. Nền tảng tự quản lý (Self-managed platform)
Để nhà cung cấp dịch vụ điện toán đám mây làm việc một cách hiệu quả,
họ phải xây dựng một nền tảng tự quản lý cho hệ thống. Những "đám mây" tự
quản lý thường được điều khiển thông qua các phần mềm tự động và được
trang bị những tính năng như: tự động giải phóng tài nguyên để tái sử dụng; dự
trữ và dự phòng tài nguyên; lập kế hoạch và chính sách cho việc truy cập, sử
dụng, bảo vệ tài nguyên, v.v…
Hình 5. Một chính sách bảo vệ tài nguyên của VMware thể hiện tính năng tự trị: Khi
có sự cố xảy ra tại một máy chủ, dữ liệu lập tức được chuyển sang của máy chủ khác
để đảm bảo việc sử dụng của khách hàng không bị gián đoạn.
Tất cả các tính năng này vừa duy trì được sự mềm dẻo trong cung cấp
dịch vụ nhưng cũng đồng thời đảm bảo được những nguyên tắc trọng yếu trong
quản lý và vận hành hệ thống. Sự cân bằng này tạo ra những lợi ích không nhỏ
cho nhà cung cấp dịch vụ trong việc tiết kiệm thời gian, giảm thiểu công sức
quản lý về IT và giữ cho chi phí vận hành ở mức thấp, giải phóng tài nguyên để
tập trung cho các dự án có giá trị cao hơn.
7
1.2.5. Trả phí dựa trên mức độ sử dụng (Consumption-based billing)
Cuối cùng, điện toán mây hướng đến việc thanh toán tiêu dùng (usage-
driven). Khách hàng sẽ trả tiền cho lượng tài nguyên mà họ sử dụng và việc
thanh toán cũng dựa trên cơ sở tiêu thụ đó (có thể là: lượng băng thông, dung
lượng lưu trữ, số lượng tính năng, công suất tính toán hoặc thời gian vận hành,
v.v… ). Các ứng dụng nền tảng của điện toán mây phải cung cấp các cơ chế để
ghi lại thông tin về lượng sử dụng và gửi lại báo cáo hay tích hợp với các hệ
thống thanh toán của khách hàng.
Lợi ích về phía người sử dụng có thể thấy là việc tiết kiệm chi phí nhờ
trả tiền theo mức độ sử dụng. Còn đối với nhà cung cấp, cách tính này cho phép
họ theo dõi và tối ưu hóa được chi phí quản lý và vận hành hệ thống.
Để có thể hình dung một cách đơn giản nhất về những đặc trưng này, chúng ta
hãy liên tưởng mỗi "đám mây" là một máy bán bánh pizza tự động trong đó mỗi
bánh pizza được coi là một dịch vụ (pizza as service). Khi đó các đặc trưng của
một máy bán hàng tự động sẽ được thể hiện trong hình dưới đây:
Hình 6. Các đặc trưng cơ bản của một mô hình dịch vụ bán bánh pizza tự động.
8
1.3. Mô hình các lớp dịch vụ
Dịch vụ ĐTĐM rất đa dạng và bao gồm tất cả các lớp dịch vụ điện toán từ cung
cấp năng lực tính toán trên dưới máy chủ hiệu suất cao hay các máy chủ ảo, không
gian lưu trữ dữ liệu, hay một hệ điều hành, một công cụ lập trình, hay một ứng dụng
kế toán … Các dịch vụ cũng được phân loại khá da dạng, nhưng các mô hình dịch vụ
ĐTĐM phổ biến nhất có thể được phân thành 3 nhóm: Dịch vụ hạ tầng (Infrastructure
as a Service - IaaS), Dịch vụ nền tảng (Platform as a Service - PaaS) và Dịch vụ phần
mềm (Software as a Service - SaaS).
Hình 7. Các tầng điện toán đám mây được nhúng trong các thành phần "là một dịch
vụ"
1.3.1. Dịch vụ hạ tầng IaaS (Infrastructure as a Service - IaaS)
Dịch vụ IaaS cung cấp dịch vụ cơ bản bao gồm năng lực tính toán,
không gian lưu trữ, kết nối mạng tới khách hàng. Khách hàng (cá nhân hoặc tổ
chức) có thể sử dụng tài nguyên hạ tầng này để đáp ứng nhu cầu tính toán hoặc
cài đặt ứng dụng riêng cho người sử dụng. Với dịch vụ này khách hàng làm chủ
hệ điều hành, lưu trữ và các ứng dụng do khách hàng cài đặt. Khách hàng điển
hình của dịch vụ IaaS có thể là mọi đối tượng cần tới một máy tính và tự cài đặt
ứng dụng của mình.
Ví dụ điển hình về dịch vụ này là dịch vụ EC2 của Amazon
( Khách hàng có thể đăng ký sử dụng một máy
tính ảo trên dịch vụ của Amazon và lựa chọn một hệ thống điều hành (ví dụ
Windows hoặc Linux) và tự cài đặt ứng dụng của mình.
9
1.3.2. Dịch vụ nền tảng PaaS (Platform as a Service - PaaS)
Dịch vụ PaaS cung cấp nền tảng điện toán cho phép khách hàng phát
triển các phần mềm, phục vụ nhu cầu tính toán hoặc xây dựng thành dịch vụ
trên nền tảng Cloud đó. Dịch vụ PaaS có thể được cung cấp dưới dạng các ứng
dụng lớp giữa (middleware), các ứng dụng chủ (application server) cùng các
công cụ lập trình với ngôn ngữ lập trình nhất định để xây dựng ứng dụng. Dịch
vụ PaaS cũng có thể được xây dựng riêng và cung cấp cho khách hàng thông
qua một API riêng. Khách hàng xây dựng ứng dụng và tương tác với hạ tầng
ĐTĐM thông qua API đó. Ở mức PaaS, khách hàng không quản lý nền tảng
Cloud hay các tài nguyên lớp như hệ điều hành, lưu giữ ở lớp dưới. Khách hàng
điển hình của dịch vụ PaaS chính là các nhà phát triển ứng dụng (ISV).
Dịch vụ App Engine của Google là một dịch vụ PaaS điển hình, cho
phép khách hàng xây dựng các ứng dụng web với môi trường chạy ứng dụng và
phát triển dựa trên ngôn ngữ lập trình Java hoặc Python.
1.3.3. Dịch vụ phần mềm SaaS (Software as a Service - SaaS)
Dịch vụ SaaS cung cấp các ứng dụng hoàn chỉnh như một dịch vụ theo
yêu cầu cho nhiều khách hàng với chỉ một phiên bản cài đặt. Khách hàng lựa
chọn ứng dụng phù hợp với nhu cầu và sử dụng mà không quan tâm tới hay bỏ
công sức quản lý tài nguyên tính toán bên dưới.
Dịch vụ SaaS nổi tiếng nhất phải kể đến với
các ứng dụng cho doanh nghiệp mà nổi bật nhất là CRM. Các ứng dụng SaaS
cho người dùng cuối phổ biến là các ứng dụng office Online của Microsoft hay
Google Docs của Google.
1.4. Các mô hình triển khai
1.4.1. Đám mây “công cộng” (Public Cloud)
Mô hình đầu tiên được nói đến khi đề cập tới ĐTĐM chính là mô hình
Public Cloud. Đây là mô hình mà hạ tầng ĐTĐM được một tổ chức sỡ hữu và
cung cấp dịch vụ rộng rãi cho tất cả các khách hàng thông qua hạ tầng mạng
Internet hoặc các mạng công cộng diện rộng. Các ứng dụng khác nhau chia sẻ
10
chung tài nguyên tính toán, mạng và lưu trữ. Do vậy, hạ tầng ĐTĐM được thiết
kế để đảm bảo cô lập về dữ liệu giữa các khách hàng và tách biệt về truy cập.
Các dịch vụ Public Cloud hướng tới số lượng khách hàng lớn nên thường có
năng lực về hạ tầng cao, đáp ứng nhu cầu tính toán linh hoạt, đem lại chi phí thấp cho
khách hàng. Do đó khách hàng của dịch vụ trên Public Cloud sẽ bao gồm tất cả các
tầng lớp mà khách hàng cá nhân và doanh nghiệp nhỏ sẽ được lợi thế trong việc dễ
dàng tiếp cận các ứng dụng công nghệ cao, chất lượng mà không phải đầu tư ban đầu,
chi phí sử dụng thấp, linh hoạt.
1.4.2. Đám mây “doanh nghiệp” (Private Cloud)
Đám mây doanh nghiệp (Private Cloud) là mô hình trong đó hạ tầng đám
mây được sở hữu bởi một tổ chức và phục vụ cho người dùng của tổ chức đó.
Private Cloud có thể được vận hành bởi một bên thứ ba và hạ tầng đám mây có
thể được đặt bên trong hoặc bên ngoài tổ chức sở hữu (tại bên thứ ba kiêm vận
hành hoặc thậm chí là một bên thứ tư).
11
Private Cloud được các tổ chức, doanh nghiệp lớn xây dựng cho mình
nhằm khai thác ưu điểm về công nghệ và khả năng quản trị của ĐTĐM. Với
Private Cloud, các doanh nghiệp tối ưu được hạ tầng IT của mình, nâng cao
hiệu quả sử dụng, quản lý trong cấp phát và thu hồi tài nguyên, qua đó giảm
thời gian đưa sản phẩm sản xuất, kinh doanh ra thị trường.
1.4.3. Đám mây “chung” (Community Cloud)
Đám mây chung (Community Cloud) là mô hình trong đó hạ tầng đám
mây được chia sẻ bởi một số tổ chức cho cộng đồng người dùng trong các tổ
chức đó. Các tổ chức này do đặc thù không tiếp cận với các dịch vụ Public
Cloud và chia sẻ chung một hạ tầng ĐTĐM để nâng cao hiệu quả đầu tư và sử
dụng.
12
1.4.4. Đám mây “lai” (Hybrid Cloud)
Mô hình đám mây lai (Hybrid Cloud) là mô hình bao gồm hai hoặc
nhiều hơn các đám mây trên tích hợp với nhau. Mô hình Hybrid Cloud cho
phép chia sẻ hạ tầng hoặc đáp ứng nhu cầu trao đổi dữ liệu.
13
1.5. Đánh giá mô hình ĐTĐM
1.5.1. Ưu điểm
- Chi phí đầu tư ban đầu về cơ sở hạ tầng, máy móc và nguồn nhân lực
của người sử dụng điện toán đám mây được giảm đến mức thấp nhất.
- Không còn phụ thuộc vào thiết bị và vị trí địa lý, cho phép người dùng
truy cập và sử dụng hệ thống thông qua trình duyệt web ở bất kỳ đâu và trên bất
kỳ thiết bị nào mà họ sử dụng (chẳng hạn là PC hoặc là điện thoại di động…)
- Tốc độ xử lý nhanh, cung cấp cho người dùng những dịch vụ nhanh
chóng và giá thành rẻ dựa trên nền tảng cơ sở hạ tầng tập trung (đám mây).
- Khả năng mở rộng được, giúp cải thiện chất lượng các dịch vụ được
cung cấp trên “đám mây”.
- Các ứng dụng của điện toán đám mây dễ dàng để sửa chữa hơn bởi lẽ
chúng không được cài đặt cố định trên một máy tính nào. Chúng cũng dễ dàng
được hỗ trợ và cài thiện về tính năng.
- Tài nguyên sử dụng của điện toán đám mây luôn được quản lý và thống
kê trên từng khách hàng và ứng dụng, theo từng ngày, từng tuần, từng tháng.
Điều này đảm bảo cho việc định lượng giá cả của mỗi dịch vụ do điện toán đám
mây cung cấp để người dùng có thể lựa chọn phù hợp.
1.5.2. Nhược điểm
- Tính riêng tư: Các thông tin người dùng và dữ liệu được chứa trên điện
toán đám mây có đảm bảo được riêng tư, và liệu các thông tin đó có bị sử dụng
vì một mục đích nào khác?
- Tính sẵn dùng: Liệu các dịch vụ đám mây có bị “treo” bất ngờ, khiến
cho người dùng không thể truy cập các dịch vụ và dữ liệu của mình trong
những khoảng thời gian nào đó khiến ảnh hưởng đến công việc?
- Mất dữ liệu: Một vài dịch vụ lưu trữ dữ liệu trực tuyến trên đám mây
bất ngờ ngừng hoạt động hoặc không tiếp tục cung cấp dịch vụ, khiến cho
người dùng phải sao lưu dữ liệu của họ từ “đám mây” về máy tính cá nhân.
Điều này sẽ mất nhiều thời gian. Thậm chí một vài trường hợp, vì một lý do nào
đó, dữ liệu người dùng bị mất và không thể phục hồi được.
14
- Tính di động của dữ liệu và quyền sở hữu: Một câu hỏi đặt ra, liệu
người dùng có thể chia sẻ dữ liệu từ dịch vụ đám mây này sang dịch vụ của
đám mây khác? Hoặc trong trường hợp không muốn tiếp tục sử dụng dịch vụ
cung cấp từ đám mây, liệu người dùng có thể sao lưu toàn bộ dữ liệu của họ từ
đám mây? Và làm cách nào để người dùng có thể chắc chắn rằng các dịch vụ
đám mây sẽ không hủy toàn bộ dữ liệu của họ trong trường hợp dịch vụ ngừng
hoạt động.
- Khả năng bảo mật: Vấn đề tập trung dữ liệu trên các “đám mây” là
cách thức hiệu quả để tăng cường bảo mật, nhưng mặt khác cũng lại chính là
mối lo của người sử dụng dịch vụ của điện toán đám mây. Bởi lẽ một khi các
đám mây bị tấn công hoặc đột nhập, toàn bộ dữ liệu sẽ bị chiếm dụng. Tuy
nhiên, đây không thực sự là vấn đề của riêng “điện toán đám mây”, bởi lẽ tấn
công đánh cắp dữ liệu là vấn đề gặp phải trên bất kỳ môi trường nào, ngay cả
trên các máy tính cá nhân.
15
2. Giới thiệu một số công nghệ ĐTĐM của các hãng lớn
1. Công nghệ Google App Engine
2.1.1 Tổng quan về Google App Engine
“Google App Engine” (GAE) là một nền tảng hosting bao gồm web
server, cơ sở dữ liệu BigTable and kho lưu trữ file GFS. GAE cho phép bạn viết
ứng dụng web dựa trên cơ sở hạ tầng của Google. Nghĩa là bạn không cần quan
tâm là trang web bạn được lưu trữ như thế nào (kể cả database đi kèm), mà chỉ
cần quan tâm đến việc phát triển ứng dụng theo các API do Google cung cấp.
Với App Engine, bạn chỉ cần tải lên các ứng dụng của bạn, và nó sẵn sàng để
phục vụ người dùng của bạn.
Bạn có thể sửdụng tên miền riêng của mình thông qua google apps.
Hoặc bạn có thể dùng sub-domain miễn phí của appspot.com. GAE cho phép
được host miễn phí với dung lượng 1GB lưu trữ và cho phép 5 triệu pageview
hàng tháng, vượt qua mức này bạn sẽ phải trả phí. Dùng GAE, chúng ta khỏi
phải thiết kế database, viết SQL để truy vấn data, map data với object. Chúng ta
chỉ cần design các class và GAE tự động lo phần làm việc với database. Tóm
lại, giờ đây bạn chỉ cần phải nghĩ ra và viết những ứng dụng tuyệt vời nhất rồi
kêu gọi cả thế giới vào dùng. Tuy nhiên, mặt trái của việc xây dựng ứng dụng
trên GAE là bạn sẽ phụ thuộc hoàn toàn vào các công nghệ của Google và rất
khó có thể tách ra thành một ứng dụng độc lập. Yahoo hay Microsoft sẽ chẳng
bao giờ mua một ứng dụng xây dựng trên nền tảng của đối thủ. Còn các nhà
đầu tư cũng rất e ngại khi tài sản của công ty bạn đặt hết vào tay người khác, dù
cho đó là Google. GAE được Google cho ra mắt vào tháng 4 năm 2008 hỗ trợ
ngôn ngữ Python. Đến tháng 4 năm 2009, GAE đã công bố hỗ trợ ngôn ngữ
chính thức thứ hai là Java, đánh dấu một sự thay đổi lớn trong cách xây dựng
ứng dụng. Một số ngôn ngữ khác như PHP cũng có thể chạy được nếu cài cùng
với bộ chuyển từ PHP sang Java.
GAE là nền tảng ĐTĐM theo mô hình PaaS. GAE cho phép khách hàng
triển khai các ứng dụng web để chạy trên cơ sở hạ tầng của Google. Với các đặc
trưng dễ dàng xây dựng, bảo trì và khả mở, GAE đã được các nhà phát triển và
16
các doanh nghiệp triển khai sử dụng. Với chi phí xây dựng và triển khai ứng
dụng ban đầu gần như bằng 0, khách hàng dễ dàng xây dựng các ứng dụng theo
yêu cầu. Khi ứng dụng đã thu được lợi nhuận và vượt qua mức sử dụng thì
khách hàng chỉ phải trả khoản phí tài nguyên mà mình đã sử dụng.
2.1.2. Môi trường phát triển
Một ứng dụng App Engine đáp ứng các yêu cầu web. Một yêu cầu web
sẽ bắt đầu khi có một người dùng hay điển hình là các trình duyệt web của
người dùng gửi một yêu cầu truy cập vào ứng dụng thông qua giao thức HTTP.
Khi App Engine nhận được yêu cầu, nó sẽ xác định ứng dụng dựa vào tên miền,
hoặc tên miền con của .appspot.com (cung cấp miễn phí mỗi ứng dụng) hoặc là
một tên miền riêng của chúng ta đã được đăng kí và thiết lập với Google Apps.
App Engine lựa chọn một máy chủ từ nhiều máy chủ để xử lý các yêu cầu đó.
Sau đó, App Engine sẽ gửi các yêu cầu đã nhận được từ người dùng đến ứng
dụng phù hợp để xử lý, sau khi đã xử lý xong các ứng dụng này sẽ gửi dữ liệu
trả về cho App Engine, App Engine sẽ nhận dữ liệu phản hồi từ các ứng dụng
và trả về cho người dùng thông qua trình duyệt web.
Theo góc nhìn của ứng dụng, môi trường thực thi chỉ xuất hiện và tồn tại
khi bắt đầu một yêu cầu và sẽ biến mất khi yêu cầu đó được đáp ứng xong. App
Engine cung cấp tối thiểu 2 cách thức lưu trữ dữ liệu tồn tại giữa các yêu cầu ,
nhưng các cơ chế này tồn tại bên ngoài môi trường thực thi. Môi trường thực thi
sẽ không duy trì trạng thái giữa các yêu cầu, hoặc ít nhất không mong muốn các
trạng thái sẽ được duy trì giữa các yêu cầu. App Engine có thể phân phát lưu
lượng truy cập trong nhiều server, vì nó cần phải đáp ứng cho nhiều yêu cầu xử
lý như nhau, bất kể có bao nhiêu lưu lượng truy cập nó sẽ xử lý cùng một lúc.
Bản thân GAE có cơ chế để quản lý các trạng thái của từng yêu cầu
trong mỗi ứng dụng dưới dạng Sandbox (người phát triển không biết rõ cơ chế
bên trong nhưng hỗ trợ người phát triển những dịch vụ cần thiết). Điều này cho
phép App Engine xử lý một yêu cầu với một máy chủ mà nó mong muốn trong
ước tính của nó để trả về phản hồi nhanh nhất. Không có cách nào để đảm bảo
rằng phần cứng trên cùng một máy chủ sẽ xử lý hai lần yêu cầu, ngay cả khi các
yêu cầu đến cùng từ một client, và đến khá nhanh chóng.
17
Sandboxcho phép App Engine chạy nhiều ứng dụng trên cùng một máy
chủ, trong đó hành vi của một ứng dụng không làm ảnh hưởng đến các ứng
dụng khác. Ngoài ra để giới hạn quyền truy cập đến hệ điều hành, môi trường
thực thi cũng giới hạn việc sử dụng CPU và bộ nhớ. App Engine giữ các giới
hạn này linh hoạt và chặt chẽ hơn các giới hạn này để các ứng dụng sử dụng
nhiều tài nguyên hơn để bảo vệ tài nguyên được chia sẻ từ những ứng dụng
“không mong muốn”.
Mỗi yêu cầu có tối đa 30s để trả về phản hồi cho client. Mặc dù thời gian
này có vẻ đáp ứng tốt cho một ứng dụng web, nhưng App Engine được tối ưu
hóa cho các ứng dụng đáp ứng chưa đầy một giây. Ngoài ra nếu một ứng dụng
sử dụng nhiều CPU, App Engine có thể làm chậm nó xuống, nên các ứng dụng
không trì hoãn bộ vi xử lý trên một máy phục vụ đa ứng dụng. Một CPU tập
trung xử lý yêu cầu có thể mất nhiều thời gian để hoàn thành, khi App Engine
dò tìm các mô hình theo cách sử dụng CPU và phân bổ cho phù hợp.
Google App Engine cung cấp hai môi trường thực thi chính cho các ứng
dụng. Đó là Java và Python, hiện đang thử nghiệm trên Go. Môi trường chúng
ta chọn sẽ phụ thuộc vào ngôn ngữ và những công nghệ liên quan khi chúng ta
dùng để phát triển ứng dụng.
Môi trường Java thực thi các ứng dụng được viết cho JVM6. Ứng dụng
có thể được phát triển dựa vào ngôn ngữ lập trình Java hoặc hầu hết các ngôn
ngữ có thể biên dịch và chạy trên JVM: ví dụ PHP (dùng Quercus), Ruby
(dùng JRuby), Javascript (dùng Rhino), Scala, Groovy. App Engine cũng hỗ
trợ Google Web Tootkit (GWT).
Môi trường Python thực thi các ứng dụng được viết dựa vào ngôn ngữ
lập trình Python bản 2.5. App Engine gọi các ứng dụng Python nhờ vào CGI.
Ứng dụng có thể dùng hầu hết các thư viện của Python, các framework của
Python như Django, web2py, Pylons.
Cả hai môi trường Java và Python đều sử dụng chung một mô hình: một
yêu cầu gửi đến ứng dụng trên server, ứng dụng được kích hoạt (nếu cần thiết),
gọi bộ phận xử lý yêu cầu và trả về kết quả cho client. Mỗi môi trường sử dụng
bộ tiền xử lý (interpreter) cho riêng mình (JVM hay Python).
18
2.1.3. Mô hình kiến trúc và các dịch vụ của GAE
Trong mô hình kiến trúc này cho thấy được hoạt động của GAE. Một
yêu cầu từ trình duyệt của máy bàn, máy xách tay, điện thoại, … được gửi tới
GAE thông qua lối vào (Front End). Một ứng dụng chủ (App Master) sẽ điều
khiển, lập lịch cho tất cả các yêu cầu. Nếu yêu cầu truy cập tệp tin tĩnh, yêu cầu
sẽ gửi đến dịch vụ các tệp tĩnh (Static Flies). Nếu yêu cầu nội dung động, yêu
cầu sẽ được gửi tới ứng dụng của mình trên GAE, thông qua các thư viện APIs,
ứng dụng có thể truy cập tới các dịch vụ lưu trữ (Datastore), dịch vụ lưu trữ bộ
nhớ (Memcache), dịch vụ thao tác ảnh (Image manipulation), … Mỗi dịch vụ
có chức năng và hoạt động riêng biệt, không phụ thuộc lẫn nhau. Khi xây dựng
ứng dụng với ngôn ngữ Java, GAE hỗ trợ thư viện kết hợp thư viện chuẩn Java
cho phép ứng dụng truy cập vào các dịch vụ tương ứng.
Hình8 . Kiến trúc GAE
2. Công nghệ ĐTĐM của Amazone
2.2.1. Amazon Web Services
Amazon Web Services 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 Internet. Amazon cung cấp một số dịch vụ Web
nhưng trong loạt bài viết này chỉ tập trung vào 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.
19
Bạn có thể xây dựng các ứng dụng phức tạp và gồm nhiều phần khác
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 bạn và có khả năng thực
hiện là rất cao.
Có hai mức độ được hỗ trợ cho người dùng của Amazon Web Services:
• Hỗ trợ dựa trên diễn đàn tự do từ nhân viên Amazon, người điều
khiển các diễn đàn thảo luận Amazon
• Hỗ trợ các cặp đóng gói cái, cung cấp kiểu một-tới-một và kiểu
hỗ trợ thông qua điện thoại và là cách thận trọng hơn cách yêu
cầu trợ giúp
Amazon cung cấp các giao diện chuẩn dựa trên SOAP và REST để
tương tác với từng dịch vụ. Các thư viện phát triển hoặc là từ Amazon hoặc từ
một trong các ngôn ngữ cho phép, như Ruby, Python, Java™, Erlang và PHP,
để thực hiện trao đổi với các dịch vụ này. Các công cụ dòng lệnh là cũng có thể
để thực hiện quản lý tài nguyên tính toán trên EC2. Giao diện REST là dễ dàng
sử dụng; bạn có thể sử dụng chương trình bên phía máy khách được viết bằng
bất cứ ngôn ngữ nào dưới dạng giao thức HTTP để cho phép thực hiện gửi yêu
cầu tới các dịch vụ Web.
2.2.2. Dịch vụ Amazon Simple Storage Service (S3)
Amazon Simple Storage Service (S3) cung cấp các giao diện dịch vụ
Web cho việc lưu trữ và khôi phục dữ liệu. Dữ liệu được cho ở bất kỳ loại nào
và có thể được lưu trữ và truy cập đến từ bất kỳ vị trí nào thông qua Internet.
Bạn có thể lưu trữ không giới hạn một lượng lớn các đối tượng trong S3 với
kích thước của mỗi đối tượng trong khoảng từ 1 byte tới 5 GB. Các lưu trữ là có
thể ở trong Hoa Kỳ hoặc trong Liên Minh Châu Âu. Bạn có thể chọn vị trí lưu
trữ cho các đối tượng của bạn khi bạn tạo ra buckets, cái mà tương tự như khái
niệm của thư mục trong hệ thống xử lý của bạn. Dữ liệu được lưu trữ an toàn
bằng cách sử dụng cùng hạ tầng cơ sở lưu trữ Amazon sử dụng sức mạng của
mình trên toàn thế giới với một mạng lưới các trang Web thương mại điện tử.
Sự hạn chế truy cập có thể được xác định cho từng đối tượng bạn lưu trữ
trong S3, và các đối tượng này có thể được truy cập với các yêu cầu HTTP đơn
20
giản. Thậm chí bạn có thể tạo ra các đối tượng để tải về bằng cách sử dụng giao
thức BitTorrent.
S3 giải phóng hoàn toàn cho bạn về các lo lắng cho không gian lưu trữ,
truy cập vào dữ liệu, hoặc bảo vệ dữ liệu. Bạn thậm chí không phải đối phó với
chi phí của việc bảo trì các máy chủ lưu trữ.
Hình 9. Amazon Simple Storage Services
2.2.3. Dịch vụ Amazon Elastic Compute Cloud (EC2)
Amazon EC2 là dịch vụ Web cho phép bạn yêu cầu các máy ảo trong
vòng một vài phút và dễ dàng thay đổi khả năng của bạn hoặc tải xuống dựa
trên nhu cầu. Bạn chỉ cần phải trả chi phí cho khoảng thời gian mà bạn sử dụng.
Nếu bạn muốn tăng khả năng tính toán của bạn nên, bạn có thể nhanh chóng
tiếp cận khởi tạo máy áo và sau đó chấm dứt chúng khi mà nhu cầu của bạn
giảm đi.
Những trường hợp mà dựa trên Linux® và có thể chạy trên bất kỳ ứng
dụng nào hoặc phần mềm nào bạn muốn. Bạn có thực hiện điều khiển cho từng
trường hợp cụ thể. Môi trường của EC2 là được xây dựng trên cùng mã nguồn
mở Xen hypervisor, cái được phát triển tại trường Đại học Cambridge. Amazon
cho phép bạn tạo ra hình ảnh máy Amazon (AMIs) cái thực hiện hành động như
là các khuôn mẫu cho các ví dụ của bạn. Truy cập với các ví dụ có thể được
điều khiển bằng việc xác định được các quyền cho phép. Bạn cũng có thể làm
bất cứ cái gì bạn muốn với chúng tuy chỉ có một hạn chế duy nhất là yêu cầu
bạn cần sử dụng dựa trên Linux. Thời gian gần đây, khi mà Open Solaris được
công bố trong một quan hệ đối tác với Sun Microsoftsystem, nhưng phần lớn
21
các thương mại miễn phí và có sẵn được xây dựng cho EC2 đều dựa trên nền
tảng Linux.
Amazon EC2 cung cấp chính xác quy mô máy tính cái cho phép dễ dàng
để thay đổi quy mô tài nguyên tính toán của bạn lên và xuống. Bạn hoàn toàn
kiểm soát được môi trường tính toán cái mà chạy trong trung tâm dữ liệu của
Amazon. Amazon cung cấp năm kiểu của các máy chủ; để cho phép bạn chọn
lựa một trong các loại này phù hợp với ứng dụng cần thiết của bạn. Các máy
chủ cung cấp từ loại đơn lõi x86 đến loại tám lõi x86_64. Bạn có thể thay thế
các trường hợp trong các mô hình địa lý khác nhau hoặc trong các vùng mà từ
chỗ đảm bảo thực hiện đến chỗ có thể thất bại. Amazon cũng chỉ dẫn khái niệm
của địa chỉ IP thay đổi cho phép làm việc với địa chỉ động.
2.2.4. Khả năng truyền thông điệp tin cậy của Amazon Simple Queue
Service
Amazon Simple Queue Service (SQS) cung cấp khả năng truy cập tới hạ
tầng kiến trúc thông điệp đảm bảo được sử dụng bởi Amazon. Bạn có thể thực
hiện gửi và nhận các thông điệp từ bất cứ nơi nào bằng cách sử dụng các yêu
cầu HTTP đơn giản dựa trên REST. Không cần phải cài đặt cái gì, không cần
phải thực hiện cấu hình gì cả. Bạn có thể tạo ra một lượng không giới hạn của
các hàng đợi và gửi một lượng không giới hạn các tin nhắn. Các tin nhắn được
lưu trữ bởi Amazon thông qua nhiều máy chủ và các trung tâm dữ liệu để cung
cấp khả năng dư thừa và đáng tin cậy bạn cần từ hệ thống nhắn tin. Mỗi một tin
nhắn có thể chứa lên tới 8KB dữ liệu văn bản. Chỉ sử dụng các ký tự dạng
Unicode với nguyên tắc sau phải tuân thủ. Mỗi một hàng đợi có thể phải định
dạng xác định khoảng thời gian timeout (hạn thời gian), cái được sử dụng để
điều khiển cách truy cập tới hàng đợi bởi nhiều người đọc khác nhau. Mỗi một
ứng dụng đọc một thông điệp từ hàng đợi, thông điệp này sẽ không được đọc
bởi bất kỳ một người đọc khác cho đến khi khoảng thời gian timeout kết thúc.
Thông điệp sẽ được lặp lại trong hàng đợi sau một khoảng thời gian timeout
được xác định sau đó nó được giữ bởi một bộ xử lý đọc khác.
SQS tích hợp rất tốt với các Amazon Web Sercives khác. Nó cung cấp
một cách nào đó để xây dựng hệ thống riêng biệt nơi mà EC2 của bạn có thể
trao đổi với các hệ thống khác bằng cách gửi thông điệp tới SQS và phối hợp
22
các luồng làm việc. Bạn cũng có thể sử dụng các hàng đợi để xây dựng hạ tầng
tự phục hồi, tự động mở rộng dựa trên EC2 cho các ứng dụng của bạn. Bạn có
thể bảo đảm các thông điệp trong hàng đợi của bạn tránh bị truy cập trái phép
bằng cách sử dụng cơ chế xác thực được cung cấp bởi SQS.
2.2.5. Xử lý tập hợp dữ liệu với Amazon SimpleDB
Amazon SimpleDB (SDB) là dịch vụ Web cho phép lưu trữ, xử lý và
truy vấn tập hợp dữ liệu có cấu trúc. Ở đây không phải là một cơ sở dữ liệu
quan hệ theo cách tiếp cận truyền thống mà ở mức độ cao hơn dưới dạng các sơ
đồ, với dữ liệu ít cấu trúc lưu trữ trong các đám mây và trong đó bạn có thể sử
dụng để lưu trữ và khôi phục các giá trị khóa. Mỗi một tập hợp các giá trị khóa
cần phải có một tên một mục duy nhất; các mục là được phân chia vào từng
miền khác nhau. Mỗi một mục có thể lưu giữ lên tới 256 cặp giá trị khóa của dữ
liệu. Bạn có thể thực thi các truy vấn dựa trên tập dữ liệu của bạn trong từng
miền khác nhau. Các truy vấn dựa theo từng miền là không được hỗ trợ bởi
SDB.
SDB là một cách đơn giản để sử dụng và cung cấp hầu hết các chức năng
của cơ sở dữ liệu quan hệ. Sự duy trì là đơn giản hơn nhiều so với cơ sở dữ liệu
điển hình bởi vì không cần phải cài đặt hoặc định dạng. Amazon quan tâm
nhiều tới tất cả các việc liên quan đến quản trị. Dữ liệu là được tự động đánh
chỉ mục bởi Amazon và là sẵn có cho bạn tại bất kỳ thời điểm nào từ bất kỳ chỗ
nào. Một lợi thế quan trọng của khóa là không được sử dụng cho các sơ đồ đó
là khả năng chèn dữ liệu vào khi đang hoạt động và thêm các cột hoặc các khóa
động.
SDB là một phần của cơ sở hạ tầng Amazon, và khả năng mở rộng được
thực hiện một cách tự động đối với bạn tùy từng tình huống. Bạn có thể tự do
tập trung sự chú ý của bạn vào một số thứ quan trọng. Một lần nữa, bạn chỉ phải
trả chi phí chỉ cho tập dữ liệu tài nguyên mà bạn sử dụng.
23
2.3. Công nghệ ĐTĐM của Microsoft (Windows Azure)
2.3.1. Giới thiệu
Windows Azure, hệ điều hành “đám mây” mà Microsoft giới thiệu vào
cuối tháng 10 năm 2008 tại hội nghị PDC 2008 vẫn còn mang nhiều bí ẩn.
Azure là gì? Nó sẽ hoạt động ra sao? Trong chuyên đề này, chúng tôi sẽ giải đáp
phần nào về hệ điều hành Windows Azure và các thành phần cơ bản để phát
triển một ứng dụng trên nó.
Windows Azure, tên mã Red Dog, là nền tảng cho việc phát triển những
ứng dụng hoạt động trong “đám mây”. Nói cách khác, Windows Azure là cơ sở
cho nền tảng các dịch vụ Azure (Azure Services Platform), được Microsoft phát
triển nhằm mang đến cho cộng đồng các nhà phát triển ứng dụng cơ hội được
xây dựng và cung cấp các dịch vụ trực tuyến trên nền tảng cơ sở hạ tầng
Windows. (Microsoft Windows Azure: Khám phá hệ điều hành “đám mây”,
2008)
Windows Azure tách biệt hoàn toàn các ứng dụng chạy trên các lớp hệ
điều hành ứng dụng công nghệ ảo hóa của Microsoft. Điều này cho phép các
nhà quản trị không cần phải nâng cấp từng PC độc lập khi ứng dụng được chỉnh
sửa.
Theo Microsoft, công nghệ điện toán đã bước đến thế hệ thứ 5, thế hệ
mà các ứng dụng không còn bị giới hạn vào máy tính. Internet sẽ là phương
thức chính để những khách hàng tương tác với các doanh nghiệp. Nhưng kiến
trúc hoạt động kinh doanh đã được thiết kế trước đây là theo hướng riêng cho
những nhân viên và các đối tác. Windows Azure thay đổi điều này bằng cách
cung cấp cho doanh nghiệp khả năng linh hoạt, nền tảng “tiếp cận” khách hàng
nhằm triển khai các ứng dụng và dịch vụ.
Azure Services Platform là một giải pháp hoàn thiện cho các doanh
nghiệp. Microsoft sẽ lưu trữ các ứng dụng được xây dựng từ các hãng thứ ba
cũng như những dịch vụ Web của chính Microsoft như là Office Live, Windows
Live, Exchange Online, CRM Online… Kết hợp chặt chẽ .NET Services (cho
lập trình viên), SQL Services (cho cơ sở dữ liệu và báo biểu), Live Services
24
(cho việc tương tác với các thiết bị người dùng) vào trong các dịch vụ
SharePoint và CRM (cho nội dung doanh nghiệp).
Azure Services Platform
Điểm khác biệt giữa Azure và Azure Services Platform: Windows Azure
là một hệ điều hành còn Azure Services Platform là một sự kết hợp của Azure,
lớp các dịch vụ cơ sở hạ tầng và lớp ứng dụng trực tuyến. (Microsoft Windows
Azure: Khám phá hệ điều hành “đám mây”, 2008)
Windows Azure với người dùng và lập trình viên
Lập trình viên có thể xây dựng các ứng dụng mới hoặc hiệu chỉnh các
ứng dụng hiện tại cho Windows Azure bằng những công cụ hiện có như Visual
Studio, ASP.Net, .NET Framework và cập nhật thêm một vài công nghệ mới mà
Microsoft sẽ phổ biến trong thời gian sắp tới. .NET Services và SQL Services
sẽ cung cấp những khả năng “hướng đám mây” mới và Azure Tool cho Visual
Studio, cung cấp các mẫu (template) làm nền tảng xây dựng (Azure SDK).
Ngoài ra, công cụ “Oslo” mới từ Microsoft sẽ trợ giúp với các ứng dụng phân
phối kiểu mẫu bao gồm một ngôn ngữ lập trình mới với tên gọi “M.”. Azure
cũng sẽ hỗ trợ các công cụ và ngôn ngữ thứ ba như Eclipse, Ruby, PHP và
Python cũng như các tiêu chuẩn và cổng như SOAP, REST hay XML.
25