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

TÌM HIỂU GOOGLE APP ENGINE VÀ XÂY DỰNG MỘT SỐ ỨNG DỤNG MINH HỌA

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 (978.16 KB, 29 trang )

MỤC LỤC
LỜI MỞ ĐẦU

Hiện nay chúng ta nghe nói về điện toán đám mây (Cloud Computing) khá nhiều.
Đây là mô hình điện toán sử dụng các công nghệ mạng máy tính và phát triển dựa
vào mạng Internet. Điện toán đám mây là khái niệm tổng thể bao gồm các khái niệm
như phần mềm dịch vụ, Web 2.0 và các vấn đề khác xuất hiện gần đây, các xu hướng
công nghệ nổi bật, trong đó đề tài chủ yếu là vấn đề dựa vào Internet để đáp ứng
những nhu cầu điện toán của người dùng (theo wikipedia).
Google App Engine (viết tắt là AppEngine hay GAE), một trong những nền tảng
điện toán đám mây phát triển hàng đầu trên thị trường. Ở đó, Google cung cấp sẵn
một hệ thống máy chủ điện toán đám mây, và người lập trình viết ứng dụng của mình
lên đó. Ứng dụng này sẽ chạy trên đám mây của Google. Google App Engine cung
cấp những ứng dụng kinh doanh trực tuyến thông thường, có thể truy nhập từ một
trình duyệt web, còn các phần mềm và dữ liệu được lưu trên các máy chủ.
Google App Engine là một hệ thống tích hợp đầy đủ các kỹ thuật cho một ứng
dụng web hiện đại. Google App Engine cung cấp một khả năng phát triển và triển
khai ứng dụng nhanh chóng, việc quản lý đơn giản, dễ dàng để quy mô như lưu lượng
truy cập và nhu cầu lưu trữ dữ liệu của ứng dụng lớn. Người dùng cũng không cần lo
lắng về phần cứng, các bản vá lỗi hoặc sao lưu.
Qua đó để nắm bắt được công nghệ tương lai này, em thực hiện đề tài “Tìm hiểu
Google App Engine, xây dựng một số ứng dụng minh họa”. Thông qua việc tìm hiểu
các kỹ thuật, các service mà công nghệ Google App Engine cung cấp, em sẽ làm một
số ứng dụng minh họa.
Chương 1: GIỚI THIỆU
GOOGLE APP ENGINE
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
1.1 Điện toán đám mây và Google App Engine
Điện toán đám mây là mô hình điện toán sử dụng các công nghệ máy tính và phát


triển dựa vào mạng Internet. Rất nhiều các nhà cung cấp đã tuyên bố cung cấp nền
tảng "đám mây". Hiện nay, Google, Amazon.com và Salesforce.com đang dẫn đầu
trong cộng đồng và phát triển không gian điện toán doanh nghiệp. Có ba mức độ
chính của các dịch vụ điện toán đám mây. Cơ sở hạ tầng như một dịch vụ (IaaS), nền
tảng như một dịch vụ (PaaS) và phần mềm như một dịch vụ (Saas).
- Software-as-a-Service
o SaaS là khả năng tiếp cận phần mềm trên Intenet như một dịch vụ. Những nhà cung
cấp SaaS lưu trữ ứng dụng trên máy chủ của họ, cho phép người dùng sử dụng dịch
vụ theo yêu cầu. Theo cách này, người dùng không phải mua phần mềm mà chỉ thuê
nó khi cần.
o Góc độ khác về SaaS là việc sử dụng phần mềm chạy từ xa trên mạng. Phần mềm này
có thể ở dạng Web services (các dịch vụ dùng bởi ứng dụng cục bộ) hay các ứng dụng
từ xa mà có thể theo dõi kết quả thông qua trình duyệt web. Một ví dụ đó là Google
Apps.
- Platform-as-a-Service
o PaaS hỗ trợ việc triển khai ứng dụng mà không quan tâm đến chi phí hay sự phức tạp
của việc trang bị và quản lý các lớp phần cứng và phần mềm bên dưới, cung cấp tất
cả các tính năng cần thiết để hỗ trợ chu trình sống cho một ứng dụng và dịch vụ web
sẵn sàng trên Internet.
o Google App Engine là một PaaS. App Engine là một dịch vụ cho phép triển khai ứng
dụng web của người dùng trên kiến trúc của Google. App Engine cung cấp một số
ngôn ngữ như Python, Java và gần đây nhất là Go, cung cấp việc lưu trữ và quản lý
dữ liệu (dùng Google Query Language) bên cạnh các hỗ trợ về xác thực người dùng,
thao tác hình ảnh và gửi email.
- Infrastructure-as-a-Service
HVTH: Vũ Phát Lộc – CH1301097 Trang 2
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
o IaaS là việc phân phối hạ tầng máy tính như một dịch vụ. Tầng này khác với PaaS ở

