ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
BÀI TIỂU LUẬN MÔN HỌC TÍNH TOÁN LƯỚI
ĐỀ TÀI: TÌM HIỂU VỀ ĐIỆN TOÁN ĐÁM
MÂY VÀ GOOGLE APP ENGINE
GVHD: PGS.TS Nguyễn Phi Khứ
HVTH: Nguyễn Thị Thanh Thảo – MHV: CH1101137
Tp Hồ Chí Minh, ngày 27 tháng 07 năm 2013
MỤC LỤC
LỜI NÓI ĐẦU
Điện toán đám mây ra đời và đang là xu hướng mới của ngày nay. Trong điện toán
đám mây, Các nguồn thông tin và tính toán khổng lồ sẽ nằm tại các máy chủ ảo (đám
mây) đượctruy cập thông qua Internet để kết nối với mọi người khi cần.
Thông qua đám mây các doanh nghiệp không cần phải mua các phần mềm, duy trì
các dịch vụ mà chỉ cần sử dụng các dịch vụ sẵn có trên Internet để phục vụ cho nhu cầu
công việc của mình.
Tìm hiểu về điện toán đám mây, cụ thể là công google App Engine là điểm trọng
tâm của bài tiểu luận môn học này.
Xin chân thành cảm ơn thầy Nguyễn Phi Khứ đã giúp em có nhìn mới và tổng
quan về môn học.
PHẦN 1: ĐIỆN TOÁN ĐÁM MÂY
Cloud Computing (CC) là mô hình diện toán cho phép truy cập qua mạng để lựa
chọn và sử dụng tài nguyên tính toán theo nhu cầu một cách thuận tiện và nhanh chóng,
đồng thời cho phép kết thúc sử dụng dịch vụ, giải phóng tài nguyên dễ dàng, giảm thiểu
các giao tiếp với nhà cung cấp.
1. Lịch sử hình thành
Thuật ngữ điện toán đám mây xuất hiện bắt nguồn từ ứng dụng điện toán
lưới (grid computing) trong thập niên 1980, tiếp theo là điện toán theo nhu cầu
(utility computing) và phần mềm dịch vụ (SaaS).
Điện toán lưới đặt trọng tâm vào việc di chuyển một tải công việc (workload) đến
4. Đặc điểm của điện toán đám mây
Điện toán đám mây có những đặc điểm chính sau đây:
Tránh phí tổn cho khách hàng.
Độc lập thiết bị và vị trí: cho phép khách hàng truy cập hệ thống từ bất kỳ nơi
nào hoặc bằng bất kỳ thiết bị gì.
Nhiều người sử dụng: giúp chia sẻ tài nguyên và giá thành, cho phép tập trung
hóa cơ sở hạ tầng, tận dụng hiệu quả các hệ thống.
Phân phối theo nhu cầu sử dụng
Quản lý được hiệu suất
Tin cậy
Khả năng mở rộng.
Cải thiện tài nguyên.
Khả năng duy trì.
5. Mô hình dịch vụ trong điện toán đám mây
Dịch vụ Cloud Computing ( CC ) rất đa dạng và bao gồm tất cả các lớp dịch vụ
điện toán từ cung cấp năng lực tính toán trên dưới máy chủ hiệu suất cao hay các máy
chủ ảo, không gian lưu trữ dữ liệu, hay một hệ điều hành, một công cụ lập trình, hay một
ứng dụng kế toán … Các dịch vụ cũng được phân loại khá da dạng, nhưng các mô hình
dịch vụ CC phổ biến nhất có thể được phân thành 3 nhóm: Dịch vụ hạ tầng (IaaS), Dịch
vụ nền tảng (PaaS) và Dịch vụ phần mềm (SaaS).
a Dịch vụ hạ tầng IaaS (Infrastructure as a Service)
Dịch vụ IaaS cung cấp dịch vụ cơ bản bao gồm năng lực tính toán, không gian lưu
trữ, kết nối mạng tới khách hàng. Khách hàng (cá nhân hoặc tổ chức) có thể sử dụng tài
nguyên hạ tầng này để đáp ứng nhu cầu tính toán hoặc cài đặt ứng dụng riêng cho người
sử dụng. Với dịch vụ này khách hàng làm chủ hệ điều hành, lưu trữ và các ứng dụng do
khách hàng cài đặt. Khách hàng điển hình của dịch vụ IaaS có thể là mọi đối tượng cần
tới một máy tính và tự cài đặt ứng dụng của mình.
Ví dụ điển hình về dịch vụ này là dịch vụ EC2 của Amazon. Khách hàng có thể
đăng ký sử dụng một máy tính ảo trê dịch vụ của Amazon và lựa chọn một hệ thống điều
hành (ví dụ, Windows hoặc Linux) và tự cài đặt ứng dụng của mình.
lực về hạ tầng cao, đáp ứng nhu cầu tính toán linh hoạt, đem lại chi phí thấp cho khách
hàng. Do đó khách hàng của dịch vụ trên Public Cloud sẽ bao gồm tất cả các tầng lớp mà
khách hàng cá nhân và doanh nghiệp nhỏ sẽ được lợi thế trong việc dễ dàng tiếp cận các
ứng dụng công nghệ cap, chất lượng mà không phải đầu tư ban đầu, chi phí sử dụng thấp,
linh hoạt.
b Đám mây “doanh nghiệp”
Đám mây doanh nghiệp (Private Cloud) là mô hình trong đó hạ tầng đám mây
được sở hữu bởi một tổ chức và phục vụ cho người dùng của tôt chức đó. Private Cloud
có thể được vận hành bởi một bên thứ ba và hạ tầng đám mây có thể được đặt bên trong
hoặc bên ngoài tổ chức sở hữu (tại bên thứ ba kiêm vận hành hoặc thậm chí là một bên
thứ tư).
Private Cloud được các tổ chức, doanh nghiệp lớn xây dựng cho mình nhằm khai
thác ưu điểm được các tổ chức, doanh nghiệp lớn xây dựng cho mình nhằm khai thác ưu
điểm về công nghệ và khả năng quản trị của CC. Với Private Cloud, các doanh nghiệp tối
ưu được hạ tầng IT của mình, nâng cao hiệu quả sử dụng, quản lý trong cấp phát và thu
hồi tài nguyên, qua đó giảm thời gian đưa sản phẩm sản xuất, kinh doanh ra thị trường.
d Đám mây “chung”
Đám mây chung (Community Cloud) là mô hình trong đó hạ tầng đám mây được
chia sẻ bởi một số tổ chức cho cộng đồng người dùng trong các tổ chức đó. Các tổ chức
này do đặc thù không tiếp cận với các dịch vụ Public Cloud và chia sẻ chung một hạ tầng
CC để nâng cao hiệu quả đầu tư và sử dụng.
e Đám mây “lai”
Mô hình đám mây lai (Hybrid Cloud) là mô hình bao gồm hai hoặc nhiều hơn các
đám mây trên tích hợp với nhau. Mô hình Hybrid Cloud cho phép chia sẻ hạ tầng hoặc
đáp ứng nhu cầu trao đổi dữ liệu.
7. Bảo mật trong điện toán đám mây
Phân quyền truy cập người dùng: xác định xem ai có quyền truy cập đặc biệt tới
dữ liệu và quyền của người quản trị.
Điều chỉnh sự chấp thuận: đảm bảo rằng một nhà bán lẻ trải qua những kiểm tra
bên ngoài và những chứng nhận bảo mật.
Google App Engine (App Engine hay GAE) là một nền tảng điện toán đám mây
của Google để phát triển và lưu trữ ứng dụng web trong những trung tâm dữ liệu do
Google quản lý (google-managed data centers). Bản beta được giới thiệu lần đầu tiên vào
ngày 7 tháng 4 năm 2008.
GAE là 1 dịch vụ lưu trữ các ứng dụng web. Khi nói đến “ứng dụng web”, chúng
ta muốn nói tới các ứng dụng hay dịch vụ được truy cập trên các trang web, thường là
thông qua trình duyệt web: những trang web mua bán, mạng xã hội, … App Engine cũng
có thể phục vụ các trang web truyền thống như xử lý văn bản hay hình ảnh nhưng được
thiết kế dành cho thời gian thực.
Thực ra, GAE được thiết kế để lưu trữ những ứng dụng và phục vụ nhiều người
dùng một cách đồng thời. Khi một ứng dụng có thể phục vụ nhiều người dùng một cách
đồng thời mà không làm giảm hiệu suất, chúng ta gọi đó là sự co giãn (scales). Những
ứng dụng được viết cho App Engine sẽ được co giãn một cách tự động. Càng nhiều người
sử dụng chương trình, App Engine sẽ tạo ra càng nhiều tài nguyên cho ứng dụng đó và
quản lý chúng. Chính bản thân ứng dụng cũng không cần phải biết đến các tài nguyên mà
nó đang sử dụng.
Không như những server cung cấp các dịch vụ lưu trữ thông thường hay các server
có chức năng tự quản lý, với Google App Engine, chúng ta chỉ phải trả tiền cho những tài
nguyên mà chúng ta sử dụng. Những tài nguyên này được đo bằng gigabyte và không có
bất kì lệ phí hàng tháng nào hay lệ phí để chúng ta thay đổi diện mạo trang web. Hóa đơn
thanh toán những nguồn tài nguyên này bao gồm CPU chúng ta sử dụng, lưu trữ hàng
tháng, băng thông vào ra (incoming and outgoing bandwidth), và một số các tài nguyên
khác của dịch vụ App Engine.
2. Các nền tảng được hỗ trợ
Hiện App Engine hỗ trợ 2 loại ngôn ngữ chính là: Python và Java hiện tại thêm
ngôn ngữ Go (đang ở mức thử nghiệm). 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.
kiến trúc hoạt động
Kiến trúc của App Engine khác với những server lưu trữ ứng dụng web thông
thường. Ở phần lõi của nó, App Engine sẽ hạn chế những truy cập từ ứng dụng của chúng
Vì việc gửi những file này không cần đến việc gọi code của ứng dụng, nói cách khác,
việc này không cần thiết, làm giảm hiện quả làm việc của các server ứng dụng.
Thay vì thế, App Engine cung cấp một tập các server tách biệt chuyên làm nhiệm
vụ trao đổi các file tĩnh này. Những server nói trên tối ưu hóa cho kiến trúc bên trong và
hạ tầng mạng để xử lý các requests cho các tài nguyên tĩnh. Đối với client, các file tĩnh
này cũng giống như các tài nguyên khác được cung cấp bởi ứng dụng của chúng ta.
Chúng ta upload các file tĩnh cùng với code ứng dụng. Chúng ta có thể cấu hình
vài cách hiển thị nhất định cho các file này, bao gồm các URL cho file tĩnh, loại nội dung,
và các hướng dẫn cho trình duyệt để lưu các bản sao file này trong bộ nhớ cache để giảm
lưu lượng và tăng tốc cho trang web.
c Kho dữ liệu (datastore)
Hầu hết mọi ứng dụng web đều cần một nơi để chứa thông tin khi xử lý yêu cầu từ
phía client và lấy thông tin cho những lần yêu cầu sau này. Việc sử dụng một server làm
một trung tâm dữ liệu là một ý tưởng rất hay nhưng có vấn đề xảy ra khi quá nhiều kết
nối được gửi tới server này.
Hệ thống database của Google App Engine gần giống như một đối tượng database.
Thiết kế của App Engine datastore chỉ là trừu tượng để cho App Engine có thể xử lý việc
phân tán và co giãn các ứng dụng.
d Thực thể (entities) và Thuộc tính (properties)
Một ứng dụng App Engine có thể chứa dữ liệu trong một hay nhiều thực thể
datastore. Mỗi thực thể có một hay nhiều thuộc tính, mỗi thuộc tính đều có tên và giá trị.
Mỗi thực thể đều được phân loại để tiện cho việc truy vấn.
Đối với các thực thể cùng loại với nhau có thể có các thuộc tính khác nhau. Các
thực thể có thể có cùng thuộc tính với các thực thể cùng loại khác nhưng khác về kiểu dữ
liệu.Các thực thể có thể có nhiều giá trị cho một thuộc tính đơn lẻ.
Mỗi thực thể có một khóa riêng (key) phân biệt lẫn nhau được cung cấp bởi ứng
dụng hoặc do App Engine. Khác với CSDL quan hệ, khoá của thực thể không phải là
thuộc tính, nó tồn tại độc lập với thực thể. Khoá của thực thể không được thay đổi khi
thực thể đã được tạo ra.
e Truy vấn (queries) và Chỉ mục (indexes)
nếu mất điện thì dữ liệu trên memcache cũng mất. Và nó cũng có nhiều giới hạn sử dụng
hơn datastore. Việc sử dụng memcache tốt nhất là lưu lại các kết quả của các câu query
hay các tính toán trước đó. Ứng dụng sẽ kiểm tra trong memcache, nếu không có dữ liệu
thì sẽ tiến hành query trên datastore.
Ứng dụng App Engine có thể truy cập các tài nguyên web khác nhờ vào dịch vụ
URL Fetch. Dịch vụ này tạo ra các yêu cầu theo dạng HTTP gửi đến các server khác trên
Internet như là việc tương tác với các web service khác. Vì khi ta truy cập đến server
khác thời gian sẽ lâu nên URL Fetch hỗ trợ chạy ngầm bên dưới trong khi xử lý các yêu
cầu khác.
Ứng dụng App Engine có thể gửi mail dựa vào dịch vụ Mail, hoặc nếu được cấu
hình, nó có thể nhận được email.
Ứng dụng App Engine có thể gửi và nhận những tin nhắn đến các dịch vụ chat có
sử dụng giao thức XMPP bao gồm Google Talk.
h Tài khoản Google (google accounts)
Các chức năng của App Engine tích hợp trong các tài khoản của Google như
Google Mail, Google Docs và Google Calendar. Chúng ta có thể sử dụng tài khoản trên
Google như cho các ứng dụng của chúng ta, do đó không cần thiết lập thêm. Và nếu các
người dùng của chúng ta đã có tài khoản trên Google, họ có thể đăng nhập vào ứng dụng
của chúng ta với các tài khoản đó, mà không cần tạo tài khoản riêng trong ứng dụng. Tất
nhiên, điều đó không bắt buộc. Chúng ta luôn có thể xây dựng hệ thống tài khoản riêng
của mình, hoặc sử dụng một provider OpenID.
i Các công cụ lập trình (programming tools)
Google cung cấp một số tool miễn phí cho việc phá triển ứng dụng App Engine
bằng ngôn ngữ Java và Python. Chúng ta có thể download software development kit
(SDK) cho ngôn ngữ tương ứng và hệ điều hành của chúng ta từ website Google. Người
dùng Java có thể down SDK cho Java trong form plug-in cho Eclipse. Người dùng
Python sử dụng Windows hoặc Mac OS X có thể tải SDK cho Python từ form của giao
diện ứng dụng. Các SDK đó đều có file zip, sử dụng command-lines để trực tiếp tích hợp
vào môi trường phát triển hoặc xây dựng hệ thống.
Mỗi SDK bao gồm một server web chạy ứng dụng của chúng ta tại máy cá nhân,
Gmail của bạn.
Bước 2: Nhập số điện thoại của bạn để Google gửi mã xác nhận. Số điện thoại dạng
+849 (+84 là mã Việt Nam, bỏ số 0 ở đầy số 098=98).
Việc gửi mã xác nhận cũng mất khoảng 2 phút tùy vào mạng. Nếu không được các
bạn đổi số điện thoại khác.
Bước 3: Nhập mã xác nhận mà Google vửa gửi cho bạn.
Bước 4: Nhập thông tin đăng ký gồm tên tài khoản, tiêu đề. Chú ý kiểm tra tên tài khoản
của bạn đã được đăng ký chưa.
Bước 5: Bạn chuyển đến trang dưới tức là bạn đã đăng ký thành công Google
App Engine. Như vậy bạn đã có hosting miễn phí chuyen nghiệp của Google với tên
miền: tenban.appspot.com .
III Cách upload dữ liệu lên GAE
Upload file, đồng bộ hóa dữ liệu từ máy lên host Google. Các bạn theo các bước
hướng dẫn sau:
Bước 1: Download và cài đặt Python 2.7.2 tại đây. Chọn phiên bản phù hợp với hệ điều
hành (bạn có thể sử dụng Java, làm tương tự).
Chú ý nên download bản đầu tiên (chính thức), các bản sau đôi khi không tương thích.
Bước 2: Download và cài đặt Google App Engine SDK for Python tại
đây [http://code.google.com/appengine/downloads.html]. Chọn phiên bản phù hợp với hệ
điều hành.
Bước 3: Kiểm tra thông số cài đặt. Chạy ứng dụng Google App Engine Launcher ->
chọn Edit -> chọn Preferences -> kiểm tra hoặc thêm đường dẫn đến ứng dụng
Python và Google App Engine theo hình ảnh dưới.
Tạo project mới để đồng bộ dữ liệu của bạn.
Chạy ứng dụng Google App Engine Launcher > chọn File > chọn Create
NewApplication ->nhập domain của bạn (tenban.appspot.com chỉ nhập phần tenban)
vào mục Application Name -> chọn Browser để tạo mới ứng dụng (ví dụ chọ ổ D:\)
Bước 4: Vào ổ (C|D|E bạn vừa chọn) tìm tên thư mục bạn vừa tạo, ví dụ của tôi là
D:\\igooblog -> tiếp đó tạo mới thư mục download (bạn có thể tùy chọn đặt tên, và thêm
số lượng thư mục tùy ý) -> dùng notepad mở và sửa file app.yaml thay thế bằng nội dung