Đại học Công Nghệ Thông Tin
Đại học Quốc gia Thành phố Hồ Chí Minh
BÁO CÁO:
TÌM HIỂU GOOGLE APP ENGINE
Môn học: ĐIỆN TOÁN LƯỚI VÀ ĐÁM MÂY
GVHD : PGS.TSKH. Nguyễn Phi Khứ
Học viên: Trần Ngọc Huy – CH1301027
TP.HCM, tháng 6 năm 2014
Mục lục
1. Mở đầu
Ngày nay, đối với các công ty, doanh nghiệp, việc quản lý tốt, hiệu quả dữ liệu của
riêng công ty cũng như dữ liệu khách hàng, đối tác là một trong những bài toán được ưu
tiên hàng đầu và đang không ngừng gây khó khăn cho họ. Để có thể quản lý được nguồn
dữ liệu đó, ban đầu các doanh nghiệp phải đầu tư, tính toán rất nhiều loại chi phí như chi
phí cho phần cứng, phần mềm, mạng, chi phí cho quản trị viên, chi phí bảo trì, sửa chữa,
… Ngoài ra họ còn phải tính toán khả năng mở rộng, nâng cấp thiết bị; phải kiểm soát
việc bảo mật dữ liệu cũng như tính sẵn sàng cao của dữ liệu.
Từ một bài toán điển hình như vậy, chúng ta thấy được rằng nếu có một nơi tin cậy giúp
các doanh nghiệp quản lý tốt nguồn dữ liệu đó, các doanh nghiệp sẽ không còn quan tâm
đến cơ sở hạ tầng, công nghệ mà chỉ tập trung chính vào công việc kinh doanh của họ thì
sẽ mang lại cho họ hiệu quả và lợi nhuận ngày càng cao hơn.
Thuật ngữ “cloud computing” ra đời bắt nguồn từ một trong những hoàn cảnh như vậy.
Thuật ngữ “cloud computing” còn được bắt nguồn từ ý tưởng đưa tất cả mọi thứ như dữ
liệu, phần mềm, tính toán, … lên trên mạng Internet. Chúng ta sẽ không còn trông thấy
các máy PC, máy chủ của riêng các doanh nghiệp để lưu trữ dữ liệu, phần mềm nữa mà
chỉ còn một số các “máy chủ ảo” tập trung ở trên mạng. Các “máy chủ ảo” sẽ cung cấp
các dịch vụ giúp cho doanh nghiệp có thể quản lý dữ liệu dễ dàng hơn, họ sẽ chỉ trả chi
phí cho lượng sử dụng dịch vụ của họ, mà không cần phải đầu tư nhiều vào cơ sở hạ tầng
cũng như quan tâm nhiều đến công nghệ. Xu hướng này sẽ giúp nhiều cho các công ty,
doanh nghiệp vừa và nhỏ mà không có cơ sở hạ tầng mạng, máy chủ để lưu trữ, quản lý
dữ liệu tốt.
2. Khái niệm
2.1 Điện toán đám mây là gi:
Điện toán đám mây 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 (tương
tự như mạng điện) – Theo Wikipedia
Mô hình này đã và đang được các công ty ,doanh nghiệp hướng đến .Sử dụng mô hình
này các doanh nghiệp chỉ cần trả phí cho những ứng dụng mà họ dung ,mà không cần đầu
tư nhiều vào sơ sở hạ tầng, cũng như quan tâm nhiều đến công nghệ .
Hình 1: Mọi thứ đều tập trung vào đám mây
2.2 Lợi ích cloud computing:
• 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. (Thay vì phải bỏ ra hàng trăm USD cho 1 bộ Ms office, ta có thể mua riêng
lẻ từng phần hoặc chỉ trả 1 khoản phí rất nhỏ mỗi khi sử dụng 1 phần nào đó của
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ị này 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, 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ý. (Bạn có thể chơi Call of Duty 6 trên iPad
hoặc iPhone mà không cần quan tâm đến cấu hình của nó)
• 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ữ 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. (Hãy
tưởng tượng 1 ngày nào đó, server yêu quý của công ty tự nhiên bốc cháy với toàn
bộ dữ liệu quý giá bên trong, bạn sẽ làm gì??)
• 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. (Dữ liệu được đặt tại 6 máy chủ khác nhau →
trong trường hợp hacker tấn công, bạn cũng sẻ chỉ bị lộ 1/6. Đây là 1 cách chia sẻ
rủi ro giữa các tổ chức với nhau)
• 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.
2.3 Ai đang ứng dụng Cloud computing:
Các ông lớn đã bắt đầu rục rịch trong cuộc chạy đua đến với điện toán đám mây. Những
Google, Microsoft, Amazone, Sun đều đã và đang phát triển những nền tảng điện toán
đám mây của riêng mình. Các nền tảng điện toán đám mây lớn có thể kể đến bây giờ bao
gồm:
• Google App Engine của Google: />• Windows Azure của Microsoft:
/>• Nền tảng điện toán đám mây ra đời đầu tiên: Amazone Webservice của
Amazon.com
• Sun Cloud của Sun />• Facebook
2.4 Google App Engine là gì:
“Google App Engine” (GAE) là một nền tảng hosting bao gồm web server, cơ sở
dữ liệu BigTable and kho lưu trữ file GFS. GAE cho phép bạn viết ứng dụng web dựa
trên cơ sở hạ tầng của Google. Nghĩa là bạn không cần quan tâm là trang web bạn được
lưu trữ như thế nào (kể cả database đi kèm), mà chỉ cần quan tâm đến việc phát triển ứng
dụng theo các API do Google cung cấp.
Với App Engine,Bạn chỉ cần tải lên các ứng dụng của bạn, và nó sẵn sàng để phục
vụ người dùng của bạn.
Bạn có thể sử dụng tên miền riêng của mình (chẳng hạn
như ) thông qua google apps. Hoặc bạn có thể dùng sub-
domain miễn phí của appspot.com.
GAE cho phép được host miễn phí với dung lượng 500 MB lưu trữ 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 pageview hàng
tháng,Vượt qua mức này bạn sẽ phải trả phí. Dùng GAE, chúng ta khỏi phải thiết kế
database, viết SQL để truy vấn data, map data vô object. Chúng ta chỉ cần design các
class và GAE tự động lo phần làm việc với database.
Tóm lại, giờ đây bạn chỉ cần phải nghĩ ra và viết những ứng dụng tuyệt vời nhất
rồi kêu gọi cả thế giới vào dùng. Tuy nhiên, mặt trái của việc xây dựng ứng dụng trên
GAE là bạn sẽ phụ thuộc hoàn toàn vào các công nghệ của Google và rất khó có thể tách
ra thành một ứng dụng độc lập. Yahoo hay Microsoft sẽ chẳng bao giờ mua một ứng
dụng xây dựng trên nền tảng của đối thủ. Còn các nhà đầu tư cũng rất e ngại khi tài sản
của công ty bạn đặt hết vào tay người khác, dù cho đó là Google.
Hiện AppEngine hỗ trợ 2 loại ngôn ngữ là: Python và 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.
3. Hướng dẫn cài đặt
3.1 Yêu cầu:
- Eclipese hay jcreator
- Google plugin cho Eclipese
- AppEngine-java-SDK-1.3.8.zip
3.2 Đăng kí tài khoản Google App Engine:
Bước 1:Để triển khai các ứng dụng của bạn với các đám mây của Google, bạn cần
một tài khoản AppEngine. Làm được một tài khoản bạn cần một tài khoản email
của Google. Open và đăng nhập với thông tin tài
khoản gmail của bạn
Bước 2: Chọn nút Create Application
Bước 3:
Bạn cần phải xác minh tài khoản của bạn thông qua một số điện thoại hợp lệ.Sau khi
cung cấp số điện thoại của bạn, Google sẽ nhắn cho bạn một mã xác minh qua SMS.
Bước 4:
Nhập mã xác nhận của google
Bước 5:
Tiến hành tạo một ứng dụng.Chúng ta được phép tạo được 10 ứng dụng cho một tài
khoản gmail.
Đây là giao diện chính của ứng dụng chúng ta tạo ra.
3.3 Tạo một project:
Các ứng dụng App Engine Java sử dụng các chuẩn java servlet để tương tác với môi
trường máy chủ web. Các file của một ứng dụng bao gồm: các file class đã được biên
dịch từ file java, các file JAR của bộ thư viện, các file tĩnh (css,…) và các file xml cấu
hình. Tất cả được sắp xếp theo một cấu trúc thư mục và nằm trong thư mục WAR
Cấu trúc thư mục project:
Một thư mục với tên Guestbook được tạo để chứa dự án. Bên trong là 2 thư mục, một
thư mục mang tên /src để chứa mã nguồn java và một thư mục /war để chứa các file class
được biên dịch từ file nguồn java. Thư mục war được xem là một ứng dụng hoàn chỉnh
dùng để up lên Google App.
!"#$%
&'()*)
+, /.
/', /.
0%, /.
+/', /.
12&,3'
,-4
5.
67"#$%
6,3'
!44+"5,3'
'.
'+
84+'2'.
1!9:;+.+
Tạo cây thưc mục như sau:
The servlet class:
Các ứng dụng App Engine Java sử dụng java servlet API để tương tác với máy chủ
web. Một HTTP Servlet là một lớp ứng dụng có khả năng xử lý và phản hồi các yêu cầu
web. Lớp này thừa kế lớp javax.servlet.GenericServlet hoặc lớp
javax.servlet.http.HttpServlet.
Trong thư mục src/guestbook tạo một file có tên GuestbookServlet.java có nội dung:
Google App Engine cung cấp một số dịch vụ hữu ích dựa trên cơ sở hạ tầng Google, có
thể truy cập bởi các ứng dụng bằng cách sử dụng thư viện có trong SDK. One such
service is the Users service, which lets your application integrate with Google user
accounts. Một trong những dịch vụ là dịch vụ người dùng, cho phép tích hợp các ứng
dụng của bạn với tài khoản người dùng Google. With the Users service, your users can
use the Google accounts they already have to sign in to your application. Với dịch vụ
người dùng, người dùng của bạn có thể sử dụng Google các tài khoản mà họ đã có để
đăng nhập vào ứng dụng của bạn.
Trong đoạn code trên, class GuestbookServlet sử dụng Users API để kiểm tra xem
người dùng đã đăng nhập với tài khoản Google. Nếu chưa, thì người dùng sẽ được
chuyển đến màn hình đăng nhập tài khoản Google. userService.createLoginURL( ) sẽ
trả về URL của màn hình đăng nhập.
Signgustbookservlet.java file:
4..<
+4 /.,+,#=34+<
+4 /.3,/',)>4,?<
+4,',.44+,.4+,,@<
+4,',.44+,.4+,,@/+<
+4,',.44+,.4+,,@/+%.A<
4'+'./'32B>4/'C
4'+/+22B>4/'9DDEB>4/'944
)5#=34+C
@/+/+F@/+%.A,@/+<
Trong src/guestbook/ tạo 1 file SignGuestbookServlet.java có nội dung sau:
4..<
+4 /.,+,#=34+<
+4 /.,+',G.<
+4 /.,+','+,;<
+4 /.3,-2,0+..<
+4 /.3,/',)>4,?<
+4,',.44+,.4+,,@<
+4,',.44+,.4+,,@/+<
+4,',.44+,.4+,,@/+%.A<
+4,+<
+4,0%<
4'+'.+/'32B>4/'C
4+/..+&.';'F;,;+/','.,$.<
4'+/+220B>4/'9DDEB>4/'944
)5#=34+C
@/+/+F@/+%.A,@/+<
@F/+,8@<
+FD,0..HH<
G.2.F5G.<
++F5+EE2.<
0+..4F0%,,0+..<
AC
4,.0++<
I&.''AC
4,'<
I
4,292+HJ,-4H<
I
I
Đoạn code này tạo đối tượng Greeting mới bằng việc gọi hàm. Để lưu đối tượng vào
kho dữ liệu, nó tạo ra PersistenceManager nhờ vào việc sử dụng
PersistenceManagerFactory . Khi makePersistent được trả về, các đối tượng mới được
lưu trong kho dữ liệu.
PMF file:
Mỗi khi yêu cầu sử dụng, kho dữ liệu sẽ tạo ra một đối tượng mới của lớp
PersistenceManager thong qua thư class PersistenceManagerFactory.
Trong thư mục src/guestbook tao một file PMF.java có nội dung:
4..<
+4 /.3,-2,1G=B'4<
+4 /.3,-2,0+..%.A<
4'+&.''.0%C
4+/..+&.'0+..%.A4:#.F
1G=B'4,0+..%.AH..+"4+.'H<
4..<
+4 /.,+',G.<
+4 /.3,-2,..+,#2..A<
+4 /.3,-2,..+,#2+A A4<
+4 /.3,-2,..+,0+8.4.'<
+4 /.3,-2,..+,0+<
+4 /.3,-2,..+,0+.AKA<
+4,',.44+,.4+,,@<
L0+8.4.'+2+A A4F#2+A A4,!00;#8! #=$
4'+'.+C
L0+.AKA
L0+/.'.AF#2..A,#G$ # M
4+/.;+2<
4. Kiểm thử và nhận xét
4.1 Kiểm thử:
Getting.java
Trong thư mực src/guestbook ta tạo một file Greeting.java có nội dung:
L0+
4+/.@.)<
L0+
4+/.+<
L0+
4+/.G.2.<
4'++@.)E+EG.2.C
)+,.)F.)<
)+,F<
)+,2.F2.<
I
4'+;#2C
+2<
I
4'+@!)C
Lớp này sẽ định nghĩa 3 thuộc tính: author, content và date. Ba cái trường này sẽ
được chú thích @Persistence để thông báo cho DataNucleus lưu chúng như 3 đối
tượng thuộc tính trong Goolge App.
jdoconfig.xml file:
Trong thư mục war/WEB-INF/classes/META-INF/, ta tạo file jdoconfig.xml để cấu hình
Goole APP thành nền tảng try xuất.
NO3'/+FH,H2+FH:"HOP
N-2&3'FH)>4QJJ /.,,J3'JJ-2J-2&H
3'Q3+FH)>4QJJ555,5,JJR;)."+.H
3+Q$.4.).;.+FH)>4QJJ /.,,J3'JJ-2J-2&HP
N4+"..":.A.FH..+"4+.'HP
N44A.FH /.3,-2,0+..%.A8'.H
/.'FH,2..',,.44+,-2,G..1G=0+..%.AHJP
N44A.FH /.3,-2,4+,8+@9;H/.'FH.44+HJP
N44A.FH /.3,-2,4+,$..+.'9.2H/.'FHHJP
N44A.FH /.3,-2,4+,$..+.'6+H/.'FHHJP
N44A.FH /.3,-2,4+,9.+S.'H/.'FHHJP
N44A.FH2..',.44+,.8.G.. 3H/.'FHHJP
NJ4+"..":.AP
NJ-2&P
guestbook.jsp file:
Trong war/ ta tạo 1 file guestbook.jsp để làm giao diện cho người sử dụng post các
bình luận.
<p>The guestbook has no messages.</p>
<%
} else {
for (Greeting g : greetings) {
if (g.getAuthor() == null) {
%>
<p>An anonymous person wrote:</p>
<%
} else {
%>
<p><b><%= g.getAuthor().getNickname() %></b> wrote:</p>
<%
}
%>
<blockquote><%= g.getContent() %></blockquote>
<%
}
}
pm.close();
%>
<form action="/sign" method="post">
-Test case 1: Nhập sai các thông tin SQL server connect.
Server thông báo, kết nối không thành công.
web.xml file:
Khi máy chủ web nhận được yêu cầu, nó xác định servlet class để gọi bằng cách sử
dụng một file cấu hình được gọi là "mô tả triển khai ứng dụng web." This file is named ,
and resides in the directory in the WAR. and are part of the servlet specification. File
này được đặt tên là web.xml , và nằm trong war/WEB-INF/ thư mục trong WAR. WEB-
INF/ và web.xml là một phần của đặc tả servlet.
theappengine-web.xml :
App Engine cần một tập tin cấu hình bổ sung để tìm ra cách để triển khai và chạy ứng
dụng. This file is named , and resides in alongside . File này được đặt tên appengine-
web.xml , và nằm trong WEB-INF/ cùng với web.xml . It includes the registered ID of
your application (Eclipse creates this with an empty ID for you to fill in later), the version
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
" /><web-app xmlns="
version="2.5">
<servlet>
<servlet-name>guestbook</servlet-name>
<servlet-class>guestbook.GuestbookServlet</servlet-
class>
</servlet>
<servlet-mapping>
<servlet-name>guestbook</servlet-name>
<url-pattern>/guestbook</url-pattern>
</servlet-mapping>
<servlet>
number of your application, and lists of files that ought to be treated as static files (such
as images and CSS) and resource files (such as JSPs and other application data). Nó bao
gồm các ID đăng ký của các ứng dụng của bạn (Eclipse tạo ra điều này với một ID trống
để bạn điền vào sau), số phiên bản của ứng dụng của bạn, và danh sách các file đó phải
được đối xử như các file tĩnh (như hình ảnh và CSS) và các file tài nguyên (như JSP và
dữ liệu ứng dụng khác).
In the directory , a file named has the following contents: Trong thư mục
war/WEB-INF/ , một tập tin có tên appengine-web.xml có nội dung sau đây:
5. Triển khai ứng dụng
Để upload code và các file chương trình của bạn lên Google App Engine ta dùng một
tập lệnh có trong SKD có tên: appcfg.cmd
Cần chuẩn bị:
Đưa ID vào ứng dụng:
Cần 1 ID application đã được đăng ký trên google để upload ứng dụng, theo như
cách đăng ký phần trên, ta có được ID application là : ch08-helloworld
Ta vào thưc mục war/WEB-INF/appengine-web.xml mở file appengine-web.xml
lên, đặt ID application vào giữa thẻ <application> </application> rồi save lại.
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app
xmlns=" /> <application></application>
<version>1</version>
<system-properties>
<property name="java.util.logging.config.file"
Bắt đầu upload:
Sau đó giải nén ra ổ D ta được D:\appengine-java-sdk, mở cmd ta gõ:
D: // Chuyển về ổ D
Gõ: D:\\appengine-java-sdk\bin\appcfg.cmd update D:\guestbook\war để upload.
Điền mail và pass nếu chương trình hỏi, và upload thành công.
6. Hiện thực chương trình
Yêu cầu chương trình phải kết nối internet. Truy cập chương trình tại domain:
/>Giao diện chương trình:
Nhập thông tin và xuất ra thông báo chào mời.