chỗ : phần cứng ảo được cung cấp không kèm theo software stack IaaS là dạng
“thô” nhất của “computing as a service”. Nhà cung cấp IaaS thương mại nối tiếng
nhất là Amazon Elastic Compute Cloud (EC2). Trong EC2 , người dùng có thể chỉ
định máy ảo (VM) đặc biệt của mình và triển khai các ứng dụng trên đó hay là cung
cấp VM image và chạy nó trên server. Người dùng chỉ phải trả tiền cho thời gian tính
toán, dung lượng lưu trữ và băng thông mạng. Hình 1.1 và 1.2 mô tả các Service của
điện toán đám mây và các nhà cung cấp.
Hình 1.1
HVTH: Vũ Phát Lộc – CH1301097 Trang 3
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
Hình 1.2
1.2 Lợi ích khi sử dụng Google App Engine
Những ứng dụng điện toán đám mây dù mới nhưng đang mở ra một tương lai đầy
hứa hẹn. Trong đó có Google App Engine, là một công nghệ mới của Google, một
lĩnh vực mới được các công ty lớn trên thế giới đang ứng dụng và phát triển như
Socialwork, BuddyPoke, Walk Score… Google App Engine cùng với các Google
API, Services song song đó có thể thấy được các ưu điểm nổi bật của ứng dụng
Google App Engine như tính linh hoạt, dễ bảo trì, giảm bớt chi phí, bảo mật…
o 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 như có thể bỏ bớt những thành phần mà mình không muốn.
Google cung cấp rất nhiều các Service các API cho Google App Engine.
o 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 một 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ị này một cách tối đa. Google cung cấp 500 MB lưu trữ ứng dụng và
cho phép 10 GB băng thông lưu chuyển mỗi ngày hay tương đương 5 triệu lượt truy
cập hàng tháng, điều này là hoàn toàn miễn phí.
o Tạo nên sự độc lập: Với điện toán đám mây, phần mềm, dữ liệu có thể được truy cập

và sử dụng từ bất kì đâu, trên bất kì thiết bị nào mà không cần phải quan tâm đến giới
hạn phần cứng cũng như địa lý.
o 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ố hoặc thảm họa xảy ra. Google có
một danh tiếng về độ tin cậy cao, cơ sở hạ tầng hiệu suất cao. With App Engine you
can take advantage of the 10 years of knowledge Google has in running massively
scalable, performance driven systems.Với App Engine, người dùng có thể tận dụng
lợi thế 10 năm của kiến thức Google đã chạy ồ ạt mở rộng, hiệu suất về hệ thống điều
HVTH: Vũ Phát Lộc – CH1301097 Trang 4
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
khiển. The same security, privacy and data protection policies we have for Google's
applications applies to all App Engine applications.
o Bảo mật: An ninh, bảo mật thông tin và bảo vệ dữ liệu đã sử dụng cho các ứng dụng
của Google sẽ áp dụng cho tất cả các ứng dụng App Engine. We take security very
seriously and have measures in place to protect your code and application
data.GoogleBảo đảm an ninh rất nghiêm túc và có biện pháp để bảo vệ code và dữ
liệu của ứng dụng.
o 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 sẽ 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.
Từ những lợi ích trên bảng so sánh dưới sẽ làm rõ hơn việc sử dụng Google App
Engine so với việc sử dụng Web hosting như hiện nay:

GOOGLE APP ENGINE WEB HOSTING
Tính sẵn
sàng
-Dữ liệu lưu trữ tập trung trên hệ

