Tải bản đầy đủ
CHƯƠNG 2: TÌM HIỂU CÔNG NGHỆ GAE CỦA GOOGLE

CHƯƠNG 2: TÌM HIỂU CÔNG NGHỆ GAE CỦA GOOGLE

Tải bản đầy đủ

Hình 2.1: Điện toán đám mây
Một số các nhà cung cấp dịch vụ điện toán đám mây:
• Google App Engine của Google:
• WindowsAzure của Microsoft
• Amazone Webservice của Amazone.com
• Sun Cloud của Sun
• Facebook
2.1.2. Ưu và nhược điểm của điện toán đám mây
2.1.2.1.

Ưu điểm:

• 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.
• 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ủ.
• 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ý.

33

• 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.
• Bảo mật: Việc tập trung dữ liệu từ nhiều nguồn khác nhau sẽ giúp các
chuyên gia bảo mật tăng cường khả năng bảo vệ dữ liệu của người dùng,
cũng như giảm thiểu rủi ro bị ăn cắp toàn bộ dữ liệu.
• Bảo trì dễ dàng: Mọi phần mềm đều nằm trên server, lúc này, người dùng
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.1.2.2.


Nhược điểm:

Tính riêng tư: Các thông tin người dùng và dữ liệu được chứa trên điện
toán đám mây có đảm bảo được riêng tư, và liệu các thông tin đó có bị sử
dụng vì một mục đích nào khác?



Tính sẵn dùng: Liệu các dịch vụ đám mây có bị “treo” bất ngờ, khiến cho
người dùng không thể truy cập các dịch vụ và dữ liệu của mình trong
những khoảng thời gian nào đó khiến ảnh hưởng đến công việc?



Mất dữ liệu: Một vài dịch vụ lưu trữ dữ liệu trực tuyến trên đám mây bất
ngờ ngừng hoạt động hoặc không tiếp tục cung cấp dịch vụ, khiến cho
người dùng phải sao lưu dữ liệu của họ từ “đám mây” về máy tính cá
nhân. Điều này sẽ mất nhiều thời gian. Thậm chí một vài trường hợp, vì
một lý do nào đó, dữ liệu người dùng bị mất và không thể phục hồi được.



Tính di động của dữ liệu và quyền sở hữu: Một câu hỏi đặt ra, liệu người
dùng có thể chia sẻ dữ liệu từ dịch vụ đám mây này sang dịch vụ của đám
mây khác? Hoặc trong trường hợp không muốn tiếp tục sử dụng dịch vụ
cung cáp từ đám mây, liệu người dùng có thể sao lưu toàn bộ dữ liệu của
họ từ đám mây? Và làm cách nào để người dùng có thể chắc chắn rằng các
dịch vụ đám mây sẽ không hủy toàn bộ dữ liệu của họ trong trường hợp
dịch vụ ngừng hoạt động.

34



Khả năng bảo mật : Vấn đề tập trung dữ liệu trên các “đám mây” là cách
thức hiệu quả để tăng cường bảo mật, nhưng mặt khác cũng lại chính là
mối lo của người sử dụng dịch vụ của điện toán đám mây. Bởi lẽ một khi
các đám mây bị tấn công hoặc đột nhập, toàn bộ dữ liệu sẽ bị chiếm dụng.



Các quy định pháp luật cho các dịch vụ, giữa khách hàng và nhà cung cấp.

2.1.3. Cấu trúc và cách thức hoạt động của điện toán đám mây
2.1.3.1.

Cấu trúc phân lớp của mô hình điện toán đám mây

Về cơ bản, “điện toán đám mây” được chia ra thành 5 lớp riêng biệt, có tác
động qua lại lẫn nhau:
• Client (Lớp Khách hàng): Lớp Client của điện toán đám mây bao gồm
phần cứng và phần mềm, để dựa vào đó, khách hàng có thể truy cập và sử
dụng các ứng dụng/dịch vụ được cung cấp từ điện toán đám mây
• Application (Lớp Ứng dụng): Lớp ứng dụng của điện toán đám mây làm
nhiệm vụ phân phối phần mềm như một dịch vụ thông qua Internet, người
dùng không cần phải cài đặt và chạy các ứng dụng đó trên máy tính của
mình, các ứng dụng dễ dàng được chỉnh sữa và người dùng dễ dàng nhận
được sự hỗ trợ.
Các đặc trưng chính của lớp ứng dụng bao gồm :
o Các hoạt động được quản lý tại trung tâm của đám mây, chứ không
nằm ở phía khách hàng (lớp Client), cho phép khách hàng truy cập
các ứng dụng từ xa thông qua Website.
o Người dùng không còn cần thực hiện các tính năng như cập nhật
phiên bản, bản vá lỗi, download phiên bản mới… bởi chúng sẽ
được thực hiện từ các “đám mây”.
• Platform (Lớp Nền tảng): Cung cấp nền tảng cho điện toán và các giải
pháp của dịch vụ, chi phối đến cấu trúc hạ tầng của “đám mây” và là điểm
tựa cho lớp ứng dụng, cho phép các ứng dụng hoạt động trên nền tảng đó.
Nó giảm nhẹ sự tốn kém khi triển khai các ứng dụng khi người dùng không
phải trang bị cơ sở hạ tầng (phần cứng và phần mềm) của riêng mình.

