Tải bản đầy đủ (.docx) (34 trang)

ĐIỆN TOÁN ĐÁM MÂY VỚI GOOGLE APP ENGINE VÀ CÀI ĐẶT ỨNG DỤNG THỬ NGHIỆM

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 (2.34 MB, 34 trang )

ĐẠI HỌC QUỐC GIA TP. HCM
TRƯỜNG ĐH CÔNG NGHỆ THÔNG TIN

ĐIỆN TOÁN ĐÁM MÂY VỚI GOOGLE
APP ENGINE VÀ CÀI ĐẶT ỨNG DỤNG
THỬ NGHIỆM
Giảng viên hướng dẫn : PGS.TS. Nguyễn Phi Khứ
Học viên thực hiện : Nguyễn Hữu Thành
Lớp : CH-CNTT K6
MSHV : CH1101136
TP. HCM, 07/2013
LỜI CẢM ƠN
Trong suốt quá trình tìm hiểu và thực hiện tiểu luận “Điện toán đám mây với Google
App Engine và cài đặt ứng dụng thử nghiệm” ngoài sự cố gắng của bản thân, tôi được
sự giúp đỡ tư vấn của thầy cô và bạn bè cùng lớp, tiểu luận đã cơ bản hoàn thành.
Tôi xin được bày tỏ lòng chân thành biết ơn tới các thầy cô giáo trường Đại học Công
nghệ thông tin, Đại học Quốc gia TP HCM nói chung và các thầy cô của phòng sau đại
học nói riêng.
Đặc biệt, tôi xin chân thành cảm ơn thầy PGS.TS Nguyễn Phi Khứ, thầy đã tận tình
hướng dẫn , và giảng dạy cho tôi được nhiều kiến thức quan trọng liên quan đến môn
học này.
Tp HCM, ngày 13 tháng 7 năm 2013
Nguyễn Hữu Thành
TÓM TẮT NỘI DUNG TIỂU LUẬN
Điện toán đám mây (Cloud Computing, hay còn biết đến với tên gọi “Điện toán máy
chủ ảo”) 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.
Thuật ngữ “đám mây” ở đây là lối nói ẩn dụ chỉ mạng Internet và như một liên tưởng
về độ phức tạp của các cơ sở hạ tầng chứa trong nó.
Nói một cách đơn giản nhất, ứng dụng điện toán đám mây chính là những ứng dụng
trực tuyến trên Internet. Trình duyệt là nơi ứng dụng hiện hữu và vận hành còn dữ liệu


được lưu trữ và xử lý ở máy chủ của nhà cung cấp ứng dụng đó.
Một số nền tảng điện toán đám mây hiện nay: Google App Engine, Windows Azure,
Amazone Webservice, Sun Cloud, Facebook, …
Google App Engine (App Engine hay GAE) là một nền tảng điện toán đám mây của
Google để phát triển và lưu trữ ứng dụng web trong những trung tâm dữ liệu do
Google quản lý (google-managed data centers). Bản beta được giới thiệu lần đầu tiên
vào ngày 7 tháng 4 năm 2008.
GAE là 1 dịch vụ lưu trữ các ứng dụng web. Khi nói đến “ứng dụng web”, chúng ta
muốn nói tới các ứng dụng hay dịch vụ được truy cập trên các trang web, thường là
thông qua trình duyệt web: những trang web mua bán, mạng xã hội, … App Engine
cũng có thể phục vụ các trang web truyền thống như xử lý văn bản hay hình ảnh
nhưng được thiết kế dành cho thời gian thực.
Thực ra, GAE được thiết kế để lưu trữ những ứng dụng và phục vụ nhiều người dùng
một cách đồng thời. Khi một ứng dụng có thể phục vụ nhiều người dùng một cách
Trang 2
đồng thời mà không làm giảm hiệu suất, chúng ta gọi đó là sự co giãn (scales). Những
ứng dụng được viết cho App Engine sẽ được co giãn một cách tự động. Càng nhiều
người sử dụng chương trình, App Engine sẽ tạo ra càng nhiều tài nguyên cho ứng dụng
đó và quản lý chúng. Chính bản thân ứng dụng cũng không cần phải biết đến các tài
nguyên mà nó đang sử dụng.
Không như những server cung cấp các dịch vụ lưu trữ thông thường hay các server có
chức năng tự quản lý, với Google App Engine, chúng ta chỉ phải trả tiền cho những tài
nguyên mà chúng ta sử dụng. Những tài nguyên này được đo bằng gigabyte và không
có bất kì lệ phí hàng tháng nào hay lệ phí để chúng ta thay đổi diện mạo trang web.
Hóa đơn thanh toán những nguồn tài nguyên này bao gồm CPU chúng ta sử dụng, lưu
trữ hàng tháng, băng thông vào ra (incoming and outgoing bandwidth), và một số các
tài nguyên khác của dịch vụ App Engine.
MỤC LỤC
BẢNG KÝ HIỆU, CHỮ VIẾT TẮT
1. Google App Engine: GAE