thông Cloud server không lưu trên
một server vật lý.
-Dữ liệu được backup đều đặn.
-Nếu có một server vật lý bị lỗi,
Cloud server vẫn hoạt động ổn định.
-Dữ liệu được khởi tạo và chạy
trên một server vật lý.
-Vào thời gian cao điểm server vật
lý có thể treo dẫn đến các web có
thể tạm ngưng hoạt động.
Khả năng
mở rộng
-Khả năng mở rộng là ngay lập tức
khi có nhu cầu.
-Giảm bớt server khi cảm thấy
không cần sử dụng nhiều tài nguyên
như thế.
-Khả năng sử dụng tài nguyên linh
hoạt giúp tiết kiệm chi phí.
-Các tài nguyên được ảo hóa và
cung cấp cho người dùng.
-Khi người dùng có nhu cầu sử
dụng lớn hơn chúng ta không thể
nâng cấp một cách nhanh chóng,
mà phải vất vả đi mua thêm server,
trả thêm chi phí cho việc cài đặt.
HVTH: Vũ Phát Lộc – CH1301097 Trang 5
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ

Chi phí -Người dùng chỉ cần chi trả cho
những gì sử dụng (Cpu, Ram, Dung
lượng, )
-Chúng có thể nâng cấp/giảm bớt tài
nguyên bất kỳ lúc nào giúp người
dùng tiết kiệm được chi phí.
-Người dùng phải chi trả số tiền
theo cấu hình server của chúng ta
đã mua theo thời gian cố định.
-Việc sử dụng chung server vật lý
khiến web của người dùng bị phụ
thuộc.
-Để duy trì server người dùng cần
trả các khoản chi phí điện, hệ
thống mạng, chi phí bảo trì server.
Quản lý -Thân thiện người dùng với nhiều
tính năng sẵn có.
-Update dữ liệu lên server ngay lập
tức.
-Mất khá nhiều thời gian quản lý
và bảo trì.
Tuy nhiên, mặt trái của việc xây dựng ứng dụng trên Google App Engine là sẽ phụ
thuộc hoàn toàn vào các công nghệ của Google và rất khó có thể tách ra thành một
ứng dụng độc lập. Yahoo hay Microsoft sẽ chẳng bao giờ mua một ứng dụng xây
dựng trên nền tảng của đối thủ. Còn các nhà đầu tư cũng rất e ngại khi tài sản của
công ty đặt hết vào tay người khác, dù cho đó là Google.
1.3 Phát triển và tải ứng dụng Java cho Google App Engine
Phát triển và tải lên các ứng dụng Java cho Google App Engine bằng cách sử dụng
các ứng dụng Java software development kit (SDK).
SDK bao gồm phần mềm cho một web server có thể chạy trên máy tính của mình

để kiểm tra các ứng dụng Java. Server mô phỏng tất cả các dịch vụ App Engine, bao
gồm cả một phiên bản nội bộ của Datastore, Google Account, và khả năng để lấy các
URL, gửi email từ máy tính cá nhân bằng cách sử dụng các App Engine API.
1.4 Servlet Container và một số Framework
HVTH: Vũ Phát Lộc – CH1301097 Trang 6
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
Đối với các ứng dụng Web, tiêu chuẩn Java Servlet là một trong những nền tảng
chính. Do đó có thể xây dựng ứng dụng cho App Engine bằng cách sử dụng Servlet
và JSP. Tuy nhiên người dùng vẫn có thể sử dụng thêm các Framework.
1.5 Google Web Toolkit
GWT là công cụ giúp phát triển các phần client side (HTML, CSS, Jscript,
AJAX ). GWT giúp lập trình viên đặc tả các phần tử trên giao diện web 2.0 tương tự
như viết các giao diện của các ứng dụng desktop.
GWT không phải là framework bên phía server giống như Spring và GraniteDS
nhưng đó là sản phẩm riêng biệt mà Google hướng vào App Engine để sử dụng
Eclipse plug-in. Sử dụng GWT để compiles và tối ưu hóa tốc độ cho trang web bằng
việc sử dụng “web 2.0” vào trong trang web mà không bị các lỗi chồng nhau bên phía
client-side.
GWT cho phép:
o Giao tiếp với server back-end bằng cách sử dụng GWT RPC, JSON, và
XML. Với GWT RPC, có thể chỉ định các thiết bị đầu cuối từ xa để gọi qua
Internet dễ dàng một cách đáng kể.
o Tạo các UI components cho phép đóng gói và tái sử dụng.
o Phát triển các hàm Javascript riêng cho ứng dụng bằng việc sử dụng JavaScript
Native Interface ( JSNI ).
o Hỗ trợ nút Back và history trong trình duyệt .
o Sử dụng GWT-deferred kết nối kĩ thuật để tạo ra tương tác thông qua dữ liệu người
dùng.

