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ủ
Trang 1ĐẠ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
Trang 2Trong 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 đạihọ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áychủ ả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àinguyê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ụngtrự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ủaGoogle để phát triển và lưu trữ ứng dụng web trong những trung tâm dữ liệu doGoogle quản lý (google-managed data centers) Bản beta được giới thiệu lần đầu tiênvà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 tamuố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 Enginecũng có thể phục vụ các trang web truyền thống như xử lý văn bản hay hình ảnhnhư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ùngmộ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 3đồ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ềungườ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àinguyê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àinguyê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ưutrữ hàng tháng, băng thông vào ra (incoming and outgoing bandwidth), và một số cáctà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 4Trong 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 đámmâ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 đicủ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ệntoá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áytí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ởinhiề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ẵntrên Internet, doanh nghiệp không phải mua và duy trì hàng trăm, hàng nghìn máytí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ìnhbở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 đó GoogleApp Engine (GAE) là một nền tảng chiến lược của Google GAE cung cấp cho lậptrì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óichung, 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ìnhbà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ốngcủ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
Trang 5trữ đượ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 nhucầ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ựctuyến, được truy cập thông qua trình duyệt web, trong khi dữ liệu và phần mềm đượclư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ộtloạ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áytí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 theonhu 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ậttruyề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êncá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ánlưới
Trang 61.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ácdị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áychủ 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ả nhucầ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ủakhá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ụ đámmâ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ếtlậ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ụngServer, 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 71.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ườidù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 nhucầ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ếtchí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 cungcấ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ầucủ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ớttà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ụngtriệ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ụngdị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ênthự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épgiớ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ùngkí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 8Độ 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 Tuynhiê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ườigiá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 trabê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ệukhô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 kinhnghiệ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à cungcấ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ấtkhoả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ệnnhữ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ạinữa, dữ liệu sẽ được trả về như thế nào, với định dạng nào
Trang 91.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 10trong 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: https://developers.google.com/appengine/
Windows Azure của Mircosoft: http://www.windowsazure.com
Nền tảng điện toán đám mây ra đời đầu tiên: Amazon web service
http://www.amazon.com/
Sun Cloud của Sun:
http://www.oracle.com/us/solutions/cloud/overview/index.html
Facebook: https://www.facebook.com/
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ủanhiề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 11và 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ạnphầ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úptă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ểurủ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ànghơ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âycủa Google để phát triển và lưu trữ ứng dụng web trong những trung tâm dữ liệu doGoogle quản lý (google-managed data centers) Bản beta được giới thiệu lần đầu tiênvà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 Enginecũng có thể phục vụ các trang web truyền thống như xử lý văn bản hay hình ảnhnhư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ườidù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ộtcá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ềungườ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 12đó 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àinguyê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ácserver có chức năng tự quản lý, với Google App Engine, chúng ta chỉ phải trả tiền chonhữ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ạotrang 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ăngthô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ôngthường Ở phần lõi của nó, App Engine sẽ hạn chế những truy cập từ ứng dụng củachú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áctiế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 13Ứng dụng App Engine đang chạy như một thực thể cô lập trong môi trường gồmnhiều thành phần App Engine chia sẻ những nguồn tài nguyên giữa các ứng dụngnhư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ủachú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ênchú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 ứngdụ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ếpbở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ạytrê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 14phía người dùng, GAE sẽ chuyển yêu cầu đó cho ứng dụng của chúng ta Tùy theoviệ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ửimộ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ênbạ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ủachúng ta đã được đăng kí và thiết lập với Google Apps App Engine lựa chọn một máychủ 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ảnhồ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ôngnghệ 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êndị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ìnhPython bản 2.5 App Engine gọi các ứng dụng Python nhờ vào CGI (CommonGateway Interface) Ứng dụng có thể dùng hầu hết các thư viện của Python, cácframework 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ầugử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 152.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ệtkhô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 fileHTML 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óicá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 ứngdụ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 filetĩ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úngta
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ìnhvà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ộidung, 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 serverlà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ềukế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ượngdatabase 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ủachú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) trongmộ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 Tuynhiê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 16về 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ựcthể 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 ứngdụ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 khithự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ớinhau 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ấncũ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 ứngdụ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ạichỉ 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ỗiphiê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 ranhiề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ómthự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 AppEngine 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 đangcậ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ậtngữ 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 ứngdụng có thể đọc dữ liệu nhanh hơn và đảm bảo hơn
Trang 17Ứ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áctrên Internet như là việc tương tác với các web service khác Vì khi ta truy cập đếnserver 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ấuhì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ảntrê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ốngtà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 Enginebằ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