2. Google Web Tootkit: GWT
3. Common Gateway Interface: CGI
4. Application Programming Interface: API
5. Dynamic Hypertext Markup Language: DHML
6. Domain Name System: DNS
7. Hypertext Transfer Protocol: HTTP
8. Hypertext Transfer Protocol Secure: HTTPS
9. Internet Information Services: IIS
10.Internet Protocol: IP
11.Really Simple Syndication: RSS
12.Security Assertion Markup Language: SAML
13.Software Development Kit: SDK
14.Simple Object Access Protocol: SOAP
15.Structured Query Language: SQL
16.eXtensible Markup Language: XML
MỞ ĐẦU
Trang 3
Trong lĩnh vực công nghệ thông tin, ngày nay ngoài các ứng dụng để bàn, một
xu hướng mới đáng chú ý là phát triển các ứng dụng web và các ứng dụng cho thiết
bị di động. Tất cả các ứng dụng này đều cần được lưu ở một máy chủ để người dùng
có thể truy cập được thông qua mạng.
Điện toán đám mây ra đời mang lại rất nhiều lợi ích. Thuật ngữ điện toán đám
mây ra đời 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 đi
của cơ sở hạ tầng thông tin vốn đã và đang diễn ra từ mấy năm qua. Các nguồn điện
toán khổng lồ 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 để mọi người kết nối sử dụng khi cần.
Điện toán đám mây là khái niệm hoàn chỉnh cho một xu hướng không mới bởi
nhiều doanh nghiệp hiện không có máy chủ riêng mà chỉ có máy tính với một số
phần mềm cơ bản, còn tất cả đều phụ thuộc vào đám mây. Với các dịch vụ có sẵn
trên Internet, doanh nghiệp không phải mua và duy trì hàng trăm, hàng nghìn máy

tính cũng như các phần mềm kèm theo mà họ chỉ cần tập trung công việc của mình
bởi đã có người khác lo cơ sở hạ tầng và công nghệ thay họ.
Google là nhà cung cấp dịch vụ điện toán đám mây hiện nay, trong đó Google
App Engine (GAE) là một nền tảng chiến lược của Google. GAE cung cấp cho lập
trình viên nhiều tiện ích và hạ tầng để xây dựng các ứng dụng trên nền web.
Tiểu luận này sẽ giới thiệu các khái niệm cơ bản về điện toán đám mây nói
chung, GAE nói riêng và cài đặt thử nghiệm trên hệ thống này. Tiểu luận được trình
bày trong 3 chương:
Chương 1: Giới thiệu những khái niệm cơ bản về điện toán đám mây, kiến trúc,
đặc tính, thành phần của điện toán đám mây.
Chương 2: Đi sâu nghiên cứu công nghệ của Google App Engine.
Chương 3: Cài đặt môi trường để phát triển ứng dụng và thử nghiệm hệ thống
của Google App Engine.
Chương 1. ĐIỆN TOÁN ĐÁM MÂY ( CLOUD
COMPUTING)
1.1 KHÁI NIỆM
Điện toán đám mây là các phát triển dựa vào mạng Internet sử dụng các công
nghệ máy tính. Đây là một kiểu điện toán trong đó những tài nguyên tính toán và lưu
Trang 4
trữ được cung cấp như những dịch vụ trên mạng. Người dùng không cần biết hay có
kinh nghiệm điều khiển và vận hành những công nghệ này.
Điện toán đám mây bao gồm: Phần mềm hoạt động như dịch vụ (SaaS: Software
as a service), nền tảng như một dịch vụ (Paas: Platform as a Service), Dịch vụ Web và
những xu hướng công nghệ mới. Chúng đều dựa vào mạng Internet để đáp ứng nhu
cầu sử dụng của người dùng. Những ví dụ tiêu biểu về điện toán đám mây là
Salesforce.com và Google Apps. Chúng cung cấp những ứng dụng thương mại trực
tuyến, được truy cập thông qua trình duyệt web, trong khi dữ liệu và phần mềm được
lưu trên đám mây.
Đám mây là hình ảnh ẩn dụ cho mạng Internet và là sự trừu tượng cho những cơ
sở hạ tầng phức tạp mà nó che giấu.

Điện toán đám mây thường bị nhầm lẫn với điện toán lưới (grid computing) (một
loại hình điện toán phân tán được tạo bởi các mạng máy tính nhỏ hoặc các cặp máy
tính, hoạt động phối hợp với nhau để thực hiện các chức năng rất lớn), điện toán theo
nhu cầu (utility computing) (khối những tài nguyên máy tính, như các bộ xử lý và bộ
nhớ, trong vai trò một dịch vụ trắc lượng tương tự với các công trình hạ tầng kỹ thuật
truyền thống) và điện toán tự trị (autonomic computing) (các hệ thống máy tính có khả
năng tự quản lý).
Trên thực tế, việc triển khai các cơ sở hạ tầng cho điện toán đám mây dựa trên
các đặc điểm của điện toán lưới, điện toán theo nhu cầu và điện toán tự trị. Điện toán
đám mây có thể được xem như là giai đoạn tự nhiên tiếp theo từ mô hình điện toán
lưới.
Trang 5
1.2 KIẾN TRÚC
Điểm chủ yếu trong cơ sở hạ tầng của điện toán đám mây hiện nay bao gồm các
dịch vụ tin cậy được phân phối qua trung tâm dữ liệu và được xây dựng trên các máy
chủ với các công nghệ ảo hóa khác nhau. Các dịch vụ này có thể truy cập được từ bất
kỳ nơi nào trên thế giới, và “đám mây” là điểm truy cập duy nhất đáp ứng tất cả nhu
cầu của người dùng máy tính. Việc cung cấp đám mây phải phù hợp với yêu cầu của
khách hàng về chất lượng dịch vụ và mức độ chấp nhận của dịch vụ. Các tiêu chuẩn
mở và phần mềm nguồn mở cũng quyết định đến sự lớn mạnh của điện toán đám mây.
Kiến trúc đám mây gồm: nền tảng đám mây (Cloud Platform), các dịch vụ đám
mây (Cloud Service), cơ sở hạ tầng đám mây (Cloud Infrastructure), lưu trữ đám mây
(Cloud Storage).
1.3 ĐẶC TÍNH
1.3.1 Tính tự phục vụ theo nhu cầu:
Đặc tính kỹ thuật của điện toán đám mây cho phép khách hàng đơn phương thiết
lập yêu cầu nguồn lực nhằm đáp ứng yêu cầu của hệ thống như: Thời gian sử dụng
Server, dung lượng lưu trữ, cũng như là khả năng đáp ứng các tương tác lớn của hệ
thống ra bên ngoài.
Trang 6