o Bắt đầu sử dụng bằng các tools như Eclipse, Junit, JProfiler.
HVTH: Vũ Phát Lộc – CH1301097 Trang 7
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
Chương 2: APP ENGINE DATASTORE
2.1 Giới thiệu Datastore
App Engine cung cấp hai tùy chọn để lưu trữ dữ liệu khác nhau nhưng đảm bảo
tính nhất quán:
o High Replication datastore: 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. High Replication cung
cấp khả năng tiện lợi cao cho đọc và viết (với chi phí của độ trễ cao hơn viết).
o Master / Slave datastore.
2.1.1 Entity và Property
App Engine datastore lưu trữ các đối tượng dữ liệu, được biết đến như những
entity.
Một entity có một hoặc nhiều property.
Một property có một hoặc nhiều value và property name có thể là string, int…
Mỗi entity thường có một key duy nhất xác định.
Một key đơn giản gồm có kind và entity ID được cung cấp bởi datastore. Một ứng
dụng có thể lấy một entity từ datastore bằng cách sử dụng key của entity đó hoặc thực
hiện một câu truy vấn thể hiện các property của entity này. Một câu truy vấn có thể
trả về một hay nhiều entity hoặc trả về các giá trị property đã được sắp xếp.
2.2 Sử dụng JDO trong App Engine
App Engine datastore là một trong số các service được cung cấp bởi App Engine
với hai API: standard API và low-level API.
HVTH: Vũ Phát Lộc – CH1301097 Trang 8
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ

App Engine hỗ trợ cho hai standard API khác nhau là Java Data Objects (JDO) và
Java Persistence API (JPA). Các interface này được sử dụng để mô hình hóa và tổ
chức các entity. Các interface này được cung cấp bởi DataNucleus Access Platform.
Java Data Objects (JDO) là một interface tiêu chuẩn cho các đối tượng lưu trữ có
chứa dữ liệu vào một database. Một ứng dụng sử dụng JDO có thể làm việc với các
loại database khác nhau mà không sử dụng code của database đó, bao gồm CSDL
quan hệ, CSDL phân cấp, CSDL đối tượng.
App Engine Java SDK hỗ trợ JDO 2.3 cho App Engine datastore dựa trên nền tảng
DataNucleus Access Platform.
2.3 Định nghĩa lớp dữ liệu với JDO
2.3.1 Định nghĩa lớp dữ liệu với JDO
Sử dụng JDO để lưu trữ các đối tượng dữ liệu Java (hay còn được gọi là “Plain
Old Java Objects” hoặc “POJO”) trong datastore. Mỗi đối tượng được lưu trữ bởi
JDO trở thành một entity trong App Engine datastore. Tên của lớp đại diện cho kind
của entity và các field của lớp là các property của entity.
Để khai báo một lớp Java có khả năng lưu trữ và nhận dữ liệu từ datastore với
JDO, JDO cung cấp một chú thích @PersistenceCapable.
Các field của lớp được lưu trữ trong datastore được chú thích @Persistent và chú
thích @NotPersistent nếu filed đó không được lưu trữ trong datastore.
Một lớp dữ liệu phải có một và chỉ một field làm nhiệm vụ lưu trữ primary key
của entity tương ứng. Kiểu dữ liệu của field này sẽ là một đối tượng Key và với một
giá trị duy nhất khi đối tượng được lưu vào datastore. Primary key có kiểu là Key sẽ
được chú thích @PrimaryKey và @Persistent(valueStrategy =
IdGeneratorStrategy.IDENTITY)
2.3.2 Đối tượng Serializable
Lớp Serializable như là một lớp để trung chuyển dữ liệu giữa các layer, do đó đây
không phải là một lớp JDO nên không có chú thích Persistent.
HVTH: Vũ Phát Lộc – CH1301097 Trang 9
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên

Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
2.4 Truy vấn trong JDO
Một truy vấn lấy các entity từ datastore đáp ứng lại các yêu cầu. JDO hỗ trợ một
ngôn ngữ truy vấn để lấy các đối tượng gọi là JDOQL. JDOQL tương tự như SQL,
nhưng thích hợp nhiều hơn cho các cơ sở dữ liệu hướng đối tượng chẳng hạn như
App Engine datastore (App Engine datastore không hỗ trợ SQL cho JDO interface).
Sử dụng cú pháp JDOQL để viết một câu truy vấn hoàn chỉnh trong một chuỗi, ngoài
ra cũng có thể sử dụng một số thành phần của câu truy vấn bằng cách gọi các phương
thức trên đối tượng được truy vấn.
Chương 3: APP ENGINE SERVICES
Google App Engine cung cấp một số service sau đây:
o Blobstore.
o Capabilities.
o Channel.
o Images.
o Mail.
o Memcache.
o Multitenancy.
o OAuth.
o Task Queues.
o URL Fetch.
o Users.
o XMPP.
Em chỉ tìm hiểu 3 Service được sử dụng trong ứng dụng: Blobstore, Memcache
service, Mail API.
HVTH: Vũ Phát Lộc – CH1301097 Trang 10
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
3.1 Blobstore

