Google là một trong những nhà cung cấp dịch vụ điện toán đám mây hiện nay với nền tảng App Engine cho phép người dùng xây dựng và triển khai ứng dụng web Java... Tuy nhiên hầu hết các do
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NÔNG LÂM TPHCM
KHOA CÔNG NGHỆ THÔNG TIN
LUẬN VĂN TỐT NGHIỆP
NGHIÊN CỨU VÀ TRIỂN KHAI ỨNG DỤNG WEB TRÊN NỀN TẢNG
APP ENGINE CỦA GOOGLE
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NÔNG LÂM TPHCM
KHOA CÔNG NGHỆ THÔNG TIN
LUẬN VĂN TỐT NGHIỆP
NGHIÊN CỨU VÀ TRIỂN KHAI ỨNG DỤNG WEB TRÊN NỀN TẢNG
APP ENGINE CỦA GOOGLE
Giáo viên hướng dẫn: Sinh viên thực hiện:
TP.HỒ CHÍ MINH, tháng 8 năm 2011
Trang 4CÔNG TRÌNH HOÀN TẤT TẠI TRƯỜNG ĐẠI HỌC NÔNG LÂM TP HCM
Cán bộ hướng dẫn: Thạc sĩ Mai Anh Thơ
Cán bộ phản biện: Tiến sĩ Phạm Văn Tính
Luận văn cử nhân được bảo vệ tại HỘI ĐỒNG CHẤM LUẬN VĂN CỬ NHÂN TRƯỜNG ĐẠI HỌC NÔNG LÂM TP HCM ngày 31 tháng 8 năm 2011
Trang 5NHIỆM VỤ LUẬN VĂN CỬ NHÂN
I TÊN ĐỀ TÀI: Nghiên cứu và triển khai ứng dụng web trên nền tảng App engine
của Google
II NHIỆM VỤ VÀ NỘI DUNG
Nghiên cứu và trên khai ứng dụng bán sơn trực tuyến trên nền tảng App engine của Google
III NGÀY GIAO NHIỆM VỤ: 10/03/2011
IV NGÀY HOÀN THÀNH NHIỆM VỤ: 31/08/2011
V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: Thạc sĩ Mai Anh Thơ
CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc Lập-Tự Do-Hạnh Phúc
Bộ Giáo Dục và Đào Tạo
Trường ĐH NÔNG LÂM TpHCM
Họ tên sinh viên: NGUYỄN HỒ YẾN NHI
Ngày tháng năm sinh: 22/10/1989
Chuyên ngành: Hệ thống thông tin
Họ tên sinh viên: TRỊNH VĂN QUI
Ngày tháng năm sinh: 04/01/1987
Chuyên ngành: Hệ thống thông tin
Họ và tên sinh viên: VÕ HÀ TIẾN
Ngày tháng năm sinh: 05/04/1986
Chuyên ngành: Mạng máy tính và truyền
Phái: nam
Nơi sinh: Khánh Hòa Ngành: Công nghệ thông tin
Ngày / / KHOA CNTT
Ngày / / CHỦ NHIỆM CHUYÊN NGÀNH Ngày / /
CÁN BỘ HƯỚNG DẪN
Trang 6LỜI CẢM ƠN
Trong suốt quá trình học tập và hoàn thành luận văn, chúng em
đã nhận được sự hướng dẫn, giúp đỡ quý báu của Cha Mẹ, Thầy Cô
và các bạn
Trước hết, chúng con xin nói lên lòngbiết ơn sâu sắc đối với Cha
Mẹ đã chăm sóc, nuôi dạy chúng con nên người
Với lòng kính trọng và biết ơn sâu sắc, chúng em xin được bày tỏ lời cảm ơn chân thành tới Ban Giám Hiệu cùng toàn thể Thầy Cô Khoa Công nghệ thông tin trường Đại Học Nông Lâm đã truyền đạt cho chúng em những kiến thức quý báu, đồng thời tạo điều kiện thuận lợi giúp chúng em hòan thành tốt luận văn tốt nghiệp
Đặc biệt, chúng em xin gửi lời tri ân chân thành nhất đến Cô Mai Anh Thơ, người đã luôn quan tâm giúp đỡ, chỉ bảo và động viên chúng em trong suốt quá trình thực hiện luận văn
Bên cạnh đó, chúng em xin gửi lời cám ơn đến Công ty TNHH MTV Sơn Thắng Lợi đã hợp tác, cung cấp tư liệu, giúp chúng em hoàn thành ứng dụng, góp phần làm cho luận văn thêm giá trị
Chúng em đồng gửi lời cám ơn đến các anh chị, bạn bè sinh viên cùng khoa đã luôn bên cạnh động viên tinh thần, chia sẻ kinh nghiệm quý báu góp phần cho thành công của luận văn
Mặc dù chúng em đã cố gắng hoàn thành đồ án trong phạm vi và khả năng cho phép, nhưng chắc chắn không tránh khỏi những thiếu sót nhất định Chúng em kính mong nhận được sự chỉ bảo của quý Thầy Cô và sự góp ý chân thành của các bạn
Chúng em kính chúc Cha Mẹ luôn dồi dào sức khỏe, kính chúc quý Thầy Cô luôn khỏe mạnh, và thành công trong công tác trồng người, mến chúc các bạn luôn vững vàng trên con đường học vấn và
sự nghiệp
Xin chân thành cám ơn!
Trang 7MỤC LỤC
MỤC LỤC I DANH SÁCH CHỮ VIẾT TẮT IV DANH MỤC CÁC HÌNH VI DANH MỤC CÁC BẢNG XII
TÓM TẮT 1
CHƯƠNG 1: MỞ ĐẦU 2
1.1 GIỚI THIỆU 2
1.2 ĐẶT VẤN ĐỀ 3
1.3 LÝ DO CHỌN ĐỀ TÀI 3
1.3.1 LÝ DO CHỦ QUAN 3
1.3.2 LÝ DO KHÁCH QUAN 3
1.4 MỤC ĐÍCH ĐỀ TÀI 4
1.5 ĐỐI TƯỢNG NGHIÊN CỨU 4
1.6 NỘI DUNG NGHIÊN CỨU 5
1.7 CÁC VẤN ĐỀ VÀ HƯỚNG NGHIÊN CỨU 5
1.8 CẤU TRÚC LUẬN VĂN 6
CHƯƠNG 2: TỔNG QUAN VỀ ĐIỆN TOÁN ĐÁM MÂY 7
2.1 KHÁI NIỆM ĐIỆN TOÁN ĐÁM MÂY 7
2.2 NHỮNG ĐẶC ĐIỂM NỔI BẬT 8
2.3 MÔ HÌNH HƯỚNG DỊCH VỤ 9
2.4 CÁCH THỨC HOẠT ĐỘNG CỦA ĐIỆN TOÁN ĐÁM MÂY 11
2.5 CÁC MÔ HÌNH TRIỂN KHAI ĐIỆN TOÁN ĐÁM MÂY 12
2.5.1 CÁC ĐÁM MÂY CÔNG CỘNG (PUBLIC CLOUD) 13
2.5.2 CÁC ĐÁM MÂY RIÊNG (PRIVATE CLOUD) 14
2.5.3 CÁC ĐÁM MÂY LAI (HYBRID CLOUD) 15
2.5.4 CÁC ĐÁM MÂY CHUNG (COMMUNITY CLOUD) 16
2.6 ƯU VÀ NHƯỢC ĐIỂM CỦA ĐIỆN TOÁN ĐÁM MÂY 16
2.6.1 ƯU ĐIỂM 16
2.6.2 NHƯỢC ĐIỂM 17
CHƯƠNG 3: GOOGLE APP ENGINE 19
3.1 KHÁI NIỆM VÀ SỰ RA ĐỜI 19
3.2 KIẾN TRÚC HOẠT ĐỘNG 20
3.3 CÁC THÀNH PHẦN CHÍNH CỦA GAE VÀ CHỨC NĂNG CỦA MỖI PHẦN 21
Trang 83.3.1 MÔI TRƯỜNG THỰC THI (THE RUNTIME ENVIRONMENT) 21
3.3.2 CÁC FILE SERVER TĨNH (STATIC FILE SERVERS) 24
3.3.3 KHO DỮ LIỆU (DATASTORE) 24
3.3.3.1 THỰC THỂ (ENTITIES) VÀ THUỘC TÍNH (PROPERTIES) 25
3.3.3.2 TRUY VẤN (QUERIES) VÀ CHỈ MỤC (INDEXES) 25
3.3.3.3 PHIÊN GIAO DỊCH (TRANSACTION) 25
3.3.3.4 CÁC DỊCH VỤ (THE SERVICES) 26
3.3.3.5 TÀI KHOẢN GOOGLE (GOOGLE ACCOUNTS) 27
3.3.3.6 HÀNG ĐỢI CÔNG VIỆC VÀ LẬP LỊCH (TASK QUEUES VÀ CRON JOBS) 27
3.3.3.7 CÁC TOOL LẬP TRÌNH 28
3.4 MÀN HÌNH QUẢN TRỊ (THE ADMINISTRATION CONSOLE) 29
3.5 HẠN CHẾ CỦA APP ENGINE 29
CHƯƠNG 4: CÁC DỊCH VỤ CỦA GAE 31
4.1 DATASTORE 31
4.1.1 TỔNG QUAN 31
4.1.2 API 34
4.1.2.1 PYTHON 34
4.1.2.2 JAVA 37
4.2 BLOBSTORE 48
4.2.1 TỔNG QUAN 48
4.2.2 API 49
4.2.2.1 PYTHON 49
4.2.2.2 JAVA 51
4.3 CAPABILITIES 54
4.3.1 TỔNG QUAN 54
4.3.2 API 55
4.3.2.1 PYTHON 55
4.3.2.2 JAVA 56
4.4 MAIL 57
4.4.1 TỔNG QUAN: 57
4.4.2 API: 57
4.4.2.1 PYTHON: 57
4.4.2.2 JAVA: 60
4.4.3 LOCAL TEST 63
4.5 MEMCACHE 64
4.5.1 TỔNG QUAN 64
4.5.2 API: 65
4.5.2.1 PYTHON 66
4.5.2.2 JAVA 67
4.5.2.2.1 API CỦA APP ENGINE 67
4.5.2.2.2 API JCACHE 68
4.6 URL FETCH 71
Trang 94.6.2.1 PYTHON 73
4.6.2.2 JAVA 74
4.7 USERS 75
4.7.1 TỔNG QUAN 75
4.7.2 API 76
4.7.2.1 PYTHON 76
4.7.2.2 JAVA 77
CHƯƠNG 5 – BÀI TOÁN ỨNG DỤNG: PHÁT TRIỂN HỆ THỐNG BÁN SƠN TRỰC TUYẾN 79
5.1 PHÁT BIỂU BÀI TOÁN 79
5.2 PHÂN TÍCH – THIẾT KẾ HỆ THỐNG 79
5.2.1 TỔNG QUAN HỆ THỐNG 79
5.2.2 LƯỢC ĐỒ USECASE 80
5.2.2.1 MODULE HIỂN THỊ THÔNG TIN 82
5.2.2.2 MODULE HIỂN THỊ SẢN PHẨM 83
5.2.2.3 MODULE ĐẶT HÀNG 84
5.2.2.4 MODULE QUẢN LÝ THÔNG TIN 85
5.2.2.5 MODULE QUẢN LÝ SẢN PHẨM 86
5.2.3 SƠ ĐỒ LỚP 88
CHƯƠNG 6 – KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN 91
6.1 KẾT QUẢ ĐẠT ĐƯỢC 91
6.1.1 KIẾN THỨC 91
6.1.2 ỨNG DỤNG – WEBSITE SƠN THẮNG LỢI 92
6.2 HƯỚNG PHÁT TRIỂN 93
TÀI LIỆU THAM KHẢO 94
PHỤ LỤC A – ĐĂNG KÝ GAE 95
PHỤ LỤC B – HƯỚNG DẪN CÀI ĐẶT MÔI TRƯỜNG LẬP TRÌNH GAE CHO JAVA 103
PHỤ LỤC C – CÀI ĐẶT MÔI TRƯỜNG LẬP TRÌNH GAE CHO PYTHON 114
PHỤ LỤC D – TỔNG QUAN VỀ PYTHON 135
PHỤ LỤC E – ĐẶC TẢ CÁC USECASE CHÍNH CỦA HỆ THỐNG WEBSITE SƠN THẮNG LỢI 149
Trang 10DANH SÁCH CHỮ VIẾT TẮT
AD Application Dictionary
API Application Programming Interfaces AWS Amazone Web Service
CGI Common Gateway Interface
CNTT Công Nghệ Thông Tin
CNRI Corporation for National Research Initiatives CPU Central Processing Unit
CRM Customer Relationship Management CSDL Cơ sở dữ liệu
Css Cascading Style Sheets
FSF Free Software Foundation
FTP File Transfer Protocol
GAE Google App Engine
GAEJ Google App Engine for Java
GAEP Google App Engine for Python
GB Gigabyte
GWT Google Web Tootkit
HTTP Hyper Text Transfer Protocol
HTTPS Hypertext Transfer Protocol Secure
IaaS Infrastructure as a Service
IT Information technology
JDK Java Development Kit
JDO Java Data Objects
JDOQL Java Data Objects Query Language
JPA Java Persistence API
Trang 11JVM Java Virtual Machine
MB Megabyte
OS Operatin System
PaaS Platform as a Service
PEP Python Enhancement Proposal
SaaS Software as a Service
SDC Secure Data Connector
SDK Software Development Kit
TNHH Trách nhiệm hữu hạn
URL Uniform Resource Locator
XMPP Extensible Messaging and Presence Protocol
Trang 12DANH MỤC CÁC HÌNH
Hình 2.1: Mô hình tổng quan của điện toán đám mây 8
Hình 2.2: Mô hình dịch vụ điện toán đám mây 9
Hình 2.3: Cách thức hoạt động của điện toán đám mây 11
Hình 2.4: Các dạng mô hình triển khai điện toán đám mây 12
Hình 2.5: Mô hình Public Cloud 13
Hình 2.6: Mô Hình Private Cloud 14
Hình 2.7: Mô hình Hybrid cloud 16
Hình 2.8: Mô hình Community cloud 16
Hinh 3.1: Kiến trúc hoạt động của GAE 20
Hình 4.1: Màn hình thiết lập tuỳ chọn các lưu trữ của datastore 32
Hình 4.2: Màn hình test gửi mail tại local 64
Hình 4.3: Màn hình thiết lập cách ứng dụng chứng thực người dùng lúc khởi tạo Application ID 76
Hình 4.4: Màn hình thiết lập cách ứng dụng chứng thực người dùng tại Admin Console 76
Hình 5.1: Các modules trong hệ thống 79
Hình 5.2: Lược đồ usecase tổng quát 81
Hình 5.3: Lược đồ usecase module Hiển thị thông tin 82
Hình 5.4: Lược đồ usecase module Hiển thị sản phẩm 83
Hình 5.5: Lược đồ usecase module Đặt hàng 84
Hình 5.6: Lược đồ usecase module Quản lý thông tin 85
Hình 5.7: Lược đồ usecase module Quản lý sản phẩm 87
Hình 5.8: Sơ đồ lớp – hệ thống website Sơn Thắng Lợi 89
Hình A1: Màn hình đăng nhập hệ thống GAE 95
Hình A2: Màn hình chào mừng lần đầu tiên tạo ứng dụng GAE 96
Hình A3: Màn hình nhập số điện thoại để xác thực 97
Trang 13Hình A5: Màn hình tạo ứng dụng mới 98
Hình A6: Nhập Application Identifier và Application Title 99
Hình A7: Đồng ý các điều khoản của GAE 100
Hình A8: Màn hình tạo thành công ứng dụng 100
Hình A9: Màn hình quản lý ứng dụng của GAE 101
Hình A10: Màn hình liệt kê các ứng dụng trên GAE 102
Hình B1: Cửa sổ tạo project GAE mới 104
Hình B2: Khung thiết lập thông số cho Project GAE mới 105
Hình B3: cấu trúc project GAEJ 106
Hình B4: màn hình console khi chạy ứng dụng tại local 107
Hình B5: Màn hình chạy ứng dụng tại local (1) 108
Hình B6: Màn hình chạy ứng dụng tại local (2) 108
Hình B7: file cấu hình appengine-web.xml 109
Hình B8: Màn hình deploy ứng dụng lên Google 109
Hình B9: thiết lập Application ID cho ứng dụng 110
Hình B10: Màn hình deploy ứng dụng lên Google 111
Hình B11: Quá trình deploy ứng dụng lên Google 111
Hình B12: Màn hình console ghi log lại quá trình triển khai ứng dụng 112
Hình B13: Màn hình chạy ứng dụng trên hệ thống GAE (1) 113
Hình B14: Màn hình chạy ứng dụng trên hệ thống GAE (2) 113
Hình C1: Màn hình cấu hình Python cho eclipse 115
Hình C2: Cửa sổ khai báo file python.exe 115
Hình C3: Các thư viện được add thêm khi khai báo python.exe 116
Hình C4: Hoàn tất khai báo python.exe 117
Hình C5: Cửa sổ tạo project GAEP mới 118
Hình C6: Khung thiết lập cấu hình cho project GAEP mới 119
Hình C7: Cửa sổ khai báo đường dẫn GAE SDK 120
Hình C8: Cửa sổ cấu hình app-id và GAE project template 121
Trang 14Hình C9: Cấu trúc project GAEP 122
Hình C10: Màn hình khởi động GAE Launcher 123
Hình C11: Cửa sổ khai báo đường dẫn đến project và port 123
Hình C12: Cửa sổ Launcher khi đã add project 124
Hình C13: Cửa sổ Launcher khi đã run project 124
Hình C14: Màn hình run project tại local 125
Hình C15: Cửa sổ cấu hình Pydev Google App Run trong eclipse 126
Hình C16: Khai báo src và port cho Pydev Google App Run trong eclipse 127
Hình C17: Khai báo src và port cho Pydev Google App Run trong eclipse 127
Hình C18: Màn hình run project tại local 128
Hình C19: Cửa sổ add project vào GAE Launcher để deploy 128
Hình C20: Cửa sổ cấu hình thông số deploy project 129
Hình C21: Cửa sổ đăng nhập tài khỏang GAE để deploy project 129
Hình C22: Cửa sổ console thông báo deploy thành công 130
Hình C23: Màn hình quản lý ứng dụng trên GAE website 130
Hình C24: Màn hình chạy project đã được deploy trên GAE 131
Hình C25: Cửa sổ cấu hình GAE Python deploy trong eclipse 132
Hình C26: Thiết lập cấu hình cho GAE Python deploy trong eclipse 133
Hình C27: Đăng nhập tài khỏan GAE để deploy project 133
Hình C28: Cửa sổ console thông báo deploy project thành công 134
Hình E1: Lược đồ activity Xem thông tin công ty 149
Hình E2: Lược đồ activity Xem thông tin khuyến mãi 150
Hình E3: Lược đồ activity Xem bản đồ 152
Hình E4: Lược đồ activity Xem dòng sơn mới 153
Hình E5: Lược đồ activity Xem dòng sơn giảm giá 154
Hình E6: Lược đồ activity Tìm kiếm sản phẩm 156
Hình E7: Lược đồ activity Xem thông tin sơn 158
Hình E8: Lược đồ activity Tải file thông số kỹ thuật dòng sơn 160
Trang 15Hình E9: Lược đồ activity Xem thống kê bán hàng 161
Hình E10: Lược đồ activity Quản lý giỏ hàng 163
Hình E11: Lược đồ activity Thêm sơn vào giỏ hàng 164
Hình E12: Lược đồ activity Xem giỏ hàng 166
Hình E13: Lược đồ activity Cập nhật số lượng mặt hàng 168
Hình E14: Lược đồ activity Xoá mặt hàng 170
Hình E15: Lược đồ activity Đặt hàng 172
Hình E16: Lược đồ activity Liên hệ người bán 174
Hình E17: Lược đồ activity Chat với nhân viên hỗ trợ 176
Hình E18: Lược đồ activity Gửi câu hỏi 177
Hình E19: Lược đồ activity Xem câu hỏi 178
Hình E20: Lược đồ activity Gửi email liên hệ 179
Hình E21: Lược đồ activity Cập nhật thông tin chung 181
Hình E22: Lược đồ activity Quản lý danh sách sinh viên 184
Hình E23: Lược đồ activity Xem thông tin nhân viên 186
Hình E24: Lược đồ activity Thêm nhân viên 187
Hình E25: Lược đồ activity Cập nhật thông tin nhân viên 189
Hình E26: Lược đồ activity Xoá nhân viên 191
Hình E27: Lược đồ activity Quản lý tin khuyến mãi 192
Hình E28: Lược đồ activity Xem tin khuyến mãi 194
Hình E29: Lược đồ activity Thêm tin khuyến mãi 195
Hình E30: Lược đồ activity Cập nhật tin khuyến mãi 197
Hình E31: Lược đồ activity Xóa tin khuyến mãi 199
Hình E32: Lược đồ activity Quản lý hỏi và đáp 200
Hình E33: Lược đồ activity Xem danh sách câu hỏi 202
Hình E34: Lược đồ activity Xem câu hỏi 203
Hình E35: Lược đồ activity Trả lời câu hỏi 204
Hình E36: Lược đồ activity Xoá câu hỏi 206
Trang 16Hình E37: Lược đồ activity Cập nhật bản đồ 207
Hình E38: Lược đồ activity Quản lý thương hiệu sơn 209
Hình E39: Lược đồ activity Xem thông tin thương hiệu sơn 211
Hình E40: Lược đồ activity Ẩn hiện thương hiệu sơn 212
Hình E41: Lược đồ activity Ẩn hiện thương hiệu sơn 213
Hình E42: Lược đồ activity Thêm thương hiệu sơn 214
Hình E43: Lược đồ activity Cập nhật thương hiệu sơn 216
Hình E44: Lược đồ activity Xoá thương hiệu sơn 218
Hình E45: Lược đồ activity Quản lý loại sơn 219
Hình E46: Lược đồ activity Xem thông tin loại sơn 221
Hình E47: Lược đồ activity Ẩn hiện loại sơn 222
Hình E48: Lược đồ activity Sắp xếp loại sơn 223
Hình E49: Lược đồ activity Thêm loại sơn 224
Hình E50: Lược đồ activity Cập nhật loại sơn 226
Hình E51: Lược đồ activity Xoá loại sơn 228
Hình E52: Lược đồ activity Quản lý dòng sơn 229
Hình E53: Lược đồ activity Xem thông tin dòng sơn 231
Hình E54: Lược đồ activity Ẩn hiện dòng sơn 232
Hình E55: Lược đồ activity Sắp xếp dòng sơn 233
Hình E56: Lược đồ activity Thêm dòng sơn 234
Hình E57: Lược đồ activity Cập nhật dòng sơn 236
Hình E58: Lược đồ activity Xoá dòng sơn 238
Hình E59: Lược đồ activity Quản lý nhóm sơn 240
Hình E60: Lược đồ activity Xem thông tin nhóm sơn 242
Hình E61: Lược đồ activity Ẩn hiện nhóm sơn 243
Hình E62: Lược đồ activity Sắp xếp nhóm sơn 244
Hình E63: Lược đồ activity Thêm nhóm sơn 245
Hình E64: Lược đồ activity Cập nhật nhóm sơn 247
Trang 17Hình E65: Lược đồ activity Xoá nhóm sơn 249
Hình E66: Lược đồ activity Quản lý màu sơn 250
Hình E67: Lược đồ activity Xem thông tin màu sơn 252
Hình E68: Lược đồ activity Ẩn hiện màu sơn 253
Hình E69: Lược đồ activity Sắp xếp màu sơn 254
Hình E70: Lược đồ activity Thêm màu sơn 255
Hình E71: Lược đồ activity Sắp xếp màu sơn 257
Hình E72: Lược đồ activity Xoá màu sơn 259
Hình E73: Lược đồ activity Quản lý thống kê bán hàng 260
Hình E74: Lược đồ activity Cập nhật thông số bán hàng 262
Hình E75: Lược đồ activity Cập nhật thông số bán hàng 263
Hình E76: Lược đồ activity Chọn biểu đồ mặc định 264
Trang 18DANH MỤC CÁC BẢNG
Bảng 2.1: Hằng số hỗ trợ Capability cho Java 55 Bảng 2.2: Hằng số hỗ trợ Capability cho Java 56 Bảng 6: So sánh chung giữa các dịch vụ điện toán đám mây 92
Trang 19TÓM TẮT
“Nghiên cứu và triển khai ứng dụng web trên nền tảng App Engine của Google” Mục tiêu đề tài là nghiên cứu Google App Engine (GAE) API để có thể viết ứng dụng và triển khai lên Google, đòi hỏi phải có kiến thức về kiến trúc hoạt động của GAE Cho đến thời điểm này, GAE chỉ mới hỗ trợ hai máy ảo Java và Python, nên chúng em nghiên cứu GAE theo hai ngôn ngữ đó Đối với Java, chúng em tập trung vào các dịch vụ mà GAE cung cấp Riêng về Python, là ngôn ngữ mới, chúng em tiến hành tìm hiểu APIs của Python, sau đó đi sâu vào nghiên cứu sự hỗ trợ của GAE với Python Với những kiến thức tìm hiểu được, chúng em viết hai ứng dụng web, cụ thể là hệ thống bán sơn trực tuyến cho công ty TNHH Một thành viên Sơn Thắng Lợi, sử dụng cùng một giao diện, xử lý cùng các chức năng, để có cái nhìn cụ thể hơn về điểm mạnh, yếu của hai ngôn ngữ, cũng như sự khác nhau trong hỗ trợ của App Engine
Trang 20CHƯƠNG 1: MỞ ĐẦU
1.1 GIỚI THIỆU
Ngày nay công nghệ thông tin phát triển rất nhanh chóng, nắm giữ vai trò quan trọng trong việc thúc đấy sự tăng trưởng kinh tế, với sự ra đời của rất nhiều công nghệ mới, các dịch vụ CNTT đáp ứng nhu cầu của người dùng cũng như là các doanh nghiệp, Tuy nhiên, trong giai đoạn suy thoái kinh tế như hiện nay, thì việc ứng dụng một công nghệ hay một dịch vụ CNTT đáp ứng 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 doanh nghiệp Để 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 Để giải quyết vấn đề trên thì 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 Khái niệm “điện toán đám mây” đã ra đời trong hoàn cảnh đó và đang dần trở nên quen thuộc đối với các doanh nghiệp, đặc biệt là đối với các doanh nghiệp vừa và nhỏ
Điện toán đám mây (Cloud Computing), còn gọi là điện toán máy chủ ảo, 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 (Theo Wikipedia) Với một số lợi ích cơ bản như : sử dụng các tài nguyên tính toán động, giảm chi phí, giảm độ phức tạp trong cơ cấu doanh nghiệp, kiến trúc hướng dịch vụ… điện toán đám mây đang tạo cơ hội cho các doanh nghiệp hoạt động hiệu quả, thông minh và tiết kiệm chi phí hơn
Google là một trong những nhà cung cấp dịch vụ điện toán đám mây hiện nay với nền tảng App Engine cho phép người dùng xây dựng và triển khai ứng dụng web Java
Trang 211.2 ĐẶT VẤN ĐỀ
Hiện nay, việc ứng dụng công nghệ thông tin ở các doanh nghiệp Việt Nam đã trở nên phổ biến, và điện toán đám mây đã bắt đầu có những tín hiệu lạc quan Tuy nhiên hầu hết các doanh nghiệp đang sử dụng các dịch vụ điện toán đám mây hiện nay là các công ty công nghệ hàng đầu trong nước như: FPT, Công viên phần mềm Quang Trung,
… còn đại đa số các doanh nghiệp vừa và nhỏ vẫn còn e dè với điện toán đám mây, vẫn chưa hiểu rõ hết về mô hình này nên việc sử dụng các dịch vụ điện toán đám mây vẫn còn hạn chế Giải pháp cho vấn đề này là cung cấp cho người dùng một dịch vụ đám mây miễn phí như App Engine của Google để người dùng có thể trải nghiệm các tiện ích từ điện toán đám mây cũng như có thời gian nhiều hơn để tìm hiểu về những rủi ro
về tính an toàn dữ liệu, để từ đó họ có thể mạnh dạn hơn để sử dụng các dịch vụ của điện toán đám mây
1.3 LÝ DO CHỌN ĐỀ TÀI
1.3.1 LÝ DO CHỦ QUAN
GAE hỗ trợ hai ngôn ngữ lập trình Java và Python, là một thuận lợi để chúng em
có thể nghiên cứu sâu hơn về công nghệ này
Chúng em nhận thấy đây là một đề tài hay, bổ ích và vô cùng thực tế, có thể cung cấp cho chúng em nhiều kinh nghiệm và hiểu biết phục vụ cho công việc sau này
1.3.2 LÝ DO KHÁCH QUAN
Mặc dù không phải là công ty đi đầu trong lĩnh vực điện toán đám mây nhưng Google đã khẳng định được mình là một đối thủ nặng kí trong lĩnh vực này với App Engine Google sẽ đi theo hướng cung cấp các trải nghiệm điện toán đám mây đơn giản hơn so với các nhà cung cấp dịch vụ khác như Amazon, nhưng có mức kiểm soát chặt chẽ và đầy đủ hơn Để triển khai một hệ thống có khả năng đáp ứng các yêu cầu cao với Amazon, người dùng cần phải có trình độ và hiểu biết khá cao về hệ thống Đôi khi
Trang 22việc cấu hình và viết các ứng dụng theo dõi, tự động mở rộng (Automatic scalability) cho AWS (Amazon Web Services) lại mất nhiều thời gian hơn chính việc viết ứng dụng Với App Engine của Google người dùng sẽ không phải lo lắng về những vấn đề
Giá thành ưu đãi: Cở sở hạ tầng App Engine hoàn toàn miễn phí cho đến khi chúng ta đạt đến ngưỡng về mức sử dụng – dung lượng lưu trữ 1GB , khoảng 5 triệu lượt xem trong mỗi tháng Và việc cấu hình hệ thống sẽ không đòi hỏi người dùng phải
có hiểu biết nhiều về hệ thống vì GAE là một hệ thống tích hợp với đầy đủ công cụ cho một ứng dụng web hiện đại Điều này có thể giúp các doanh nghiệp vừa và nhỏ tiết kiệm được một khoảng chi phí không nhỏ
1.4 MỤC ĐÍCH ĐỀ TÀI
Nghiên cứu và triển khai ứng dụng web trên nền tảng App Engine của Google, tìm hiểu API của GAE , sự hỗ trợ của GAE đối với ngôn ngữ Python và Java, dựa vào những kiến thức đã tìm hiểu được sẽ triển khai một ứng dụng web cho doanh nghiệp
1.5 ĐỐI TƯỢNG NGHIÊN CỨU
- Kiến trúc hoạt động GAE
Trang 23- GAE APIs của Java và Python
- Triển khai hệ thống bán sơn trực tuyến cho Công ty TNHH Một thành viên Sơn Thắng Lợi
1.6 NỘI DUNG NGHIÊN CỨU
Nội dung nghiên cứu được chia thành hai giai đoạn :
- Giai đoạn 1: Khảo sát và nghiên cứu về cơ sở lý thuyết của Google App Engine Giai đoạn này bao gồm các công việc sau:
+ Tìm hiểu GAE là gì, tại sao GAE ra đời, nó ra đời dựa trên lý thuyết nào, và ý nghĩa của việc ra đời của GAE
+ Tìm hiểu về kiến trúc của Google App Engine, ưu nhược điểm của Google App Engine
+ Tìm hiểu sự hỗ trợ của GAE với Java
+ Tìm hiểu về ngôn ngữ lập trình và sự hỗ trợ của GAE với Python
- Giai đoạn 2: Nghiên cứu và triển khai hệ thống Online shoping trên GAE Giai đoạn này sẽ tập trung vào các vấn đề sau :
+ Tìm hiểu quy trình nghiệp vụ, thu thập các yêu cầu chức năng và phi chức năng
+ Đặc tả use case, thiết kế giao diện
+ Thiết kế và cài đặt class model
+ Triển khai hệ thống
+ Viết UserGuide
1.7 CÁC VẤN ĐỀ VÀ HƯỚNG NGHIÊN CỨU
Python là ngôn ngữ mới nên trong quá trình tìm hiểu khó tránh khỏi gặp phải khó khăn, vướng mắc
Trang 24
1.8 CẤU TRÚC LUẬN VĂN
Đề tài nghiên cứu gồm 5 chương:
CHƯƠNG 1: MỞ ĐẦU
- Trình bày sự cần thiết của đề tài, lý do chọn đề tài, mục tiêu nghiên cứu, đối tượng nghiên cứu, nội dung nghiên cứu và cấu trúc của khóa luận
CHƯƠNG 2: TỔNG QUAN VỀ ĐIỆN TOÁN ĐÁM MÂY
- Giới thiệu về điện toán đám mây
CHƯƠNG 3: GOOGLE APP ENGINE
- Trình bày những khái niệm về GAE, sự ra đời và quá trình phát triển
- Kiến trúc hoạt động của GAE
- Các thành phần của GAE
- Hạn chế của GAE
CHƯƠNG 4: CÁC DỊCH VỤ CỦA GAE
- Tìm hiểu một số dịch vụ mà GAE cung cấp
- Python API và Java API của các dịch vụ
CHƯƠNG 5: BÀI TÓAN ỨNG DỤNG - PHÁT TRIỂN HỆ THỐNG BÁN SƠN
TRỰC TUYẾN
- Giới thiệu hệ thống online shopping, các yêu cầu chức năng của hệ thống
- Phân tích use case, thiết kế giao diện
- Thiết kế các lược đồ lớp
- Triển khai hệ thống Online Shopping lên đám mây của Google
CHƯƠNG 6: KẾT QUẢ ĐẠT ĐƯỢC VÀ HƯỚNG PHÁT TRIỂN
- Các kết quả đạt được trong quá trình làm
- Một số kiến nghị cho hướng phát triển tiếp theo
Trang 25CHƯƠNG 2: TỔNG QUAN VỀ ĐIỆN TOÁN ĐÁM MÂY
2.1 KHÁI NIỆM ĐIỆN TOÁN ĐÁM MÂY
Điện toán đám mây (Cloud Computing, hay còn biết đến với tên gọi “Điện toán máy chủ ảo”) là mô hình máy tính dựa trên nền tảng phát triển của Internet
Điện toán đám mây là sự nâng cấp từ mô hình máy chủ mainframe sang mô hình client-server Cụ thể, người dùng sẽ không còn phải có các kiến thức về chuyên mục để điều khiển các công nghệ, máy móc và cơ sở hạ tầng, mà các chuyên gia trong “đám mây” của các hãng cung cấp sẽ giúp thực hiện điều đó
Thuật ngữ "đám mây" ở đây là lối nói ẩn dụ chỉ mạng Internet và như một liên tưởng về độ phức tạp của các cơ sở hạ tầng chứa trong nó Ở mô hình điện toán này, mọi khả năng liên quan đến công nghệ thông tin đều được cung cấp dưới dạng các
"dịch vụ", cho phép người sử dụng truy cập các dịch vụ công nghệ từ một nhà cung cấp nào đó "trong đám mây" mà không cần phải có các kiến thức, kinh nghiệm về công nghệ, cũng như không cần quan tâm đến các cơ sở hạ tầng phục vụ công nghệ đó
Tài nguyên, dữ liệu, phần mềm và các thông tin liên quan đều được chứa trên các server (chính là các “đám mây”)
Nói một cách đơn giản nhất “ứng dụng điện toán đám mây” chính là những ứng dụng trực tuyến trên Internet Trình duyệt là nơi ứng dụng hiện hữu và vận hành còn dữ liệu được lưu trữ và xử lý ở máy chủ của nhà cung cấp ứng dụng đó
Trang 26Hình 2.1: Mô hình tổng quan của điện toán đám mây
2.2 NHỮNG ĐẶC ĐIỂM NỔI BẬT
- Tự phục vụ theo nhu cầu (On-demand self-service): Mọi yêu cầu đều được thực
hiện thông qua việc gửi yêu cầu qua môi trường internet, không cần tương tác trực tiếp với người cung cấp dịch vụ
- Truy xuất diện rộng (Broad network access): Cloud Computing cung cấp mọi
thứ trên nền tảng internet ( mọi thứ đều nằm trên mạng, người dùng chỉ cần một thiết bị đầu cuối có khả năng truy cập mạng và sử dụng) Chính vì thế với thiết bị cầm tay, có khả năng di dộng cao… Vẫn có thể sử dụng dịch vụ Cloud Computing, điều đó dẫn đến tiềm năng mở rộng cao
- Dùng chung tài nguyên (Resource pooling): Tài nguyên nhà cung cấp dịch vụ
được sử dụng để cung cấp cho nhiều người Nhờ công nghệ ảo hóa, tài nguyên
sẽ được phân phát theo nhu cầu người dùng theo từng thời điểm xác định.Nhờ
đó mà nâng cao khả năng phục vụ cho nhiều người dùng trên một đơn vị tài nguyên hiện có
Trang 27- Khả năng co giãn (Rapid elasticity): Công nghệ Cloud Computing cho phép
khả năng tự động mở rộng hoặc thu nhỏ hệ thống tùy theo nhu cầu của người dùng Khi nhu cầu tăng cao, hệ thống sẽ tự mở rộng bằng cách thêm tài nguyên vào Khi nhu cầu giảm xuống, hệ thống sẽ tự giảm bớt tài nguyên Mọi thứ đều được thực hiện một cách linh động và mềm dẻo,hoàn toàn không thay đổi chất lượng dịch vụ với người dùng Nhờ đó mà nhà cung cấp giảm thiểu được tài nguyên dư thừa,đồng thời khách hàng cũng được hưởng lợi từ việc giảm thiểu chi phí không cần thiết
- Điều tiết dịch vụ (Measured service): Nhờ khả năng co giãn mà hệ thống có thể
tự động kiểm soát và tối ưu hóa việc sử dụng tài nguyên (dung lượng lưu trữ, đơn vị xử lý, băng thông…) Đảm bảo lợi ích cho cả người dùng và nhà cung cấp một cách minh bạch, rõ ràng
Trang 28- Dịch vụ hạ tầng IaaS (Infrastructure as a Service):
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 (là 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 tùy theo nhu cầu sử dụng 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ên 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
- Dịch vụ nền tảng PaaS (Platform as a Service):
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 đó, 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
Dịch vụ PaaS có thể được cung cấp dưới dạng các ứng dụng lớp giữa (middleware), các ứng dụng 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ưu trữ
ở lớp dưới như hệ điều hành… 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 (Independent software vendor)
Dịch vụ App Engine 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 các ngôn ngữ lập trình chạy trên máy ảo Java hoặc Python
Trang 29Dịch vụ SaaS cung cấp các ứng dụng hoàn chỉnh như một dịch vụ theo yêu cầu cho nhiều khách hàng với chỉ một phiên bản cài đặt Khách hàng không cần quan tâm đến việc vá lỗi, update, bảo trì các tài nguyên tính toán bên dưới, mà chỉ cần quan tâm đến việc lựa chọn ứng dụng phù hợp nhu cầu, và sử dụng đạt hiệu quả cao nhất
Dịch vụ SaaS nổi tiếng nhất phải kể đến Salesforce.com với các ứng dụng cho doanh nghiệp mà nổi bật nhất là CRM Các ứng dụng SaaS cho người dùng cuối phổ biến là các ứng dụng Online Office của Microsoft hay Google Docs của Google
2.4 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
Hình 2.3: Cách thức hoạt động của điện toán đám mây
Trang 30- 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.5 CÁC MÔ HÌNH TRIỂN KHAI ĐIỆN TOÁN ĐÁM MÂY
Từ “đám mây” (cloud) xuất phát từ hình ảnh minh họa mạng Internet đã được sử dụng rộng rãi trong các hình vẽ về hệ thống mạng máy tính của giới CNTT Một cách nôm na, điện toán đám mây là mô hình điện toán Internet Tuy nhiên, khi mô hình Cloud Computing dần định hình, các ưu điểm của nó đã được vận dụng để áp dụng trong các môi trường có quy mô và phạm vi riêng, hình thành các mô hình triển khai khác nhau
Trang 312.5.1 CÁC ĐÁM MÂY CÔNG CỘNG (PUBLIC CLOUD)
Hình 2.5: Mô hình Public Cloud
Đây là mô hình mà hạ tầng Cloud Computing được một tổ chức sỡ hữu và cung cấp dịch vụ rộng rãi cho tất cả các khách hàng thông qua hạ tầng mạng Internet hoặc các mạng công cộng diện rộng
Các dịch vụ Public Cloud hướng tới số lượng khách hàng lớn nên thường có năng 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 mô hình Public Cloud, trong đó có 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
Trang 32dụng công nghệ cao, chất lượng mà không phải đầu tư ban đầu, chi phí sử dụng thấp, linh hoạt
Nhà cung cấp đám mây chịu trách nhiệm về cài đặt, quản lý, cung cấp và bảo trì Khách hàng chỉ chịu phí cho các tài nguyên nào mà họ sử dụng, vì thế cái chưa sử dụng được loại bỏ
2.5.2 CÁC ĐÁM MÂY RIÊNG (PRIVATE CLOUD)
Hình 2.6: Mô Hình Private Cloud
Còn gọi là đám mây “doanh nghiệp”, 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 chính tổ chức đó Tổ chức sở hữu có trách
Trang 33lớ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 Cloud Computing 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
2.5.3 CÁC ĐÁM MÂY LAI (HYBRID CLOUD)
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
Doanh nghiệp sẽ chia chức năng nghiệp vụ và dữ liệu thành 2 loại : quan trọng và không quan trọng Các chức năng nghiệp vụ và dữ liệu không quan trọng sẽ được triển khai dưới dạng Public Cloud còn chức năng nghiệp vụ và dữ liệu quan trọng, cần bảo mật sẽ được triển khai dưới dạng Private Cloud.Tuy nhiên vấn đề đặt ra là làm sao ứng dụng đó có thể kết nối, trao đổi dữ liệu để hoạt động một cách hiệu quả mà vẫn đảm bảo được tính thống nhất giữa 2 mô hình triển khai
Trang 34Hình 2.7: Mô hình Hybrid cloud
2.5.4 CÁC ĐÁM MÂY CHUNG (COMMUNITY CLOUD)
Một đám mây cộng đồng có thể được thiết lập bởi một số tổ chức có nhu cầu tương tự và tìm cách chia sẻ cơ sở hạ tầng để nâng cao hiệu quả đầu tư và sử dụng Tùy chọn này là tốn kém hơn nhưng có thể đáp ứng về sự riêng tư, an ninh hoặc tuân thủ các chính sách tốt hơn
Hình 2.8: Mô hình Community cloud
2.6 ƯU VÀ NHƯỢC ĐIỂM CỦA ĐIỆN TOÁN ĐÁM MÂY
Trang 35- Không còn phụ thuộc vào thiết bị và vị trí địa lý, cho phép người dùng truy cập
và sử dụng hệ thống thông qua trình duyệt web ở bất kỳ đâu và trên bất kỳ thiết
bị nào mà họ sử dụng (chẳng hạn là PC hoặc là điện thoại di động…)
- Chia sẻ tài nguyên và chi phí trên một địa bàn rộng lớn, mang lại các lợi ích cho người dùng như:
o Tập trung cơ sở hạ tầng tại một vị trí giúp người dùng không tốn nhiều giá thành đầu tư về trang thiết bị
o Công suất xử lý nhanh hơn do tài nguyên được tập trung Ngoài ra, người dùng không cần phải đầu tư về nguồn nhân lực quản lý hệ thống
o Khả năng khai thác và hiệu suất được cải thiện hơn 10-20% so với hệ thống máy tính cá nhân thông thường
- Với độ tin cậy cao, không chỉ giành cho người dùng phổ thông, điện toán đám mây phù hợp với các yêu cầu cao và liên tục của các công ty kinh doanh và các nghiên cứu khoa học Tuy nhiên, một vài dịch vụ lớn của điện toán đám mây đôi khi rơi vào trạng thái quá tải, khiến hoạt động bị ngưng trệ Khi rơi vào trạng thái này, người dùng không có khả năng để xử lý các sự cố mà phải nhờ vào các chuyên gia từ đám mây tiến hành xử lý
- Khả năng mở rộng được, giúp cải thiện chất lượng các dịch vụ được cung cấp trên “đám mây”
- Khả năng bảo mật được cải thiện do sự tập trung về dữ liệu
- Các ứng dụng của điện toán đám mây dễ dàng để sửa chữa hơn bởi lẽ chúng không được cài đặt cố định trên một má tính nào Chúng cũng dễ dàng hỗ trợ
và cải thiện về tính năng
- Tài nguyên sử dụng của điện toán đám mây luôn được quản lý và thống kê trên từng khách hàng và ứng dụng, theo từng ngày, từng tuần, từng tháng Điều này đảm bảo cho việc định lượng giá cả của mỗi dịch vụ do điện toán đám mây cung cấp để người dùng có thể lựa chọn phù hợp
2.6.2 NHƯỢC ĐIỂM
Trang 36Tuy nhiên, mô hình điện toán này vẫn còn mắc phải một số nhược điểm sau:
- 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
- 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 Tuy nhiên, đây không thực sự là vấn đề của riêng “điện toán đám mây”, bởi lẽ tấn công đánh cắp dữ liệu là vấn đề gặp phải trên bất kỳ môi trường nào, ngay cả trên các máy tính cá nhân
Trang 37CHƯƠNG 3: GOOGLE APP ENGINE
3.1 KHÁI NIỆM VÀ SỰ RA ĐỜI
Google App Engine (GAE) là một nền tảng để phát triển và lưu trữ những ứ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 đưa vào sử dụng vào ngày 07/04/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 Để giúp chúng ta có thể làm quen với GAE, mỗi lập trình viên sẽ có một lượng tài nguyên miễn phí đủ để chạy những ứng dụng nhỏ với băng thông thấp Google dự toán rằng với nguồn tài nguyên miễn phí, một ứng dụng có thể đạt tới 5 triệu lượt truy cập trong một tháng
Trang 383.2 KIẾN TRÚC HOẠT ĐỘNG
Hinh 3.1: Kiến trúc hoạt động của GAE
Cấu 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 ta đến cơ sở hạ tầng vật lý, ngăn cản chúng ta từ việc mở các socket, chạy các tiến trình ngầm, hay các cách đi khác bằng cổng sau để giúp chương trình của ta có quyền trên môi trường này Hãy nhìn vào hình 3.1 Nên nhớ rằng, App Engine được thiết kế để giải quyết mối quan tâm của chúng ta về sự mở rộng và độ tin cậy Nó được xây dựng dựa trên khái niệm có thể mở rộng theo chiều ngang, nghĩa là thay vì ứng dụng của chúng ta sẽ được chạy trên một phần cứng mạnh mẽ, thì nó có thể chạy trên nhiều phần cứng yếu hơn
Trang 39Ở hình 3.1, chúng ta có thể thấy ứng dụng App Engine đang chạy như một thực thể cô lập trong môi trường gồm nhiều thành phần (multitenant environment) Chúng ta thấy, App Engine chia sẻ những nguồn tài nguyên giữa các ứng dụng nhưng cô lập về
dữ liệu và bảo mật giữa những thành phần với nhau Ứng dụng của chúng ta có thể sử dụng một số các dịch vụ của Google, như là URLFetch Bởi vì chúng ta không thể mở cổng (port) một cách trực tiếp trong ứng dụng của mình, nên chúng ta phải lệ thuộc vào dịch vụ này, ví dụ: yêu cầu Google mở cổng và thực thi ứng dụng của mình
Xem xét kỹ hơn một chút, giả sử App Engine là một tòa nhà có gắn hệ thống điều hòa không khí và nhiệt độ Chúng ta là một phần trong căn nhà đó (chính xác hơn là ứng dụng của chúng ta) Chúng ta không thể điều chỉnh nhiệt độ một cách trực tiếp bởi
nó sẽ ảnh hưởng đến những phần khác trong tòa nhà (các ứng dụng khác) Vì vậy, chúng ta phải gửi một yêu cầu đến người chủ của căn nhà này để nhờ họ thay đổi nhiệt
độ cho chúng ta Chính xác đó là các dịch vụ của GAE như URLFetch, Bigtable query, Memcache, mail, XMPP, và các dịch vụ khác Đó chính là bản chất những gì đang xảy
ra trong App Engine
Như vậy, trong GAE, tùy vào ứng dụng viết theo ngôn ngữ nào, nó sẽ được chạy trên môi trường Java hay Python tương ứng Song song đó, chúng ta sẽ được cung cấp
sử dụng miễn phí các dịch vụ của google như URL Fetch, Mail, Memcache, … và được lưu trữ trên cơ sở dữ liệu hướng đối tượng datastore Khi yêu cầu được gửi lên từ phía người dùng, GAE sẽ chuyển yêu cầu đó cho ứng dụng của chúng ta Tùy theo việc xử
lý chúng mà ta cấu hình và sử dụng các ứng dụng thích hợp của GAE
3.3 CÁC THÀNH PHẦN CHÍNH CỦA GAE VÀ CHỨC NĂNG CỦA MỖI
PHẦN
3.3.1 MÔI TRƯỜNG THỰC THI (THE RUNTIME ENVIRONMENT)
Một ứng dụng App Engine đáp ứng các yêu cầu web Một yêu cầu web sẽ bắt đầu khi có một người dùng hay điển hình là các trình duyệt web của người dùng gửi một yêu cầu truy cập vào ứng dụng thông qua giao thức HTTP Khi App Engine nhận được
Trang 40yêu cầu, nó sẽ xác định ứng dụng dựa vào tên miền, hoặc tên miền con của appspot.com (cung cấp miễn phí mỗi ứng dụng) hoặc là một tên miền riêng của chúng
ta đã được đăng kí và thiết lập với Google Apps App Engine lựa chọn một máy chủ từ nhiều máy chủ để xử lý các yêu cầu đó Sau đó, App Engine sẽ gửi các yêu cầu đã nhận được từ người dùng đến ứng dụng phù hợp để xử lý, sau khi đã xử lý xong các ứng dụng này sẽ gửi dữ liệu trả về cho App Engine, App Engine sẽ nhận dữ liệu phản hồi từ các ứng dụng và trả về cho người dùng thông qua trình duyệt web
Theo góc nhìn của ứng dụng, môi trường thực thi chỉ xuất hiện và tồn tại khi bắt đầu một yêu cầu và sẽ biến mất khi yêu cầu đó được đáp ứng xong App Engine cung cấp tối thiểu 2 cách thức lưu trữ dữ liệu tồn tại giữa các yêu cầu , nhưng các cơ chế này tồn tại bên ngoài môi trường thực thi Môi trường thực thi sẽ không duy trì trạng thái giữa các yêu cầu, hoặc ít nhất không mong muốn các trạng thái sẽ được duy trì giữa các yêu cầu App Engine có thể phân phát lưu lượng truy cập trong nhiều server, vì nó cần phải đáp ứng cho nhiều yêu cầu xử lý như nhau, bất kể có bao nhiêu lưu lượng truy cập
hỗ trợ người phát triển những dịch vụ cần thiết) Điều này cho phép App Engine xử lý một yêu cầu với một máy chủ mà nó mong muốn trong ước tính của nó để trả về phản hồi nhanh nhất Không có cách nào để đảm bảo rằng phần cứng trên cùng một máy chủ