1.3.2 Truy cập diện rộng:
Điện toán đám mây cung cấp các dịch vụ chạy trên môi trường Internet do vậy
khách hàng chỉ cần kết nối được với Internet là có thể sử dụng được dịch vụ.Các thiết
bị truy xuất thông tin không yêu cầu cấu hình cao (thin or thick client platforms) như :
Mobile phone, Laptop và PDAs…
1.3.3 Dùng chung tài nguyên và độc lập vị trí:
Tài nguyên của nhà cung cấp dịch vụ được dùng chung, phục vụ cho nhiều người
dùng dựa trên mô hình “multi-tenant”. Mô hình này cho phép tài nguyên phần cứng và
tài nguyên ảo hóa sẽ được cấp pháp động dựa vào nhu cầu của người dùng. Khi nhu
cầu người dùng giảm xuống hoặc tăng nên thì tài nguyên sẽ được trưng dụng để phục
vụ yêu cầu.
Người sử dụng không cần quan tâm tới việc điều khiển hoặc không cần phải biết
chính xác vị trí của các tài nguyên sẽ được cung cấp. Ví dụ : Tài nguyên sẽ được cung
cấp bao gồm : Tài nguyên lưu trữ, xử lý, bộ nhớ, băng thông mạng và máy ảo.
1.3.4 Khả năng co giãn nhanh chóng:
Khả năng này cho phép tự động mở rộng hoặc thu nhỏ hệ thống tùy theo nhu cầu
của người sử dụng một cách nhanh chóng. Khi nhu cầu tăng, hệ thống sẽ tự động mở
rộng bằng cách thêm tài nguyên vào. Khi nhu cầu giảm, hệ thống sẽ tự động giảm bớt
tài nguyên.
Khả năng co giãn giúp cho nhà cung cấp sử dụng tài nguyên hiệu quả, tận dụng
triệt để tài nguyên dư thừa, phục vụ được nhiều khách hàng. Đối với người sử dụng
dịch vụ, khả năng co giãn giúp họ giảm chi phí do họ chỉ trả phí cho những tài nguyên
thực sự dùng.
1.3.5 Chi trả theo thực dùng:
Nhiều dịch vụ điện toán đám mây sử dụng mô hình điện toán theo nhu cầu, mô
hình tương tự với cách các tiện ích theo nhu cầu truyền thống như điện được tiêu thụ,
trong khi một số khác tiếp thị dựa vào tiền đóng trước. Điện toán đám mây cho phép
giới hạn dung lượng lưu trữ, băng thông, tài nguyên máy tính và số lượng người dùng
kích hoạt theo tháng.
Ngoài năm đặc điểm chính đã mô tả ở trên, điện toán đám mây còn cung cấp

một số các đặc điểm sau :
Trang 7
Độ tin cậy: Độ tin cậy cải thiện thông qua việc sử dụng các site có nhiều dư
thừa, làm nó thích hợp cho tính liên tục trong kinh doanh và khôi phục thất bại. Tuy
nhiên, phần lớn các dịch vụ của cloud computing có những lúc thiếu hụt và người
giám đốc kinh doanh, IT phải làm cho nó ít đi.
Hiệu suất: Hiệu suất hoạt động được quan sát và các kiến trúc nhất quán, kết nối
lỏng lẽo được cấu trúc dùng web service như giao tiếp hệ thống.
Khả năng chịu đựng: Khả năng chịu đựng xảy ra thông qua việc tận dụng tài
nguyên đã được cải thiện, các hệ thống hiệu quả hơn. Tuy nhiên, các máy tính và cơ sở
hạ tầng kết hợp là những thứ tiêu thụ năng lượng chủ yếu.
1.4 CÁC CHÍNH SÁCH BẢO MẬT
 Phân quyền truy cập người dùng: xác định xem ai có quyền truy cập đặc biệt tới
dữ liệu và quyền của người quản trị.
 Điều chỉnh sự chấp thuận: đảm bảo rằng một nhà bán lẻ trải qua những kiểm tra
bên ngoài và những chứng nhận bảo mật.
 Định vị dữ liệu: xem nhà cung cấp có cho phép điều khiển qua các vùng dữ liệu