Blobstore API cho phép lưu trữ các đối tượng dữ liệu có kích thước lớn hơn kích
thước đối tượng trong Datastore. Các đối tượng dữ liệu có kích thước lớn chẳng hạn
như video, hình ảnh và tập tin.
Trong ứng dụng sẽ có form để upload các đối tượng này, thiết lập phương thức
blobstoreService.createUploadUrl() cho action của form. Khi form được submit hoặc
gửi một request HTTP POST. Blobstore sẽ tạo một Blobstore value hay còn gọi là
một blob từ nội dung của file và trả về một opaque tham chiếu đến blob, được gọi là
blob key.
Ứng dụng không truy cập trực tiếp đến blob mà thông qua blob entity (đại diện là
lớp BlobInfo) trong datastore.
Ngoài ra cũng phải thiết lập enctype của form là multipart/form-data. Khi form
được submit, Blobstore API sẽ tạo các blob và các dòng thông tin cho các blob được
lưu trữ trong Datastore. Sau đó sẽ gửi lại cho ứng dụng các blob key.
3.2 Memcache Service
Các ứng dụng web thường sử dụng một bộ nhớ cache để phân phối dữ liệu trong
một nơi lưu trữ mạnh mẽ. AppEngine cung cấp Memcache Service.
3.2.1 Sử dụng bộ nhớ Cache
Nếu nhiều request cùng một câu truy vấn, việc này có thể làm chậm tốc độ phản
hồi của ứng dụng. Sử dụng Memcache để tăng tốc độ truy vấn kho dữ liệu chung.
Memcache có thể hữu ích cho các giá trị tạm thời, nếu nhiều câu truy vấn cùng một
thông số, người dùng có thể lưu trữ kết quả vào bộ nhớ cache. Nếu bộ nhớ cache hết
hạn hoặc kết quả đó không sử dụng nữa, người dùng có thể làm mới bộ nhớ cache.
3.2.2 Thời gian lưu trữ dữ liệu trong Cache
Theo mặc định, các giá trị được lưu trữ trong bộ nhớ cache được giữ càng lâu
càng tốt, nhưng cũng có thể cấu hình thời gian hết hạn cho một giá trị được thêm vào
bằng một số giây hoặc cung cấp một thời gian tuyệt đối. Tuy nhiên các giá trị cũng có
thể bị mất khỏi bộ nhớ cache trước khi hết hạn vì những lý do khác như tràn bộ nhớ
HVTH: Vũ Phát Lộc – CH1301097 Trang 11
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên

Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
cache. Do đó phải chắc chắn rằng các giá trị này có thể rỗng trong một phiên làm việc
của người dùng.
Kích thước lưu trữ của một giá trị là 1MB. Kích thước tổng các cuộc gọi và các
giá trị là 32MB.
App Engine Java SDK hỗ trợ JCache API, một interface tiêu chuẩn cho bộ nhớ
cache và một interface cho App Engine Memcache Service. Với JCache, người dùng
có thể thiết lập và gán giá trị cho bộ nhớ cache, kiểm soát hạn dùng của các giá trị và
các số liệu thống kê từ bộ nhớ cache. JCache API vẫn đang còn được phát triển.
3.3 Mail service
Các ứng dụng AppEngine có thể gửi message sử dụng Mail service. Mail service
hỗ trợ JavaMail interface cho việc gửi email. Ứng dụng có thể gửi email thay mặt cho
admin của ứng dụng hoặc các user Google Accounts.
Địa chỉ người gửi phải là địa chỉ mail của admin ứng dụng hoặc địa chỉ mail có
định dạng sau: . Trong đó “string” có thể đặt tùy ý,
“appid” là id ứng dụng.
Ngoài ra người dùng cũng có thể thiết lập thêm các địa chỉ mail khác được gửi
mail trong ứng dụng. Việc thiết lập điều này trong Admin Console.
Chương 4: QUẢN LÝ ỨNG DỤNG
APP ENGINE
4.1 Administration Console
Sau khi đã triển khai ứng dụng, người dùng có thể sử dụng Administration
Console của Google trong App Engine để quản lý, giám sát, và tùy chỉnh ứng dụng .
HVTH: Vũ Phát Lộc – CH1301097 Trang 12
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
Trong Administration Console có thể tạo mới Application IDs, mời các developers
khác để đóng góp cho ứng dụng, xem dữ liệu và các lỗi phát sinh, phân tích hoạt
động, xem qua datastore …