35

• Infrastructure (Lớp Cơ sở hạ tầng): Cung cấp hạ tầng máy tính, tiêu biểu
là môi trường nền ảo hóa. Thay vì khách hàng phải bỏ tiền ra mua các
server, phần mềm, trung tâm dữ liệu hoặc thiết bị kết nối… giờ đây, họ vẫn
có thể có đầy đủ tài nguyên để sử dụng mà chi phí được giảm thiểu, hoặc
thậm chí là miễn phí. Đây là một bước tiến hóa của mô hình máy chủ ảo
(Virtual Private Server).
• Server (Lớp Server - Máy chủ): Bao gồm các sản phẩm phần cứng và phần
mềm máy tính, được thiết kế và xây dựng đặc biệt để cung cấp các dịch vụ
của đám mây. Các server phải được xây dựng và có cấu hình đủ mạnh
(thậm chí là rất may) để đám ứng nhu cầu sử dụng của số lượng động đảo
các người dùng và các nhu cầu ngày càng cao của họ.
2.1.3.2.

Cách thức hoạt động của điện toán đám mây

Để hiểu cách thức hoạt động của “đám mây”, tưởng tượng rằng “đám
mây” bao gồm 2 lớp: Lớp Back-end và lớp Front-end.
Lớp Front-end là lớp người dùng, cho phép người dùng sử dụng và thực
hiện thông qua giao diện người dùng. Khi người dùng truy cập các dịch vụ trực
tuyến, họ sẽ phải sử dụng thông qua giao diện từ lớp Front-end, và các phần mềm
sẽ được chạy trên lớp Back-end nằm ở “đám mây”.Lớp Back-end bao gồm các
cấu trức phần cứng và phần mềm để cung cấp giao diện cho lớp Front-end và
được người dùng tác động thông qua giao diện đó.
2.1.4. Mô hình điện toán đám mây
2.1.4.1.

Các dịch vụ điện toán đám mây :

Các giải pháp dịch vụ điện toán đám mây được phân thành ba mô hình :
SaaS, PaaS, IaaS

36

Hình 2.2: Các dịch vụ điện toán đám mây
Dịch vụ GAE của Google là một dịch vụ PaaS điển hình, cho phép khách
hàng xây dựng các ứng dụng web với môi trường chạy ứng dụng và phát triển
dựa trên ngôn ngữ lập trình Java hoặc Python.
Dịch vụ PaaS cung cấp nền tảng điện toán cho phép khách hàng phát triển
các phần mềm, phục vụ nhu cầu tính toán hoặc xây dựng thành dịch vụ trên nền
tảng Cloud dó. Dịch vụ PaaS có thể được cung cấp dưới dạng các ứng dụng lớp
giữa, các ứng dụng máy chủ (application server) cùng các công cụ lập trình với
ngôn ngữ lập trình nhất định để xây dựng ứng dụng. Dịch vụ PaaS cũng có thể
được xây dựng riêng và cung cấp cho khách hàng thông qua một API riêng.
Khách hàng xây dựng ứng dụng và tương tác với hạ tầng Cloud Computing
thông qua API đó. Ở mức PaaS, khách hàng không quản lý nền tảng Cloud hay
các tài nguyên lớp như hệ điều hành, lưu giữ ở lớp dưới. Khách hàng điển hình
của dịch vụ PaaS chính là các nhà phát triển ứng dụng (ISV).
2.1.4.2.

Các kiểu điện toán đám mây

37