không.
 Chia tách dữ liệu: đảm bảo rằng tất cả các giai đoạn đều được mã hóa và tất cả
các giai đoạn mã hóa đều được thiết kế và kiểm thử bởi các chuyên gia giàu kinh
nghiệm.
 Khôi phục: xem điều gì sẽ xảy ra với dữ liệu nếu có rủi ro xảy ra, các nhà cung
cấp có cung cấp việc khôi phục hoàn toàn dữ liệu không, nếu có thì sẽ mất
khoảng bao lâu.
 Hỗ trợ điều tra: tìm hiểu xem nhà bán lẻ nào có khả năng điều tra phát hiện
những hoạt động không phù hợp hay những hoạt động bất hợp pháp.
 Tồn tại lâu dài: xem điều gì sẽ xảy ra với dữ liệu khi công ty không còn tồn tại
nữa, dữ liệu sẽ được trả về như thế nào, với định dạng nào.
Trang 8
1.5 THÀNH PHẦN

 Ứng dụng (application): không cần phải cài đặt và chạy ứng dụng trên chính
máy tính của khách hàng, do đó giảm bớt gánh nặng của việc duy trì, điều hành
và hỗ trợ. Ví dụ: máy tính đồng đẳng, ứng dụng web, phần mềm hoạt động như
dịch vụ.
 Máy khách (clients): máy khách đám mây bao gồm phần cứng máy tính và/hoặc
phần mềm máy tính, phụ thuộc vào ứng dụng đám mây để phân phối ứng dụng,
hoặc được thiết kế riêng để phân phối các dịch vụ đám mây. Ví dụ: thiết bị di
động.
 Cơ sở hạ tầng (infrastructure): cơ sở hạ tầng đám mây (cơ sở hạ tầng như là
dịch vụ) là sự phân phối các cơ sở hạ tầng máy tính như là dịch vụ, điển hình như
môi trường ảo. Ví dụ: điện toán lưới.
 Nền tảng (platform): nền tảng đám mây (nền tảng như là dịch vụ) là sự phân
phối các nền tảng điện toán, và/hoặc các giải pháp như là dịch vụ, triển khai các
ứng dụng không tốn tiền hoặc không gặp rắc rối do mua phần cứng, phần mềm.
Ví dụ: khung ứng dụng web.
 Dịch vụ (services): một dịch vụ đám mây bao gồm “sản phẩm, dịch vụ, giải
pháp”, là hệ thống phần mềm được thiết kế để hỗ trợ tương tác giữa các máy
Trang 9
trong mạng, dịch vụ này có thể được truy cập bởi các thành phần của điện toán
đám mây khác, các phần mềm, hoặc bởi người dùng cuối.
 Lưu trữ (storage): lưu trữ đám mây gồm việc phân phối các dịch vụ lưu trữ dữ
liệu: các dịch vụ cơ sở dữ liệu: cơ sở dữ liệu, dịch vụ web.
1.6 NHỮNG NGƯỜI DÙNG LIÊN QUAN
Google, Microsoft, Amazone, Sun đều đã và đang phát triển những nền tảng
đám mây của riêng mình. Các nền tảng đám mây lớn có thể kể đến bây giờ gồm:
 Google App Engine của Google: /> Windows Azure của Mircosoft:
 Nền tảng điện toán đám mây ra đời đầu tiên: Amazon web service
/> Sun Cloud của Sun:
/> Facebook: />Có thể phân loại thành 3 nhóm liên quan:
 Nhà cung cấp: trực tiếp sở hữu và điều hành các hệ thống điện toán đám mây.

 Người dùng: là khách hàng của điện toán đám mây.
 Nhà bán lẻ: bán sản phẩm và dịch vụ.
1.7 LỢI ÍCH CỦA ĐIỆN TOÁN ĐÁM MÂY:
Tính linh động: Người dùng có thể thoải mái lựa chọn các dịch vụ phù hợp với
nhu cầu của mình, cũng có thể bỏ bớt đi các thành phần mà mình không muốn.
Giảm bớt phí: Người dùng không chỉ giảm bớt chi phí bản quyền mà còn giảm
phần lớn chi phí cho việc mua và bảo dưỡng máy chủ. Việc tập hợp ứng dụng của
nhiều tổ chức lại 1 chỗ sẽ giúp giảm chi phí đầu tư ban đầu, cũng như tăng hiệu năng
sử dụng các thiết bị một cách tối đa.
Tạo nên sự độc lập: Người dùng sẽ không còn bị bó hẹp với 1 thiết bị hay 1 vị
trí cụ thể nào nữa. Với điện toán đám mây, phần mềm và dữ liệu có thể được truy cập
Trang 10
và sử dụng bất kì đâu, trên bất kì thiết bị nào mà không cần quan tâm đến giới hạn
phần cứng cũng như địa lý.
Tăng cường độ tin cậy: Dữ liệu trong mô hình điện toán đám mây được lưu trữ
một cách phân tán tại nhiều cụm máy chủ tại nhiều vị trí khác nhau. Điều này giúp
tăng độ tin cậy, độ an toàn của dữ liệu mỗi khi có sự cố hay thảm hoạ xảy ra.
Bảo mật: Việc tập trung dữ liệu từ nhiều nguồn khác nhau sẽ giúp các chuyên
gia bảo mật tăng cường khả năng bảo vệ dữ liệu của người dùng, cũng như giảm thiểu
rủi ro bị ăn cắp toàn bộ dữ liệu.
Bảo trì dễ dàng: Mọi phần mềm đều nằm trên server, lúc này người dùng không
cần lo lắng cập nhật hay sửa lỗi phần mềm nữa. Và các lập trình viên cũng dễ dàng
hơn trong việc cài đặt, nâng cấp ứng dụng của mình.
Chương 2. GOOGLE APP ENGINE
2.1 GOOGLE APP ENGINE LÀ GÌ:
Google App Engine (App Engine hay GAE) là một nền tảng điện toán đám mây
của Google để phát triển và lưu trữ ứng dụng web trong những trung tâm dữ liệu do
Google quản lý (google-managed data centers). Bản beta được giới thiệu lần đầu tiên
vào ngày 7 tháng 4 năm 2008.
Google App Engine (GAE) là một Nền tảng Dịch vụ (PaaS) cho phép các nhà