App Engine Administration Console có hai bản. Nếu sử dụng Google Account cá
nhân thì Google account cá nhân, có thể vào trang để
quản lý ứng dụng. Nếu sử dụng Google Apps account để lập trình App Engine,
Administration Console được đặt ở ,
yourdomain.com là tên ứng dụng.
4.2 Application Dashboard
Khi mở bảng dashboard cho một trong các ứng dụng App Engine thì người dùng
sẽ nhận được ảnh chụp các số liệu của ứng dụng như trong hình 5-2
Hình 5-2
HVTH: Vũ Phát Lộc – CH1301097 Trang 13
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
Ba phần làm nên tiêu đề cho bảng dashboard gồm các navigation , version
selector, và đường link dẫn đến danh sách ứng dụng.
Administratio
n Console
Purpose
Dashboard
Bảng hiển thị các cấp độ thông tin về ứng dụng, version, lưu
thông, và quotas
Quota Details Quota details sẽ cho ta biết về các ngạch và các giới hạn trong
ứng dụng.
HVTH: Vũ Phát Lộc – CH1301097 Trang 14
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ

Logs Dùng các tiện ích của App Engine Logs để debug ứng dụng.
HVTH: Vũ Phát Lộc – CH1301097 Trang 15

Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
Cron Jobs Sắp xếp các cron jobs trong file cron.xml chứa trong folder
WEB-INF
Task Queues Task queues cho phép chạy code ngoài yêu cầu người dùng. Nếu
ứng dụng cần chạy các công việc kèm theo, thì nó sẽ sử dụng
đến Task Queue API.
Indexes Các chỉ mục Datastore được định nghĩa trong file configure
datastore-indexes.xml của mỗi ứng dụng.
Data Viewer Việc truy vấn dữ liệu có thể thực hiện trực tiếp trong datastore
bằng cách sử dụng Google Query Language ( GQL ).
Application
Settings
Trong Application Settings gồm có Application Title, the
Authentication Options, Cookie Expiration, được dùng quản lý
các services như XMPP.
Developers Mời các developers khác để đóng góp cho ứng dụng.
Versions Quản lý phiên bản đã được tạo, thiết lập các phiên bản mặc định
cho ứng dụng.
Admin logs Admin Logs hiển thị các hoạt động được giao bởi Admin bằng
cách sử dụng Administration Console hoặc SDK.
HVTH: Vũ Phát Lộc – CH1301097 Trang 16
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
Billing
Settings
Quảng cáo và thiết lập các ngạch cao hơn thông qua Billing
Settings.

Billing
History
Truy cập các báo cáo sử dụng trong Billing History.
Chương 5: XÂY DỰNG ỨNG DỤNG
Sau khi đã tìm hiểu về Google App Engine em đã viết một số demo như Time
Entry dựa trên các kỹ thuật, Service, API mà Google cung cấp. Người dùng có thể
truy cập Time Entry thông qua: Và em đã viết
thêm một demo ứng dụng web quản lý nhóm với các chức năng cơ bản tương tự như
trang web , em đặt tên ứng dụng là “Team Room”. Sau khi
em đã tải ứng dụng lên Google App Engine, người dùng có thể truy cập thông qua
http:// gae-t eamroom.appspot.com
5.1 Time Entry
Time Entry là một ứng dụng cho phép người dùng quản lý thời gian làm việc từng
ngày trong tuần của một Developer trong từng Project đối với từng mốc thời gian
(Milestone).
HVTH: Vũ Phát Lộc – CH1301097 Trang 17
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
Em đã áp dụng GWT để xây dựng giao diện ứng dụng Time Entry và sử dụng
Datastore của Google để lưu trữ các Time Card (một lịch làm việc của một
Developer).
Các chức năng cơ bản của ứng dụng Time Entry bao gồm:
o Khả năng cho người dùng lựa chọn khoảng thời gian để nhập cho bất cứ ngày nào
của tuần.
o Một danh sách để hiển thị tất cả các project của người dùng đang làm việc và báo cáo
trên cùng một project đó.
o Một danh sách lựa chọn với các milestone cụ thể mà người dùng có thể báo cáo.
o Một chỉ số báo cáo cho mục lập hóa đơn hoặc không lập hóa đơn.
o Các mục nhập vào cho phép người dùng nhập vào thời gian ngày của cá nhân trong