Hình 2.3: Các kiểu điện toán đám mây
Public Cloud: Các đám mây công cộng là các dịch vụ đám mây được một
bên thứ ba (người bán) cung cấp. Chúng được lưu trữ đầy đủ và được nhà cung
cấp bởi đám mây quản lý.
Private Cloud: Các đám mây riêng là các dịch vụ đám mây được cung cấp
trong doanh nghiệp. Những đám mây này được doanh nghiệp quản lý.
Hybrid Cloud: Các đám mây lai là một sự kết hợp của các đám mây công
cộng và riêng. Những đám mây này thường do doanh nghiệp tạo ra và các trách
nhiệm quản lý sẽ được phân chia giữa doanh nghiệp và nhà cung cấp đám mây
công cộng. Đám mây lai sử dụng các dịch vụ có trong cả không gian công cộng
và riêng.
2.2.

Google App Engine

2.2.1. Giới thiệu
Google App Engine (GAE): là giải pháp cho vấn đề điện toán đám mây của
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

38

trình sẽ 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.
GAE cho phép bạn chạy các ứng dụng web của bạn trên cơ sở hạ tầng của
Google, các ứng dụng được dễ dàng để xây dựng, dễ bảo trì, và dễ dàng để có
quy mô như giao thông của bạn và nhu cầu lưu trữ dữ liệu lớn. Với GAE, không
có máy chủ để duy trì màta 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.
Bạn có thể sử dụng tên miền riêng của mình (chẳng hạn như
http://www.example.com/ ) thông qua google apps. Hoặc bạn có thể dùng subdomain 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.
Hiện GAE 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.
2.2.2. Các thành phần chính của GAE
2.2.2.1.

Python Runtime

AppEngine hỗ trợ Python Runtime phiên bản 2.5.2. Hầu hết các thư viện
của Python Standard Library đều được hỗ trợ. Tuy nhiên do vấn đề về security
nên các extensions viết bằng C sẽ không được hỗ trợ. Điều này có nghĩa rằng bạn
không thể nhúng C extensions vào ứng dụng của bạn khi sử dụng App Engine.
Python Runtime cung cấp APIs cho datastore, Google Accounts, App
Engine services. Để tiện lợi cho việc phát triển web AppEngine cũng cung cấp 1
web framework đơn giản là webapp. Do viết bằng ngôn ngữ Python nên
AppEngine hỗ trợ hầu hết các Python framework như Django, CherryPy, Pylons,
web.py với một ít thay đổi nhất định.

39

2.2.2.2.

Java Runtime Environment

Bạn có thể phát triển ứng dụng của bạn cho Java Runtime Environment sử
dụng phổ biến công cụ phát triển web Java và các tiêu chuẩn API. Ứng dụng của
bạn tương tác với môi trường bằng cách sử dụng Java Servlet standard, và có thể
sử dụng các công nghệ ứng dụng web phổ biến như JavaServer Pages (JSP).
• Java Runtime Environment sử dụng Java 6. Các App Engine Java
SDK hỗ trợ phát triển các ứng dụng bằng cách sử dụng Java 5 hoặc 6.
Đối với các kho dữ liệu App Engine, Java SDK bao gồm việc triển khai
của Java Data Objects (JDO) và Java Persistence API (JPA) interfaces. Ứng
dụng của bạn có thể sử dụng các API JavaMail để gửi tin nhắn email với dịch vụ
App Engine Mail. Các java.net HTTP API truy cập vào App Engine lấy URL
dịch vụ. App Engine cũng bao gồm các API cấp thấp cho các dịch vụ của mình
để thực hiện thêm bộ điều hợp, hoặc sử dụng trực tiếp từ ứng dụng. Xem tài liệu
cho the datastore, memcache, URL fetch, mail, images and Google Accounts
APIs.
Thông thường, các nhà phát triển Java sử dụng các ngôn ngữ lập trình
Java và các API để thực hiện các ứng dụng web cho JVM. Với việc sử dụng các
trình biên dịch tương thích với JVM, người phiên dịch, bạn cũng có thể sử dụng
các ngôn ngữ khác để phát triển các ứng dụng web, chẳng hạn như JavaScript,
Ruby, hoặc Scala.
• Datastore
Datastore là cơ chế để thao tác với dữ liệu trên hệ thống dữ liệu phân tán
của Google.APIs của Datastore sẽ cung cấp cho bạn Interface để có thể thao tác
với các dữ liệu phía dưới.
• Google Accounts
AppEngine liên kết mật thiết với tài khoản Google.Bạn có thể cho user
login vào ứng dụng của mình bằng tài khoản Google của họ.
• App Engine Services

40

Cung cấp nhiều dịch vụ để bạn có thể sử dụng cho ứng dụng của mình.
Những dịch vụ có thể liệt kê ở đây là: URL Fetch, Mail, Memcache, Image
Manipulation.
2.2.2.3.

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 GAE.
Tạo cây thư mục như sau:
Guestbook/
src/
...Java source code...
META-INF/
...other configuration...
war/
...JSPs, images, data files...
WEB-INF/
...app configuration...
lib/
...JARs for libraries...
classes/
...compiled classes...

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.
GAE 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. Một

41

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.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.
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." 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.
The appengine-web.xml File
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. File này được đặt tên appengine-web.xml , và nằm trong
WEB-INF/ cùng với web.xml . 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).
2.2.3. Lưu trữ dữ liệu
Cơ sở dữ liệu của GAE cung cấp khả năng mở rộng mạnh mẽ cho ứng
dụng web của bạn, với một khả năng mạnh mẽ trong việc đọc và hiệu suất thực
hiện các câu truy vấn. Một ứng dụng tạo các thực thể với các giá trị dữ liệu được
lưu như các thuộc tính của các thực thể. Ứng dụng có thể thực hiện các câu truy
vấn thông qua các thực thể.
Cơ sở dữ liệu App Engine lưu trữ các đối tượng dữ liệu được biết đến như
các thực thể. Một thực thể có một hoặc nhiều thuộc tính, các thuộc tính có thể
thuộc một kiểu dữ liệu được hỗ trợ như kiểu string, integer hoặc có thể chỉ là
tham chiếu đến thực thể khác. App Engine cung cấp hai kiểu cơ sở dữ liệu với
các tính năng và đảm bảo tính nhất quán như sau:
Cơ sở dữ liệu High Replication (High Replication Datastore HRD): 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