phát triển đăng ký để chạy các ứng dụng mà họ viết bằng Python, Java hoặc Go trên cơ
sở hạ tầng của Google.
GAE là 1 dịch vụ lưu trữ các ứng dụng web. Khi nói đến “ứng dụng web”, chúng
ta muốn nói tới các ứng dụng hay dịch vụ được truy cập trên các trang web, thường là
thông qua trình duyệt web: những trang web mua bán, mạng xã hội, … App Engine
cũng có thể phục vụ các trang web truyền thống như xử lý văn bản hay hình ảnh
nhưng được thiết kế dành cho thời gian thực.
Thực ra, GAE được thiết kế để lưu trữ những ứng dụng và phục vụ nhiều người
dùng một cách đồng thời. Khi một ứng dụng có thể phục vụ nhiều người dùng một
cách đồng thời mà không làm giảm hiệu suất, chúng ta gọi đó là sự co giãn. Những
ứng dụng được viết cho App Engine sẽ được co giãn một cách tự động. Càng nhiều
người sử dụng chương trình, App Engine sẽ tạo ra càng nhiều tài nguyên cho ứng dụng
Trang 11
đó và quản lý chúng. Chính bản thân ứng dụng cũng không cần phải biết đến các tài
nguyên mà nó đang sử dụng.
Không như những server cung cấp các dịch vụ lưu trữ thông thường hay các
server có chức năng tự quản lý, với Google App Engine, chúng ta chỉ phải trả tiền cho
những tài nguyên mà chúng ta sử dụng. Những tài nguyên này được đo bằng gigabyte
và không có bất kì lệ phí hàng tháng nào hay lệ phí để chúng ta thay đổi diện mạo
trang web. Hóa đơn thanh toán những nguồn tài nguyên này bao gồm CPU chúng ta sử
dụng, lưu trữ hàng tháng, băng thông vào ra (incoming and outgoing bandwidth), và
một số các tài nguyên khác của dịch vụ App Engine.
Để giúp chúng ta có thể làm quen với GAE, mỗi lập trình viên sẽ có khoảng 500
MB lưu trữ, một lượng tài nguyên miễn phí đủ để chạy những ứng dụng nhỏ với băng
thông thấp. Google dự toán rằng với nguồn tài nguyên miễn phí, một ứng dụng có thể
đạt tới 5 triệu lượt truy cập trong một tháng.
2.2 KIẾN TRÚC HOẠT ĐỘNG GOOGLE APP ENGINE:
Kiến trúc của App Engine khác với những server lưu trữ ứng dụng web thông
thường. Ở phần lõi của nó, App Engine sẽ hạn chế những truy cập từ ứng dụng của
chúng ta đến cơ sở hạ tầng vật lý, ngăn cản chúng ta từ việc mở các socket, chạy các