tuần, từ thứ hai đến chủ nhật.
o Một tổng giờ phụ cho tất cả các mục trong một tuần đặc biệt, sắp xếp theo project và
cột mốc quan trọng.
o Tổng cộng giờ cho Time Card hiện tại.
o Cho phép thêm một dòng trong một Time Card.
o Cho phép Save một Time Card hiện tại vào cơ sỡ dữ liệu.
o Khả năng hiển thị tất cả các Time Card mà người dùng xác nhận.
o Khả năng cho phép người dùng log-out sessions của họ và thoát khỏi ứng dụng.
5.2 Team Room
HVTH: Vũ Phát Lộc – CH1301097 Trang 18
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
Team Room là ứng dụng web được thiết kế để hỗ trợ cho các thành viên trong
nhóm làm việc cùng nhau, tạo điều kiện hợp tác, trao đổi thông tin. Công cụ này giúp
người quản lý và nhân viên theo dõi tiến độ công việc cũng như chia sẻ các dữ liệu
thông tin trở nên tiện lợi hơn giúp tăng năng suất làm việc nhóm. Một ứng dụng giúp
cho người dùng có thể làm việc nhóm ở bất cứ nơi đâu mà không cần phải có sự hiện
diện của bất kỳ thành viên nào. Qua đó người dùng có thể quản lý được thời gian và
không gian làm việc tốt hơn. Đây là một ứng dụng web có thể nói là tương đối đầy đủ
và thích hợp với các group vừa và nhỏ.
Để thực hiện việc quản lý nhóm được dễ dàng và tốt nhất thì ứng dụng Team
Room hỗ trợ các chức năng sau đây:
o Login: Cho phép đăng nhập bằng một tài khoản đã đăng ký. Sau khi hoàn tất việc
đăng ký và đăng nhập, thì việc tiếp theo cần làm là tạo cho mình một Project hoặc gia
nhập một Project.
o Messages: Thêm mới một message cho các thành viên trong nhóm có thể xem và
bình luận. Những message có thể xem như là những vấn đề cần được trao đổi và thảo
luận của project. Nội dung các message thường ngắn và không được quá 500 ký tự.
(Message có thể xóa, chỉnh sửa )

o Calendar: Trong một Project việc chia nhỏ các mốc thời gian là điều hết sức cần
thiết, do đó với chức năng Calendar, các thành viên có thể tạo mới sự kiện, nhắc lịch
cho các thành viên trong nhóm về các sự kiện. Các sự kiện sẽ được nhắc 1 ngày trước
ngày bắt đầu cũng như ngày kết thúc.
o Writeboard: Bên cạnh các Message dành cho việc trao đổi thì Writeboard được xem
như là thông báo đến các thành viên trong Project. Việc tạo mới một thông báo gồm
các tiêu đề cho phép các thành viên xem và bình luận. ( Writeboard có thể xóa, chỉnh
sửa )
o FileUpload: Việc chia sẻ thông tin cũng như lưu trữ các tài liệu liên quan đến Project
là vô cùng cần thiết. Do đó em tạo ra chức năng FileUpLoad cho phép các thành viên
HVTH: Vũ Phát Lộc – CH1301097 Trang 19
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
có thể upload các tài liệu và download về sử dụng, để thực hiện chức năng này em đã
sử dụng BlobstoreAPI của Google App Engine.
o MindMap: Hiện nay việc sử dụng MindMap để chia sẻ thông tin cũng như tạo nên
một kế hoạch đã được đón nhận một cách rộng rãi, qua đó em thực hiện chức năng
MindMap để các thành viên trong Project có thể tạo ra một bản kế hoạch hoàn hảo và
tiện dụng.
o People & Permission : Chức năng cho phép xem, chỉnh sửa thông tin cá nhân và có
thể mời một người khác vào Project thông qua việc gửi mail, em sử dụng MailAPI
của Google App Engine cho chức năng gửi mail.
Việc sử dụng MailAPI để gửi mail mời một thành viên tham gia project thì
MailAPI cũng được thực hiện khi tạo mới một Message, Calendar, Writeboard,
Meeting, Comment; việc gửi mail này sẽ được thông qua một danh sách các mail của
thành viên và người sử dụng chỉ việc chọn những thành viên mà mình muốn gửi mail.
Đặc điểm trong việc quản lý con người với từng Project: Người tạo mới Project sẽ
là Leader của Project với các quyền được thao tác thêm, xóa, sửa tất cả thông tin
cũng như bài viết liên quan đến Project; quản lý các thành viên trong chức năng