42

dựa trên các thuật toán Paxos . High Replication cung cấp tính sẵn sàng rất cao
cho đọc và viết (với chi phí cao hơn độ trễ viết). Hầu hết các truy vấn cuối cùng
phù hợp. Chi phí tài nguyên lưu trữ tương tự như trong các tùy chọn Master /
Slave. Kho dữ liệu High Replication là loại kho dữ liệu chỉ được hỗ trợ bởi
Python 2.7. Ứng dụng chỉ trả tiền cho những gì sử dụng tại kho dữ liệu High
Replication.
Cơ sở dữ liệu Master / Slave: kho dữ liệu sử dụng một hệ thống sao chép
master-slave, không đồng bộ sao chép dữ liệu khi bạn ghi nó vào một trung tâm
dữ liệu vật lý. Kể từ khi chỉ có một trung tâm dữ liệu là tổng thể bằng văn bản tại
bất kỳ thời gian nhất định, tùy chọn này cung cấp tính nhất quán cho tất cả các
lần đọc và truy vấn, chi phí thời gian tạm thời không có trong các vấn đề trung
tâm dữ liệu hoặc thời gian chết kế hoạch. Không được hỗ trợ trong Python 2.7.
Kho dữ liệu App Engine lưu trữ các đối tượng được coi là các thực thể. Một
thực thể có một hoặc nhiều thuộc tính, loại giá trị của thuộc tính là một trong các
loại dữ liệu được hỗ trợ ví dụ: một thuộc tính có thể là một chuỗi, một số nguyên,
hoặc thậm chí một tham chiếu đến một đối tượng khác.
Kho dữ liệu có thể thực hiện nhiều hoạt động trong một giao dịch duy
nhất.Theo định nghĩa, một giao dịch không thể thành công trừ khi tất cả các hoạt
động trong giao dịch thành công. Nếu bất kỳ một hoạt động không được thực
hiện thành công, giao dịch được tự động thu lại. Điều này đặc biệt hữu ích cho
các ứng dụng web phân phối, mà nhiều người dùng có thể được truy cập hay thao
tác cùng một dữ liệu cùng một lúc. Không giống như cơ sở dữ liệutruyền thống,
kho dữ liệu sử dụng kiến trúc phân tán để tự động quản lý mở rộng quy mô để
tập hợp dữ liệu rất lớn. Nó rất khác nhau từ một cơ sở dữ liệu quan hệ truyền
thống trong cách mô tả mối quan hệ giữa các đối tượng dữ liệu. Hai thực thể của
cùng một loại có thể có các thuộc tính khác nhau. Thực thể khác nhau có thể có
các thuộc tính với cùng tên, nhưng các loại giá trị khác nhau. Trong khi giao diện
kho dữ liệu có nhiều tính năng tương tự của cơ sở dữ liệu truyền thống, đặc điểm
độc đáo của kho dữ liệu bao hàm một cách khác nhau của thiết kế và quản lý dữ
liệu để tận dụng khả năng quy mô tự động. Tài liệu này giải thích làm thế nào để

43