tiến trình ngầm, hay các cách đi khác bằng cổng sau để giúp chương trình của ta có
quyền trên môi trường này.
Trang 12
Ứng dụng App Engine đang chạy như một thực thể cô lập trong môi trường gồm
nhiều thành phần. App Engine chia sẻ những nguồn tài nguyên giữa các ứng dụng
nhưng cô lập về dữ liệu và bảo mật giữa những thành phần với nhau. Ứng dụng của
chúng ta có thể sử dụng một số các dịch vụ của Google, như là URLFetch. Bởi vì
chúng ta không thể mở cổng (port) một cách trực tiếp trong ứng dụng của mình, nên
chúng ta phải lệ thuộc vào dịch vụ này, ví dụ: yêu cầu Google mở cổng và thực thi ứng
dụng của mình.
Xem xét kỹ hơn một chút, giả sử App Engine là một tòa nhà có gắn hệ thống
điều hòa không khí và nhiệt độ. Chúng ta là một phần trong căn nhà đó (chính xác hơn
là ứng dụng của chúng ta). Chúng ta không thể điều chỉnh nhiệt độ một cách trực tiếp
bởi nó sẽ ảnh hưởng đến những phần khác trong tòa nhà (các ứng dụng khác). Vì vậy,
chúng ta phải gửi một yêu cầu đến người chủ của căn nhà này để nhờ họ thay đổi nhiệt
độ cho chúng ta. Chính xác đó là các dịch vụ của GAE như URLFetch, Bigtable query,
Memcache, mail, XMPP, và các dịch vụ khác. Đó chính là bản chất những gì đang xảy
ra trong App Engine.
Như vậy, trong GAE, tùy vào ứng dụng viết theo ngôn ngữ nào, nó sẽ được chạy
trên môi trường Java hay Python tương ứng. Song song đó, chúng ta sẽ được cung cấp
sử dụng miễn phí các dịch vụ của google như URL Fetch, Mail, Memcache, … và
được lưu trữ trên cơ sở dữ liệu hướng đối tượng datastore. Khi yêu cầu được gửi lên từ
Trang 13
phía người dùng, GAE sẽ chuyển yêu cầu đó cho ứng dụng của chúng ta. Tùy theo
việc xử lý chúng mà ta cấu hình và sử dụng các ứng dụng thích hợp của GAE.
2.3 THÀNH PHẦN CHÍNH VÀ CHỨC NĂNG TRONG
GOOGLE APP ENGINE:
2.3.1 Môi trường thực thi (runtime environment):
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 <tên
bạn>.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.
Google App Engine cung cấp hai môi trường thực thi tốt cho các ứng dụng. Đó là
Java và Python. 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 (Common
Gateway Interface). Ứ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).
Trang 14
2.3.2 Các file server tĩnh (static file servers):
Hầu hết các website có một số tài nguyên mà chúng chuyển đến các trình duyệt
không thay đổi trong suốt hoạt động của site. Ví dụ như các hình ảnh và các file Css
hỗ trợ hiển thị của site, các đoạn mã Javascript chạy trên trình duyện, và các file
HTML tĩnh. Vì việc gửi những file này không cần đến việc gọi code của ứng dụng, nói
cách khác, việc này không cần thiết, làm giảm hiện quả làm việc của các server ứng

dụng.
Thay vì thế, App Engine cung cấp một tập các server tách biệt chuyên làm nhiệm
vụ trao đổi các file tĩnh này. Những server nói trên tối ưu hóa cho kiến trúc bên trong
và hạ tầng mạng để xử lý các requests cho các tài nguyên tĩnh. Đối với client, các file
tĩnh này cũng giống như các tài nguyên khác được cung cấp bởi ứng dụng của chúng
ta.
Chúng ta upload các file tĩnh cùng với code ứng dụng. Chúng ta có thể cấu hình
vài cách hiển thị nhất định cho các file này, bao gồm các URL cho file tĩnh, loại nội
dung, và các hướng dẫn cho trình duyệt để lưu các bản sao file này trong bộ nhớ cache
để giảm lưu lượng và tăng tốc cho trang web.
2.3.3 Kho dữ liệu (datastore):
Hầu hết mọi ứng dụng web đều cần một nơi để chứa thông tin khi xử lý yêu cầu
từ phía client và lấy thông tin cho những lần yêu cầu sau này. Việc sử dụng một server
làm một trung tâm dữ liệu là một ý tưởng rất hay nhưng có vấn đề xảy ra khi quá nhiều
kết nối được gửi tới server này.
Hệ thống database của Google App Engine gần giống như một đối tượng
database. Thiết kế của App Engine datastore chỉ là trừu tượng để cho App Engine có
thể xử lý việc phân tán và co giãn các ứng dụng. Chính vì thế trong các đoạn mã của
chúng ta sẽ quan tâm đến những thứ khác được nêu sau đây.
2.3.4 Thực thể (entities) và Thuộc tính (properties):
Một ứng dụng App Engine có thể chứa dữ liệu trong một hay nhiều thực thể
datastore. Mỗi thực thể có một hay nhiều thuộc tính, mỗi thuộc tính đều có tên và giá
trị. Mỗi thực thể đều được phân loại để tiện cho việc truy vấn.
Ở cái nhìn đầu tiên, chúng ta thấy thực thể có thể gần giống các hàng (row) trong
một bảng trong cơ sở dữ liệu quan hệ. Và mỗi thuộc tính có thể giống với một cột. Tuy
nhiên đối với các thực thể cùng loại với nhau có thể có các thuộc tính khác nhau. Thứ
2, các thực thể có thể có cùng thuộc tính với các thực thể cùng loại khác nhưng khác
Trang 15
về kiểu dữ liệu. Một điểm khác nhau nữa giữa thực thể và các hàng (row) là các thực
thể có thể có nhiều giá trị cho một thuộc tính đơn lẻ.