People & Permission. Thành viên chỉ có thể tham gia các Project của mình và một
người có thể tham gia nhiều Project.
Bên cạnh việc sử dụng GWT để xây dựng giao diện cho ứng dụng và sử dụng các
Service để hỗ trợ các chức năng thì toàn bộ dữ liệu của ứng dụng web đều được em
truy xuất và cập nhật vào cơ sở dữ liệu Datastore của Google. Với một tài khoản
miễn phí thì việc lưu trữ dữ liệu Datastore đã lên tới 1GB, và để vượt qua hạn ngạch
này thì ứng dụng của chúng ta sẽ được hàng triệu người biết đến.
Sau đây là một vài hình ảnh về giao diện ứng dụng web Team Room:
1. Giao diện Login
HVTH: Vũ Phát Lộc – CH1301097 Trang 20
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
2. Giao diện chức năng Messages thảo luận
HVTH: Vũ Phát Lộc – CH1301097 Trang 21
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
3. Giao diện chức năng Calendar lịch nhắc việc
4. Giao diện chức năng Writeboard bảng thông báo
HVTH: Vũ Phát Lộc – CH1301097 Trang 22
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
5. Giao diện chức năng FilesUpload
HVTH: Vũ Phát Lộc – CH1301097 Trang 23
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
6. Giao diện chức năng Meeting cuộc họp

7. Giao diện chức năng MindMap
HVTH: Vũ Phát Lộc – CH1301097 Trang 24
Tiểu
luận môn học: Máy học và ứng dụngGVHD: PGS.TS. Vũ Thanh Nguyên
Đồ án môn học: Điện toán lưới và đám mây GVHD: PGS.TS. Nguyễn Phi Khứ
8. Giao diện chức năng People & Permission
5.3 Hướng phát triển
Ứng dụng web Team Room có thể nói với các chức năng hiện nay tương đối đầy
đủ và phù hợp với các group vừa và nhỏ. Tuy nhiên ứng dụng vẫn còn nhiều hạn chế,
phải kể đến hạn chế lớn nhất của ứng dụng là chỉ truy cập được bằng trình duyệt
Google Chrome. Ngoài ra còn một số hạn chế:
• Giao diện ứng dụng vẫn còn ở mức cơ bản.
• Việc quản lý các thành viên vẫn còn rời rạc chưa phân chia thành các nhóm.
• Thông tin của từng thành viên vẫn chưa thật sự đầy đủ.
• Việc phân quyền của các thành viên trong Project chỉ có Leader và thành viên.
Chưa cho phép Leader chia sẻ quyền hạn cho một thành viên.
• Khó theo dõi các thông tin mới thay đổi trong Project, như việc thêm mới
Message, Calendar… Nhóm em sẽ tạo một trang mặc định cho mỗi Project,
hiển thị các thay đổi được cập nhật từng thời điểm.
• Tốc độ truy xuất ứng dụng vẫn còn chậm.
Dựa trên kiến thức tích lũy được trong quá trình thực hiện đồ án, thông qua việc
tìm hiểu công nghệ Google App Engine. Trong thời gian sắp tới em sẽ hoàn chỉnh các
thiếu xót hạn chế trong ứng dụng Team Room, phát triển thành một ứng dụng quản lý
HVTH: Vũ Phát Lộc – CH1301097 Trang 25

×