TRƯỜNG ĐẠI HỌC MỞ TP.HỒ CHÍ MINH
KHOA CÔNG NGHỆ THÔNG TIN
YZYZ
ĐIỆN TOÁN ĐÁM MÂY VỚI
GOOGLE APP ENGINE
BÁO CÁO KHÓA LUẬN TỐT NGHIỆP
SVTH: Nguyễn Ngọc Mãn
MSSV: 10761245
Ngành: Khoa Học Máy Tính
Hướng Chuyên Ngành: Mạng Máy Tính
Lớp: TH07B1
Người Hướng Dẫn
TS.Lê Xuân Trường
Tp. Hồ Chí Minh –Tháng 9 năm 2011
LỜI CÁM ƠN
Khóa luận được thành công là nhờ sự hướng dẫn, giúp đỡ của các
thầy. Em xin chân thành cảm ơn các thầy đã bỏ thời gian quý báu của mình để
giúp em hoàn thành tốt khóa luận này.
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
..
..
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
MỤC LỤC
Chương 1.
TỔNG QUAN ................................................................................................... 1
1.1.
Giới thiệu ................................................................................................................. 1
1.2.
Mục đích làm đề tài ................................................................................................. 1
1.3.
Phương pháp nghiên cứu...................................................................................... 2
1.4.
Phạm vi .................................................................................................................... 2
1.5.
Bố cục báo cáo ....................................................................................................... 2
Chương 2.
2.1.
CƠ SỞ LÝ THUYẾT ........................................................................................ 4
Tổng Quan Điện Toán Đám Mây ............................................................................ 4
2.1.1.
Giải pháp của điện toán đám mây ................................................................... 5
2.1.2.
Cấu trúc các phần tạo nên đám mây ............................................................... 6
2.1.2.1.
Các dịch vụ ứng dụng (SaaS)...................................................................... 6
2.1.2.2.
Các dịch vụ nền tảng (PaaS) ....................................................................... 6
2.1.2.3.
Các dịch vụ cơ sở hạ tầng (IaaS) ................................................................ 6
2.1.3.
2.2.
Điện toán đám mây với Google App Engine .................................................... 7
Kiến trúc Google App Engine ................................................................................ 7
2.2.1.
Tổng quan Google App Engine ....................................................................... 7
2.2.2.
Môi trường phát triển ....................................................................................... 8
2.2.3.
Các loại tập tin tĩnh trên server ........................................................................ 9
2.2.4.
DataStore......................................................................................................... 9
2.2.5.
Các loại Dịch Vụ ............................................................................................ 10
2.2.6.
Google Accounts ........................................................................................... 10
2.2.7.
Các hạn chế của Google App Engine............................................................ 10
2.3.
Các thành phần của Google App Engine trong Java ........................................ 11
2.3.1.
BackEnds....................................................................................................... 11
2.3.2.
Datastore ....................................................................................................... 11
2.3.2.1.
Thực Thể, Thuộc Tính và khóa.................................................................. 12
2.3.2.2.
Transactions .............................................................................................. 15
2.3.2.3.
Java Data Object (JDO) ............................................................................. 17
2.3.2.4.
Java Persistence API (JPA) ....................................................................... 20
2.3.3.
2.3.3.1.
BlobStore Java API .................................................................................... 23
2.3.3.2.
Capabilities ................................................................................................ 24
2.3.3.3.
Channel API ............................................................................................... 25
2.3.3.4.
Image API .................................................................................................. 26
2.3.3.5.
Mail API ..................................................................................................... 26
2.3.3.6.
Memcache Service .................................................................................... 27
2.3.3.7.
OAuth ......................................................................................................... 27
2.3.3.8.
Task Queues ............................................................................................. 29
2.3.3.9.
URL Fetch .................................................................................................. 29
2.3.3.10.
Users Service......................................................................................... 29
2.3.3.11.
XMPP ..................................................................................................... 30
2.3.3.12.
YAML ..................................................................................................... 30
Chương 3.
3.1.
Các dịch vụ của GAE..................................................................................... 23
HIỆN THỰC ỨNG DỤNG .............................................................................. 33
Sơ lược ứng dụng ................................................................................................ 33
3.1.1.
Mô hình hoạt động ......................................................................................... 33
3.1.2.
Sơ lược các chức năng .................................................................................. 33
3.2.
Xây dựng ứng dụng Frontend và Backend ........................................................ 33
3.2.1.
Đồng bộ hóa dữ liệu tài khoản google ........................................................... 33
3.2.2.
Sử dụng App Engine Datastores ................................................................... 34
3.2.2.1.
Tùy chỉnh lưu trữ dữ liệu ............................................................................ 34
3.2.2.2.
Xác định mối kết hợp và bảng số............................................................... 34
3.2.2.3.
Mô hình thực thể mối kết hợp .................................................................... 39
3.2.2.4.
Mô hình vật lý dữ liệu................................................................................. 40
3.2.3.
Sơ đồ trang web (Site map) ........................................................................... 40
3.2.4.
Apache Struts Framework ............................................................................. 41
3.2.5.
Thanh toán trực tuyến (Online Payment)....................................................... 42
3.2.5.1.
Tổng quan về tính năng thanh toán ........................................................... 42
3.2.5.2.
Cổng thanh toán Nganluong.vn ................................................................. 43
3.2.6.
Các yêu cầu về tính toán ............................................................................... 44
3.2.7.
Dịch vụ Mail ................................................................................................... 46
3.3.
Xây dựng ứng dụng xem điểm trên Mobile ........................................................ 46
3.3.1.
Mô hình hoạt động ......................................................................................... 47
3.3.2.
Cách thức xử lý .............................................................................................. 47
Chương 4.
KẾT QUẢ ĐẠT ĐƯỢC .................................................................................. 49
4.1.
Các dịch vụ tiện ích dành cho giáo viên, phụ huynh và học sinh ................... 49
4.2.
Tiện ích dành cho người quản trị ........................................................................ 53
4.3.
Ứng dụng trên Mobile........................................................................................... 55
Chương 5.
KẾT LUẬN..................................................................................................... 56
5.1.
Lợi ích của điện toán đám mây với GAE ............................................................ 56
5.2.
Hạn chế .................................................................................................................. 56
TÀI LIỆU THAM KHẢO ........................................................................................................ 57
DANH MỤC CÁC THUẬT NGỮ TIẾNG ANH VÀ CHỮ VIẾT
TẮT
Datastore: Nơi lưu trữ dữ liệu của điện toán đám mây
OPENID: Thư viện giúp đăng nhập vào một website
GAE: Google App Engine
HDR: High Replication Datastore
API: Một tập các thư viện
SDK: Bộ công cụ dành cho phát triển phần mềm
JDO: Java Data Object
JPA: Java Persistence API
JDOQL: Một loại ngôn ngữ dùng để truy vấn dữ liệu trong Java
JPQL: Một loại ngôn ngữ dùng để truy vấn dữ liệu trong JPA
YAML: Một ngôn ngữ giúp cấu hình ứng dụng Java
XMPP: Một giao thức của Google App Engine trong ứng dụng Chat G talk
DDos: một loại tấn công từ chối dịch vụ
GFS: Google File System, hệ thống file của Google
DANH MỤC CÁC HÌNH
Hình 2.1 Mô hình các cụm máy chủ trên đám mây ....................................... 4
Hình 2.2 Các giải pháp về cung cấp các dịch vụ tài nguyên .......................... 5
Hình 2.3 Các phần tạo nên đám mây .......................................................... 6
Hình 2.4 Kiến trúc Google App Engine cho Java ......................................... 8
Hình 2.5 So sánh giữa hai loại lưu trữ dữ liệu........................................... 12
Hình 2.6 Các kiểu dữ liệu được hổ trợ bởi GAE ........................................ 15
Hình 2.7 Mô hình cập nhật của dữ liệu của Transaction............................. 16
Hình 2.8 Mô hình JDO ........................................................................... 17
Hình 2.9 Cấu hình JDO trong Google App Engine .................................... 18
Hình 2.10 Mô Hình JPA ......................................................................... 21
Hình 2.11 Mô Hình JPA trong Google App Engine .................................... 22
Hình 2.12 Tạo đối tượng EntityManager .................................................. 22
Hình 2.13 Cách thức lưu dữ liệu của BlobStore trong Datastore ................. 23
Hình 2.14 Cách sử dụng Capabilities ....................................................... 24
Hình 2.15 Các loại Capabilities GAE hổ trợ ............................................. 25
Hình 2.16 Trao đổi dữ liệu giữa client và server sử dụng Channel API ........ 26
Hình 2.17 Cấu hình Channel trong Google App Engine .................................... 26
Hình 2.18 Cấu hình Mail trong Google App Engine................................... 27
Hình 2.18 Chứng thực sử dụng OAuth ...................................................... 28
Hình 2.20 Chọn phương thức chứng thực trong GAE ................................. 30
Hình 3.1 Quy trình động bộ hóa website với google Accouts ....................... 34
Hình 3.2 Mối kết hợp xếp lớp học sinh ..................................................... 35
Hình 3.3 Mối kết hợp xếp lớp giáo viên .................................................... 35
Hình 3.4 Mối kết hợp xếp loại học sinh .................................................... 36
Hình 3.5 Mối kết hợp kiểm tra ................................................................. 37
Hình 3.6 Mối kết hợp giáo viên chủ nhiệm và phân ban lớp học .................. 38
Hình 3.7 Mô hình thực thể mối kết hợp ..................................................... 39
Hình 3.8 Mô hình vật lý dữ liệu ............................................................... 40
Hình 3.9 Sơ đồ của website ..................................................................... 40
Hình 3.10 Quy trình hoạt động của Struts Framework ............................... 41
Hình 3.11 Chứng thực tài khoản trong thanh toán ..................................... 42
Hình 3.12 Chuyển khoản trong thanh toán ................................................ 43
Hình 3.13 Thanh toán kiểu tích hợp đơn giản ............................................ 44
Hình 3.14 Mô hình hoạt động ứng dụng mobile ......................................... 47
Hình 3.15 Lưu đồ xử lý yêu cầu của ứng dụng Mobile ................................ 48
Hình 4.1 Thông tin của học sinh .............................................................. 49
Hình 4.2 Thông tin của giáo viên ............................................................. 50
Hình 4.3 Thông tin về điểm số ................................................................. 51
Hình 4.4 Thông tin về học phí ................................................................. 51
Hình 4.5 Chuyển khoản qua nganluong.vn................................................ 52
Hình 4.6 Gửi thông tin cho học sinh ......................................................... 53
Hình 4.7 Các tiện ích dành cho người quản trị .......................................... 54
Hình 4.8 màn hình người dùng nhập vào mã số sinh viên ........................... 55
Hình 4.9 người dùng sau khi tra cứu điểm thành công ............................... 55
Chương 1. TỔNG QUAN
1.1. Giới thiệu
Thuật ngữ "cloud computing" ra đời giữa năm 2007 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. khái niệm này có thể được diễn giải một cách đơn giản:
các nguồn điện toán khổng lồ như phần mềm, dịch vụ... 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 (trên mặt đất) để
mọi người kết nối và sử dụng mỗi khi họ cần.
Như vậy, cloud computing chỉ 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, PC chỉ cài một số phần
mềm cơ bản còn tất cả đều phụ thuộc vào cloud. Chẳng hạn, họ đăng ký dịch vụ
hosting cho website công ty, thuê công cụ quản lý doanh thu từ Salesforce.com, lấy dữ
liệu khảo sát thị trường từ tổ chức Survey Monkey... Và tất nhiên, họ dùng Google để
tìm kiếm, phân tích, chia sẻ và lưu trữ tài liệu.
Với các dịch vụ sẵn có trên Internet, doanh nghiệp không phải mua và duy trì
hàng trăm, thậm chí hàng nghìn máy tính cũng như phần mềm. Họ chỉ cần tập trung
sản xuất bởi đã có người khác lo cơ sở hạ tầng và công nghệ thay họ.
Google nằm trong số những hãng ủng hộ điện toán máy chủ ảo tích cực nhất bởi
hoạt động kinh doanh của họ dựa trên việc phân phối các cloud (virtual server), và các
web services sử dụng các dịch vụ hosting của Google, được gọi là Google App Engine
(GAE).
GAE là một nền tảng hosting bao gồm web server, cơ sở dữ liệu BigTable và kho
lưu trữ file GFS. GAE cho phép viết ứng dụng web dựa trên cơ sở hạ tầng của
Google. Nghĩa là chúng ta không cần quan tâm là trang web của chúng ta đượ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ì thế khi sử dụng GAE chúng ta nhắm đến các lợi ích mà nó mang lại như giảm
bớt chi phí bản quyền, các chi phí về mua và bảo dưỡng máy chủ, không cần quan
tâm tới giới hạn phần cứng cũng như vị trí địa lý. Dữ liệu trong mô hình điện toán
đám mây được lưu trữ 1 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ố hoặc
thảm họa xảy ra. 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. 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. Dựa vào những tiêu chí này, chúng ta có thể tạo ra
một ứng dụng có thể phát triển thành ứng dụng lớn và nó không là một ý nghĩ xa vời
dựa trên những lợi ích mà nó mang lại.
1.2. Mục đích làm đề tài
-1 -
Dựa trên công nghệ GAE mà cung cấp, phát triển một ứng dụng quản lý học sinh
để minh họa về những lợi ích mà Google App Engine mang lại
1.3. Phương pháp nghiên cứu
• Áp dụng công nghệ Servlet & JSP
• Sử dụng FrameWork Apache Struts, Apache Struts là một web Application
FrameWork mã nguồn mở được phát triển trong dự án Apache Jakarta, sử dụng
mô hình MVC
• Công nghệ về điện toán đám mây với Google App Engine
• Sử dụng cơ sở dữ liệu App Engine Datastore, sử dụng một chuẩn giống lệnh
SQL để truy vấn dữ liệu, được gọi là ngôn ngữ JDOQL(Java Data Object
Query Language)
• Chứng thực user sử dụng tài khoản Gmail
1.4. Phạm vi
• Dịch vụ web(Web services):
− Cung cấp cho phụ huynh và học sinh có thể tra cứu được điểm
− Các thông tin về các lớp học
− Danh sách lớp
− Giáo viên chủ nhiệm lớp.v.v
• Thanh toán trực tuyến (Online payment)
− Cho phép phụ huynh đóng tiền trực tuyến
• Phiên bản mobile
− ứng dụng có thể xem điểm ngay trực tiếp trên mobile, chỉ cần Mobile có kết
nối GPRS hoặc WIFI
• Java Mail Service
− Khả năng gửi mail tự động. Cập nhật các thông báo của nhà trường đến phụ
huynh.
1.5. Bố cục báo cáo
• Chương 1: Tổng quan
− Ở chương này sẽ nói về mục đích nghiên cứu của đề tài, phương pháp thực
hiện cũng như tính hiệu quả của đề tài.
-2 -
• Chương 2: Cơ sở lý thuyết
Ở chương này sẽ nói về các công nghệ dựa trên Google App Engine
− Các dịch vụ mà Google App Engine cung cấp
− Giao tiếp với cơ sở dữ liệu Datastore
− Chi tiết về Framework Struts
− Chi tiết về giao dịch trực tuyến (Online Payment).
• Chương 3: Hiện thực hệ thống
Ở chương này sẽ nêu bật lên các công nghệ được áp dụng vào trong ứng dụng
− Các dịch vụ ứng dụng vào hệ thống
− Cách thức hiện thực hệ thống
− Kết quả có được từ hệ thống
• Chương 4: Kết quả đạt được
− Ở chương này sẽ biểu diễn các hình ảnh của ứng dụng khi thực hiện được
• Chương 5: Kết luận
− Trong chương cuối này báo cáo sẽ trình bày các lợi ích và hạn chế của
Google App Engine
-3 -
Chương 2. CƠ SỞ LÝ THUYẾT
2.1. Tổng Quan Điện Toán Đám Mây
Từ “Đám mây” trong Điện toán đám mây thực chất chỉ là 1 phép ẩn dụ để mô tả
Internet. Theo định nghĩa thì điện toán đám mây là biện pháp sử dụng dựa trên kết nối
Internet, nơi mà những người dùng chia sẻ cùng một mạng máy chủ, phần mềm và dữ
liệu Nếu như chúng ta sử dụng những ứng dụng web từ các hãng lớn như Google hoặc
Microsoft thì chính chúng ta đang sử dụng Cloud Computing. Các ứng dụng web như
Gmail, Google Calendar, Hotmail, SaleForce, Dropbox và Google Docs đều dựa trên
Cloud Computing bởi vì khi kết nối tới những dịch vụ đó, người dùng đã được truy
cập vào những cụm mây ảo của hệ thống máy chủ đồ sộ thống nhất của các hãng lớn
trên Internet.
Hình 2.1 Mô hình các cụm máy chủ trên đám mây
Mỗi công ty thường chạy các ứng dụng ngay trên các máy chủ của chính họ.
Những máy chủ được đặt ở ngay vị trí công ty. Điều đó đòi hỏi rất nhiều công sức
trong việc bảo dưỡng, bảo trì, tiền bạc và thời gian để giữ cho mọi thứ liên tục được
chạy, nâng cấp và đảm bảo. Nếu các doanh nghiệp áp dụng Điện toán đám mây, họ sẽ
vẫn sử dụng được các ứng dụng y hệt nhưng chúng lại được đặt ở các cụm máy chủ
trên Internet. Các doanh nghiệp chỉ việc kết nối qua mạng Internet mà không phải mất
chút công sức nào để bảo trì, bảo dưỡng, nâng cấp, chạy máy chủ. Không những thế,
các doanh nghiệp còn có thể cho khách hàng của họ sử dụng ứng dụng mà không phải
mất công cài đặt
-4 -
2.1.1. Giải pháp của điện toán đám mây
Hình 2.2 Các giải pháp về cung cấp các dịch vụ tài nguyên
Vấn đề về lưu trữ dữ liệu
Dữ liệu được lưu trữ tập trung ở các trung tâm dữ liệu khổng lồ. Các
công ty lớn như Microsoft, Google có hàng chục trung tâm dữ liệu nằm rải
rác khắp nơi trên thế giới. Các công ty lớn này sẽ cung cấp các dịch vụ cho
phép doanh nghiệp có thể lưu trữ và quản lý dữ liệu của họ trên các trung
tâm lưu trữ.
Vấn đề về sức mạnh tính toán
Có 2 giải pháp chính:
• Sử dụng các siêu máy tính để xử lý tính toán.
• Sử dụng các hệ thống tính toán song song, phân tán.
Vấn đề về cung cấp tài nguyên, phần mềm.
Cung cấp các dịch vụ như IaaS (infrastructure as a service), PaaS
(platform as a service), SaaS (Storeage as a service).
-5 -
2.1.2. Cấu trúc các phần tạo nên đám mây
Hình 2.3 Các phần tạo nên đám mây
2.1.2.1. Các dịch vụ ứng dụng (SaaS)
Tầng dịch vụ ứng dụng này lưu trữ các ứng dụng phù hợp với mô hình
SaaS. Đây là những ứng dụng chạy trong một đám mây và được cung cấp theo
yêu cầu. Đôi khi các dịch vụ này được cung cấp miễn phí và các nhà cung cấp
dịch vụ tạo ra doanh thu từ những thứ khác như các quảng cáo Web và nhiều
khi các nhà cung cấp ứng dụng tạo ra doanh thu trực tiếp từ việc sử dụng dịch
vụ. Nếu bạn đã kiểm tra thư của bạn khi sử dụng Gmail hoặc Yahoo Mail hoặc
được nhắc các cuộc hẹn khi sử dụng Google Calendar, thì bạn đã quen thuộc
với tầng trên cùng của đám mây. Đây chỉ là một vài ví dụ về các kiểu ứng dụng
này.
Các ứng dụng được cung cấp qua mô hình SaaS làm lợi cho người tiêu
dùng bằng cách giải phóng cho họ khỏi việc cài đặt và bảo trì phần mềm và các
ứng dụng có thể được sử dụng thông qua các mô hình cấp phép có hỗ trợ trả
tiền để sử dụng.
2.1.2.2. Các dịch vụ nền tảng (PaaS)
Đây là tầng ở đó chúng ta thấy cơ sở hạ tầng ứng dụng nổi lên như là
một tập hợp các dịch vụ. Các dịch vụ ở đây được dành để hỗ trợ cho các ứng
dụng. Các ứng dụng này có thể đang chạy trong đám mây và chúng có thể đang
chạy trong một trung tâm dữ liệu doanh nghiệp truyền thống. Để đạt được khả
năng mở rộng cần thiết trong một đám mây, các dịch vụ khác nhau được đưa ra
ở đây thường được ảo hóa. Các ví dụ trong phần này của đám mây bao gồm
Amazon Web Services, Boomi, và Google App Engine. Các dịch vụ nền tảng
này cho phép khách hàng chắc chắn rằng các ứng dụng của họ được trang bị để
đáp ứng các nhu cầu của người dùng bằng cách cung cấp cơ sở hạ tầng ứng
dụng dựa theo yêu cầu.
2.1.2.3. Các dịch vụ cơ sở hạ tầng (IaaS)
-6 -
Ở đây, chúng ta thấy một tập hợp các tài sản vật lí như các máy chủ, các
thiết bị mạng và các đĩa lưu trữ được đưa ra như là các dịch vụ được cung cấp
cho người tiêu dùng. Các dịch vụ ở đây hỗ trợ cơ sở hạ tầng ứng dụng và nhiều
người tiêu dùng hơn. Cũng như với các dịch vụ nền tảng, sự ảo hóa là một
phương pháp thường được sử dụng để tạo ra chế độ phân phối các nguồn tài
nguyên theo yêu cầu. Ví dụ về các dịch vụ cơ sở hạ tầng bao gồm IBM
Bluehouse, VMware, Amazon EC2, Microsoft Azure Platform, Sun ParaScale
Cloud Storage
2.1.3. Điện toán đám mây với Google App Engine
Google nằm trong số những hãng ủng hộ điện toán máy chủ ảo tích cực
nhất bởi hoạt động kinh doanh của họ dựa trên việc phân phối các cloud (virtual
server). Google cung cấp các dịch vụ ở hai tầng, ở tầng ứng cao nhất của đám mây
là SaaS, Google cho phép sử dụng các dịch vụ của họ như Gmail, Google Doc và ở
tầng Paas họ cung cấp các tập API dành cho các doanh nhiệp, cá nhân, hay tổ chức
để hổ trợ cho các ứng dụng web Application sử dụng các dịch vụ hosting của
Google, được gọi là Google App Engine (GAE).
2.2. Kiến trúc Google App Engine
2.2.1. Tổng quan Google App Engine
Nhiều doanh nghiệp sử dụng rất nhiều phần cứng để chạy các ứng dụng như
các cơ sở dữ liệu, các máy chủ ứng dụng, các hệ thống quản lý thay đổi và các
công cụ lần vết tìm lỗi. Tuy vậy, ngày nay, các phần cứng này này có thể dễ dàng
vứt bỏ để thay bằng việc sử dụng chính gói phần mềm ấy dưới dạng một dịch vụ
đang chạy trên một cơ sở hạ tầng của người, hay tổ chức nào đó khác.
Một doanh nghiệp có thể vứt bỏ phần cứng nằm bên dưới của một ứng dụng
web cụ thể để thay bằng việc chạy ứng dụng trên phần cứng được cung cấp bởi
Amazon, Google hoặc các đối tác khác. Các công ty này đưa ra khả năng thuê
phần cứng ở các mức độ khác nhau, vừa vặn có thể lưu trữ một ứng dụng. Hơn
nữa, các công ty này có khả năng quản lý mở rộng, sao lưu và bảo mật. Amazon và
Google đã nêu ra những mối quan tâm này và đối phó tốt hơn với chúng ta, có
nhiều đổi mới xung quanh các khía cạnh của việc chạy các nền tảng phần mềm sao
cho hiệu quả.
App Engine của Google là một nền tảng thực sự để xây dựng và triển khai
ứng dụng Web Java, Python và Go trên cơ sở hạ tầng mở rộng của Google. Nó
không yêu cầu lệ phí cấp phép sử dụng (trừ ra một số thư viện phần mềm mà
chúng ta chọn để sử dụng trên cơ sở hạ tầng ấy yêu cầu giấy phép) và không cần
chi phí trả trước cho băng thông hoặc không gian lưu trữ. Cơ sở hạ tầng của App
Engine là hoàn toàn miễn phí cho đến khi đạt đến ngưỡng về mức sử dụng, dung
lượng lưu trữ 500MB và theo như trích dẫn nguyên văn từ Google, "đủ CPU và
băng thông cho khoảng 5 triệu lượt xem trang mỗi tháng". Chỉ cần nói rằng, khi
đạt tới điểm mà Google bắt đầu gửi hóa đơn tính phí, thì ứng dụng Web của chúng
ta rõ ràng đã tạo ra lưu lượng đáng kể , có nhiều người xem và có lãi.
-7 -
Hình 2.4 Kiến trúc Google App Engine cho Java
2.2.2. Môi trường phát triển
Hiện nay Google App Engine hổ trợ phát triển trên ba môi trường nền tảng.
Một là Java Runtime Environment, Python Runtime Environment và Go Runtime
Environment. Môi trường được chọn phụ thuộc vào ngôn ngữ của ứng dụng và
công nghệ mà chúng ta sử dụng để phát triển ứng dụng.
Môi trường Java hổ trợ cho ứng dụng sử dụng Java 6 virtual Machine. Ứng
dụng có thể phát triển bằng ngôn ngữ Java, hay hầu hết các ngôn ngữ khác mà có
thể chạy trên JVM như PHP(sử dụng Quercus), Ruby (sử dụng JRuby), JavaScript,
Scala, Groovy. Ứng dụng có thể chạy trên môi trường và sử dụng các dịch vụ bằng
các công nghệ web chuẩn hiện nay như servlet và Java Persistence API
Môi trường Python hổ trợ cho các ứng dụng được viết bằng ngôn ngữ
Python 2.5 được cải tiến từ phiên bản CPython. Môi trường Python trên Google
App Engine cho phép các ứng dụng Python sử dụng CGI, một thư viện chuẩn hổ
trợ giao diện. Một ứng dụng python có thể sử dụng được hầu hết các thư viện
chuẩn. Nhiều thư viện mã nguồn mở điều hoạt động tốt với google App Engine
như là Django, Web2py, Pylons và App Engine còn chứa nhiều thư viện của riêng
nó
-8 -
Môi Trường Go hổ trợ cho các ứng dụng được viết bằng ngôn ngữ Go phiên
bản Release r58.1 trở lên, môi trường này hiện đang được thử nghiệm trên Google
App Engine. Trong gói SDK của GAE đã chứa trình biên dịch của Go và một thư
viện chuẩn.
Môi trường Java, Python và Go có điểm chung đó là sử dụng cách thức
giống nhau trong việc truy cập dữ liệu: một ứng dụng được định tuyến tới máy chủ
của Google, sau đó máy chủ sẽ xem yêu cầu và chuẩn bị dữ liệu, nếu có dữ liệu
theo yêu cầu thì máy chủ tiến hành trả lời cho client. Mỗi môi trường sử dụng một
trình thông dịch riêng.
Tất cả các ứng dụng của server cần một trình thông dịch riêng (JVM hay
Python interpreter), vì thế trước khi các yêu cầu được gửi tới server, thì server phải
thực hiện nhiệm vụ là chuẩn bị môi trường phù hợp với ứng dụng có yêu cầu.
2.2.3. Các loại tập tin tĩnh trên server
Một website có rất nhiều tài nguyên.Hầu hết các website có resource được
cấp phát cho trình duyệt mà không có sự thay đổi trong quá trình hoạt động thường
xuyên của nó. Hình ảnh và CSS được mô tả như là sự xuất hiện của các trang
web, mã JavaScript giúp chạy các tác vụ trên trình duyệt, và các trang HTML
không có các thành phần dữ liệu động là các ví dụ của những tài nguyên này, được
gọi chung là các tập tin tĩnh. Sự cấp phát tài nguyên này cho browser không liên
quan tới mã code của ứng dụng, không cần thiết và không hiệu quả để đáp ứng từ
các máy chủ. Thay vào đó, App Engine cung cấp một thành phần chuyên biệt của
máy chủ chuyên dụng để cung cấp tĩnh các tập tin này. Các server này được tối ưu
hóa cho kiến trúc nội bộ và phương thức truyền dẫn mạng để xử lý các yêu cầu về
tài nguyên tĩnh.
Khi duyệt website, các tập tin tĩnh cùng các mã ứng dụng được load lên.
Để các tập tin tĩnh có thể đáp ứng yêu cầu của website, phải cấu hình một số khía
cạnh trong các tập tin cấu hình bao gồm: các URL tĩnh của tập tin, các loại nội
dung và hướng dẫn cho các trình duyệt để giữ các bản sao của các tập tin trong bộ
nhớ Cache cho một số lượng và thời gian nhất định để làm giảm lưu lượng và tốc
độ dựng hình của trang khi trang được load. Mặc định trong GAE thì các file hình
ảnh và CSS trong thư mục resouse của ứng dụng đều là các tập tin Static.
2.2.4. DataStore
Hầu hết các ứng dụng web hữu ích cần phải lưu trữ thông tin trong việc xử
lý yêu cầu. Vì thế các website thường có các luồng xuất nhập dữ liệu và phải có
một hoặc nhiều máy chủ web kết nối với máy chủ cơ sở dữ liệu để lưu trữ hoặc lấy
dữ liệu. Tuy nhiên, khó khăn được đặt ra khi có nhiều kết nối đồng thời để yêu cầu
dữ liệu, vì thế hệ thống máy chủ cơ sở dữ liệu phải đòi hỏi một số cấu hình về
phần cứng để có thể đáp ứng được nhiều yêu cầu cùng lúc.
Hiện nay, các hệ thống lưu trữ dữ liệu phổ biến nhất cho các ứng dụng web
là lưu trữ theo table, hàng và cột, giản lượt không gian, sắp xếp, sử dụng các chỉ số
index để nâng cao khả năng truy xuất dữ liệu. Các loại khác của hệ thống lưu trữ
-9 -
dữ liệu bao gồm các kho dữ liệu phân cấp (XML) và cơ sở dữ liệu hướng đối
tượng (Object database). Mỗi loại cơ sở dữ liệu có ưu và khuyết điểm riêng, và
loại tốt nhất phù hợp cho một ứng dụng phụ thuộc vào bản chất dữ liệu của ứng
dụng. Và mỗi loại cơ sở dữ liệu có những kỹ thuật của riêng mình để phát triển qua
các hệ thống các máy chủ.
Hệ thống cơ sở dữ liệu của Google App Engine gần giống nhất với một cơ
sở dữ liệu kiểu đối tượng(object). Nó không phải là một cơ sở dữ liệu quan hệ,
điều này có thể sẽ yêu cầu thay đổi cách suy nghĩ về dữ liệu của ứng dụng.
2.2.5. Các loại Dịch Vụ
Mối quan hệ giữa datastore và thời gian thực thi đó là một loại dịch vụ: dịch
vụ này cung cấp các tập API để truy xuất vào hệ thống cơ sở dữ liệu. Google App
Engine bao gồm một số dịch vụ hữu ích cho các ứng dụng web. Dịch vụ bộ nhớ
Cache là một dịch vụ giúp khả năng truy xuất nhanh vì chính lợi thế của nó là
nhanh, nhanh hơn nhiều so với truy xuất trực tiếp trên database. Nhưng một nhược
điểm của nó là khi server có sự cố về mất điện hay tắt máy thì các giá trị ghi tạm
thời trong memcache bị xóa hoàn toàn. Như tên gọi của nó, dịch vụ memcache sử
dụng như là một bộ nhớ cache để lưu các kết quả của các truy vấn thường xuyên
hoặc thực hiện các phép tính toán.
Ứng dụng của App Engine có thể truy xuất đến các tài nguyên của các trang
web khác sử dụng dịch vụ URL Fetch. Dịch vụ này tạo ra kết nối HTTP tới server
khác trên internet để nhận về tài nguyên
Ứng dụng App Engine có thể gửi mail sử dụng dịch vụ Mail. Tin nhắn có
thể gửi đến các user khác trong Domain hoặc ngoài Domain và có thể nhận mail từ
các user khác. Nếu ứng dụng được cấu hình để nhận mail thì tin nhắn sẽ được gửi
đến địa chỉ của ứng dụng, sau đó ứng dụng sẽ định tuyến tới Mail service và hiển
thị trên webform nếu có yêu cầu
Ngoài gửi nhận Mail. App Engine còn cho phép ứng dụng có thể nhận tin
nhắn chat của Google Talk sử dụng giao thức XMPP bằng dịch vụ XMPP service
Xữ lý ảnh cũng là một phần trong dịch vụ của App Engine bao gồm các
dịch vụ xoay ảnh, cắt ảnh, hiển thị ảnh…
2.2.6. Google Accounts
App Engine có khả năng tích hợp các tài khoản Google vào ứng dụng, các
tài khoản này người dùng đã đăng kí trên các dịch vụ Saas như Google Mail,
Google Docs và Google Calendar. Sẽ bảo mật hơn nếu chúng ta có thể sử dụng tài
khoản Google để chứng thực thay vì sử dụng một hệ thống đăng nhập riêng. Tất
nhiên, Chúng ta có thể sử dụng hệ thống riêng của chúng ta hoặc là một nhà cung
cấp khác mà GAE có hổ trợ như là OpenID
2.2.7. Các hạn chế của Google App Engine
-10 -
App Engine cung cấp phương thức kết nối an toàn(HTTPS) cho tên miền
con của google hổ trợ là application-id.appspot.com, nhưng chưa hỗ trợ phương
thức kết nối này cho tên miền khác. Google account đăng nhập luôn luôn sử dụng
phương thức kết nối an toàn này
Ứng dụng sử dụng dịch vụ URL Fetch để tạo kết nối HTTPS và gửi yêu cầu
đến một website khác, nhưng App Engine không kiểm tra được certificate (giấy
chứng nhận) sử dụng trên máy chủ từ xa.
2.3. Các thành phần của Google App Engine trong Java
2.3.1. BackEnds
Backends được mô tả như là một phần phụ trợ của GAE, là một ứng dụng
đặc biệt không có giới hạn thời gian yêu cầu, có bộ nhớ cao hơn và tăng băng
thông CPU. BackEnds được thiết kế cho các ứng dụng cần hiệu suất nhanh hơn,
cần bộ nhớ nhiều hơn, và các quá trình yêu cầu là liên tục. Nhưng phần phụ trợ
này sẽ tính phí theo thời gian hoạt động
2.3.2. Datastore
App Engine cung cấp hai tùy chỉnh lưu trữ dữ liệu khác nhau được phân
biệt bởi tính khả dụng và tính nhất quán:
• Kho dữ liệu Master/Slave: sử dụng một hệ thông sao chép master-slave. Có
nghĩa là dữ liệu chỉ được lưu trữ tại một trung tâm dữ liệu vật lý. Tùy chọn
này cung cấp tính nhất quán mạnh mẽ về dữ liệu cho tất cả các lần đọc và
truy vấn. Tùy chọn này giúp người quản trị ít tốn dung lượng lưu trữ, và tốc
độ CPU giảm đi đáng kể
• Kho dữ liệu High Replication: Dữ liệu được nhân rộng trên khắp các trung
tâm dữ liệu bằng cách sử dụng một hệ thống dựa trên thuật toán Paxos. Tùy
chọn này cung cấp cho người sử dụng các tính năng về tổng hợp dữ liệu
nhanh trong mỗi lần đọc và ghi dữ liệu xuống. Với tùy chọn này thì dung
lượng lưu trữ sẽ tăng lên và chi phí cho CPU tăng gấp 3 lần so với tùy chọn
Master/Slave
Cơ sở dữ liệu App engine lưu trữ một hệ thống các đối tượng, được biết đến
như là một thực thể. Một thực thể có thể có nhiều thuộc tính, tên và giá trị của một
trong số các loại dữ liệu được hổ trợ bởi GAE.
High Replication
Master/Slave
Cost
Storage
1x
1/3x
Put/Delete CPU
1x
5/8x
-11 -
- Xem thêm -