Mỗi thực thể có một khóa riêng (key) phân biệt lẫn nhau được cung cấp bởi ứng
dụng hoặc do App Engine. Khác với CSDL quan hệ, khoá của thực thể không phải là
thuộc tính, nó tồn tại độc lập với thực thể. Khoá của thực thể không được thay đổi khi
thực thể đã được tạo ra.
2.3.5 Truy vấn (queries) và Chỉ mục (indexes):
Một câu truy vấn trên datastore trả về không hoặc nhiều thực thể cùng loại với
nhau. Nó cũng có thể trả về các khóa của thực thể. Câu truy vấn có thể dựa vào các giá
trị thuộc tính của thực thể và được sắp xếp theo giá trị của thuộc tính. Câu truy vấn
cũng có thể làm việc với các khóa của thực thể.
Với App Engine, mỗi câu truy vấn sẽ có một chỉ mục trong datastore. Khi ứng
dụng cần thực hiên một câu truy vấn, thì datastore sẽ tìm chỉ mục của câu truy vấn đó.
Khi chúng ta tạo mới một thực thể và cập nhật cái cũ thì datastore cũng sẽ cập nhật lại
chỉ mục. Điều này giúp cho câu truy vấn được nhanh hơn.
2.3.6 Phiên giao dịch (transaction):
Khi một ứng dụng có quá nhiều client liên tục đọc hay ghi cùng một dữ liệu ở
cùng một thời điểm, thì phiên giao dịch rất cần thiết để dữ liệu không bị đọc sai. Mỗi
phiên giao dịch là đơn vị nhỏ nhất và chỉ có hai trạng thái là thành công hoặc thất bại.
Một ứng dụng đọc hay cập nhật nhiều thực thể trong một phiên giao dịch, nhưng
nó phải nói cho App Engine biết những thực thể nào sẽ được cập nhật khi nó tạo ra
nhiều thực thể. Ứng dụng làm được điều này bởi việc tạo ra nhóm thực thể. Nhờ nhóm
thực thể, App Engine sẽ biết được các thực thể sẽ phân tán như thế nào qua các server,
vì thế nó có thể khẳng định chắc chắn là phiên giao dịch thành công hay thất bại. App
Engine cũng hỗ trợ những phiên giao dịch nội bộ (local transaction).
Nếu một người dùng cố gắng cập nhật một thực thể trong khi người khác đang
cập nhật thực thể đó thì datastore sẽ ngay lập tức trả về một biệt lệ báo lỗi. Trong thuật
ngữ database, thì ta nói App Engine sử dụng “optimistic concurrency control”. Với chỉ
mục và “optimistic concurrency control”, App Engine được thiết kế giúp cho ứng
dụng có thể đọc dữ liệu nhanh hơn và đảm bảo hơn.
Trang 16
2.4 CÁC DỊCH VỤ (SERVICES)

Dịch vụ chính là mối quan hệ giữa datastore với môi trường thực thi. GAE bao
gồm một số các dịch vụ hữu ích cho các ứng dụng web.
Dịch vụ memcache là dịch vụ lưu trữ theo khóa - giá trị. Thuận lợi chính của
dịch vụ này trên datastore là tốc độ nhanh, rất nhanh so với việc lưu trữ và lấy dữ liệu
một cách bình thường trên datastore. Memcache lưu trữ dữ liệu trên bộ nhớ thay vì
trên ổ đĩa để tăng tốc độ truy cập. Nó cũng phân tán như datastore tuy nhiên không lưu
trữ, vì thế nếu mất điện thì dữ liệu trên memcache cũng mất. Và nó cũng có nhiều giới
hạn sử dụng hơn datastore. Việc sử dụng memcache tốt nhất là lưu lại các kết quả của
các câu query hay các tính toán trước đó. Ứng dụng sẽ kiểm tra trong memcache, nếu
không có dữ liệu thì sẽ tiến hành query trên datastore.
Ứng dụng App Engine có thể truy cập các tài nguyên web khác nhờ vào dịch vụ
URL Fetch. Dịch vụ này tạo ra các yêu cầu theo dạng HTTP gửi đến các server khác
trên Internet như là việc tương tác với các web service khác. Vì khi ta truy cập đến
server khác thời gian sẽ lâu nên URL Fetch hỗ trợ chạy ngầm bên dưới trong khi xử lý
các yêu cầu khác.
Ứng dụng App Engine có thể gửi mail dựa vào dịch vụ Mail, hoặc nếu được cấu
hình, nó có thể nhận được email.
Ứng dụng App Engine có thể gửi và nhận những tin nhắn đến các dịch vụ chat có
sử dụng giao thức XMPP bao gồm Google Talk.
2.5 TÀI KHOẢN GOOGLE (google accounts):
Các chức năng của App Engine tích hợp trong các tài khoản của Google như
Google Mail, Google Docs và Google Calendar. Chúng ta có thể sử dụng tài khoản
trên Google như cho các ứng dụng của chúng ta, do đó không cần thiết lập thêm. Và
nếu các người dùng của chúng ta đã có tài khoản trên Google, họ có thể đăng nhập vào
ứng dụng của chúng ta với các tài khoản đó, mà không cần tạo tài khoản riêng trong
ứng dụng. Tất nhiên, điều đó không bắt buộc. Chúng ta luôn có thể xây dựng hệ thống
tài khoản riêng của mình, hoặc sử dụng một provider OpenID.
2.6 CÁC CÔNG CỤ LẬP TRÌNH (programming tools):
Google cung cấp một số tool miễn phí cho việc phá triển ứng dụng App Engine
bằng ngôn ngữ Java và Python. Chúng ta có thể download software development kit

(SDK) cho ngôn ngữ tương ứng và hệ điều hành của chúng ta từ website Google.
Trang 17
Người dùng Java có thể down SDK cho Java trong form plug-in cho Eclipse. Người
dùng Python sử dụng Windows hoặc Mac OS X có thể tải SDK cho Python từ form
của giao diện ứng dụng. Các SDK đó đều có file zip, sử dụng command-lines để trực
tiếp tích hợp vào môi trường phát triển hoặc xây dựng hệ thống.
Mỗi SDK bao gồm một server web chạy ứng dụng của chúng ta tại máy cá nhân,
đóng vai trò môi trường thực thi,kho dữ liệu và các service. Server này tự động phát
hiện những thay đổi trong file source và load lại chúng nếu cần, vì thế chúng ta có thể
luôn mở server trong khi đang lập trình cho ứng dụng.
Nếu chúng ta sử dụng Eclipse, chúng ta có thể chạy server cho Java trong bộ tích
hợp debugger, và có thể đặt các breakpoint trong code. Chúng ta cũng có thể sử dụng
Eclipse cho ứng dụng phát triển Python dùng PyDev, một nhánh mở rộng của Eclipse,
bao gồm bộ debugger cho Python.
Mỗi SDK cũng bao gồm một công cụ cho việc tương tác với các ứng dụng chạy
trên App Engine. Chủ yếu là sử dụng cho việc upload code lên App Engine. Chúng ta
cũng có thể sử dụng tool để download các file log từ ứng dụng đang chạy, hoặc quản
lý danh mục ứng dụng.
SDK Python và Java gồm một chức năng mà chúng ta có thể cài đặt trong ứng
dụng cho việc truy cập có thứ tự từ xa một cách an toàn đến ứng dụng. SDK Python
bao gồm các công cụ dùng cho việc xử lý dữ liệu lớn, như upload dữ liệu từ file text,
và tải lượng lớn dữ liệu, hoặc sao lưu cho mục đích lưu trữ. SDK cũng có command-
line shell của Python cho việc test, kiểm lỗi và thao tác với dữ liệu. (Các tool này có
trong SDK cho Python, nhưng cũng làm việc với các ứng dụng Java sử dụng phiên bản
Java có chức năng truy cập từ xa). Chúng ta có thể viết đoạn mã script và chương trình
sử dụng chức năng truy cập từ xa cho việc vận chuyển lượng lớn dữ liệu và các biện
pháp bảo trì khác.
2.7 HẠN CHẾ CỦA GOOGLE APP ENGINE:
 App Engine hỗ trợ HTTPS đối với domain con của .appspot.com những vẫn chưa
hỗ trợ đối với các domain khác.

 Hiện Google App Engine hỗ trợ 2 loại ngôn ngữ là: Python, Java
 (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).
 Phụ thuộc hoàn toàn vào các dịch vụ của Google.
 Microsoft, … sẽ chẳng bao giờ mua sản phẩm được xây dựng trên nền tảng của
đối thủ.
Trang 18
 Các nhà đầu tư e ngại vì toàn bộ dữ liệu của mình đều nằm trong tay nhà cung
cấp dịch vụ, dù cho đó là Google.
Chương 3. HIỆN THỰC VÀ THỬ NGHIỆM HỆ
THỐNG
3.1 HƯỚNG DẪN TẠO GOOGLE APP ENGINE
Yêu cầu: Bạn phải có 1 tài khoản email để đăng ký.
Truy cập website:
Tạo ứng dụng trên google apps engine
Trang 19
Nhập số điện thoại của bạn, sau đó, sẽ nhận được tin nhắn từ google apps engine
gửi về mã code cho bạn, điền mã code hợp lệ vào ô Enter Account Code.
Kết quả sau khi đăng ký mã code thành công:
Trang 20
Một hộp thoại sẽ xuất hiện yêu cầu bạn cung cấp một ID duy nhất cho ứng dụng
của bạn. Điều này là cần thiết bởi vì ứng dụng của bạn sẽ được sống trên Internet tại
<your_unique_app_name>.appspot.com. Kiểm tra để cho một ID duy nhất, chỉ bằng
cách nhấn vào nút "Check Availability", để xem nếu ID ứng dụng của bạn đã được
thực hiện bởi người khác hay chưa.
Ở mục “Application Tile”: bạn có thể đặt tên là Project hoặc tên hiệu cho ứng
dụng của bạn, có thể có khoảng trắng giữa các từ.
Trang 21
Kết quả sau khi tạo:
Step 2: Truy cập vào website: để xem thông

tin:
Trang 22
Bạn muốn tạo thêm các ứng dụng khác thì click vào Create Application
Lưu ý: Bạn được tạo tối đa là 10 ứng dụng free của google apps engine, còn thêm
sẽ tính phí.
Ý nghĩa của “Application-ID”: Một khi bạn đã đăng ký được một ID duy nhất,
ID này sẽ là giá trị mà bạn áp dụng vào ứng dụng. Ví dụ: trong file “app.yaml” của
Python, hoặc trong <application> your_unique_app_name</application > của file “
AppEngine-web.xml” trong ứng dụng Java. Nó phục vụ như là các tên miền phụ duy
nhất của appspot.com cho ứng dụng của bạn.
Ví dụ: “thanh-app.appspot.com”. trong JAVA
Phần 3: Hướng dẫn quản lý Datastore trên Google Apps Engine:
Trang 23
Xem thông tin DataStore Viewer:
Truy vấn có điều kiện trên DataStore sử dụng Query:
Kết quả:
Trang 24
Xem thêm Query trên DataStore tại:
/>Quản lý Datastore Admin:
Để quản lý Datastore Admin bạn phải bật tính năng của Datastore Admin lên:
Thêm user vào cộng tác trên google apps engine và phân quyền cho các user:
Trang 25

×