DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT Tên Giao diện cổng vào chung CPU Central Processing Unit Đơn vị xử lý trung tâm CSS Cascading Style Sheets Các tập tin định kiểu theo tầng CSV Com
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC: TIẾN SỸ NGUYỄN NHƯ SƠN
Hà Nội, 2012
Trang 3MỤC LỤC
Trang
LỜI CẢM ƠN 1
TÓM TẮT NỘI DUNG LUẬN VĂN 2
LỜI CAM ĐOAN 3
MỤC LỤC 4
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT 6
DANH MỤC CÁC BẢNG 8
DANH MỤC HÌNH VẼ 9
MỞ ĐẦU 11
Chương 1 TỔNG QUAN VỀ ĐIỆN TOÁN ĐÁM MÂY 13
1.1 Khái niệm 13
1.2 Kiến trúc 16
1.3 Thành phần 18
1.4 Lợi ích 18
1.5 Ưu, nhược điểm 19
1.5.1 Ưu điểm 19
1.5.2 Nhược điểm 19
1.6 Các nhà cung cấp 20
1.7 Tổng kết chương 21
Chương 2 ĐIỆN TOÁN ĐÁM MÂY CỦA GOOGLE 23
2.1 Tổng quan 23
2.2 Ưu điểm, thế mạnh 23
2.3 Google Apps 24
2.4 Google App Engine 27
2.4.1 Khái niệm 27
2.4.2 Tính năng 28
2.4.3 Dịch vụ App Engine 28
2.4.4 Giới hạn sử dụng 29
2.4.5 Ứng dụng trên Google App Engine 29
2.5 Google Maps 40
2.5.1 Tổng quan 40
2.5.2 Cài đặt 41
2.5.3 Khả năng mở rộng và tùy biến 41
Trang 42.5.4 Google Maps API 41
2.5.5 Google Maps cho điện thoại di động 45
2.5.6 Các ứng dụng Google Maps 45
2.6 Tổng kết chương 48
Chương 3 XÂY DỰNG HỆ THỐNG QUẢN LÝ DỊCH VỤ 49
3.1 Mô tả bài toán 49
3.1.1 Giới thiệu 49
3.1.2 Giải pháp 49
3.2 Tổng quan về hệ thống quản lý dịch vụ 49
3.3 Yêu cầu chức năng hệ thống 51
3.4 Phân tích thiết kế hệ thống 52
3.4.1 Mô hình tổng thể hệ thống 52
3.4.2 Các chức năng chi tiết của hệ thống 52
3.4.3 Yêu cầu về môi trường phát triển 53
3.4.4 Các ca sử dụng của hệ thống 53
3.4.5 Thiết kế hệ thống 55
3.5 Phát triển mã nguồn ứng dụng 69
3.6 Cài đặt lên Google Apps, sử dụng Android Simulator 71
3.7 Kết quả 73
3.8 Tổng kết chương 73
KẾT LUẬN 75
TÀI LIỆU THAM KHẢO 76
Trang 5DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT Tên
Giao diện cổng vào chung
CPU Central Processing
Unit
Đơn vị xử lý trung tâm
CSS Cascading Style Sheets Các tập tin định kiểu theo tầng
CSV Comma-separated
Value
Giá trị phân cách bởi dấu phảy
DOM Document Object
Model
Mô hình đối tƣợng tài liệu
FTP File Transfer Protocol Giao thức truyền file
GAE Google App Engine Công nghệ nền tảng điện toán đám mây của Google GIS Geographic
JPA Java Persistence API Giao diện lập trình ứng dụng Java thống nhất
JVM Java Virtual Machine Máy ảo Java
KML Keyhole Markup Là định dạng file dùng để hiển thị dữ liệu địa lý
Trang 6Language trong Google Earth, Google Maps, Google Maps trên
điện thoại di động NIST National Institute of
Standards and
Technology
Viện Tiêu chuẩn và Công nghệ quốc gia Mỹ
OS Operating System Hệ điều hành
PHP Hypertext Preprocessor Tiền xử lý siêu văn bản, là một ngôn ngữ lập trình
kịch bản PaaS Platform as a Service Nền tảng nhƣ một dịch vụ
POP3 Post Office Protocol 3 Là một giao thức tầng ứng dụng dùng để lấy thƣ điện
tử từ máy chủ thƣ điện tử thông qua kết nối TCP/IP SaaS Software as a Service Phần mềm nhƣ một dịch vụ
Ngôn ngữ truy vấn có cấu trúc
URL Uniform Resource
Locator
Địa chỉ truy cập tài nguyên Internet
WAR Web Application
ARchieve
Là một file JAR đóng gói tập các file JavaServer Page, Java Servlet, Java class, XML, các thƣ viện và các trang web tĩnh để cùng tạo nên một ứng dụng web
XML eXtensible Markup
Language
Ngôn ngữ đánh dấu mở rộng
Trang 7DANH MỤC CÁC BẢNG
Bảng 2.1 Các thuộc tính trong App Engine[3] 32Bảng 3.1 Các chức năng chi tiết của hệ thống 52
Trang 8DANH MỤC HÌNH VẼ
Hình 1.1 Kiến trúc đám mây 16
Hình 1.2 Thành phần đám mây 18
Hình 1.3 Nền tảng điện toán đám mây của Microsoft [12] 21
Hình 2.1 Trang chủ quản trị trong Google Apps 27
Hình 2.2 Các danh mục quản trị trong Google Apps 27
Hình 2.3 Google Maps 40
Hình 3.1 Nhóm người ảnh hưởng tới hệ thống 50
Hình 3.2 Các ca sử dụng của Quản trị hệ thống 50
Hình 3.3 Các ca sử dụng của User 51
Hình 3.4 Mô hình tổng thể hệ thống 52
Hình 3.5 Các ca sử dụng của người dùng cuối 54
Hình 3.6 Các ca sử dụng của quản trị hệ thống 54
Hình 3.7 Ca sử dụng quản lý người dùng 54
Hình 3.8 Ca sử dụng quản lý nhóm quyền 54
Hình 3.9 Ca sử dụng quản lý Dịch vụ 55
Hình 3.10 Ca sử dụng xem bản đồ 55
Hình 3.11 Sơ đồ hoạt động cho chức năng đăng nhập 56
Hình 3.12 Sơ đồ hoạt động cho chức năng xem bản đồ 56
Hình 3.13 Sơ đồ hoạt động cho chức năng tìm kiếm đường đi 57
Hình 3.14 Sơ đồ hoạt động cho chức năng quản lý dịch vụ 57
Hình 3.15 Biểu đồ tuần tự chức năng thêm người dùng 58
Hình 3.16 Biểu đồ tuần tự chức năng sửa người dùng 58
Hình 3.17 Biểu đồ tuần tự chức năng xóa người dùng 59
Hình 3.18 Biểu đồ tuần tự chức năng thêm nhóm quyền 59
Hình 3.19 Biểu đồ tuần tự chức năng sửa nhóm quyền 60
Hình 3.20 Biểu đồ tuần tự chức năng xóa nhóm quyền 61
Hình 3.21 Biểu đồ tuần tự chức năng thêm Dịch vụ 61
Hình 3.22 Biểu đồ tuần tự chức năng sửa Dịch vụ 62
Hình 3.23 Biểu đồ tuần tự chức năng xóa Dịch vụ 62
Hình 3.24 Biểu đồ tuần tự chức năng hiển thị bản đồ 63
Hình 3.25Biểu đồ tuần tự chức năng tìm đường đi 63
Hình 3.26 Biểu đồ hoạt động chức năng tìm địa điểm 64
Hình 3.27 Biểu đồ hoạt động chức năng tìm kiếm điểm cung cấp dịch vụ 64
Hình 3.28 Màn hình tìm kiếm địa điểm 65
Hình 3.29 Màn hình tìm đường đi 65
Hình 3.30 Màn hình tìm kiếm điểm cung cấp dịch vụ 65
Hình 3.31 Màn hình đăng nhập 65
Hình 3.32 Màn hình quản lý người dùng 66
Trang 9Hình 3.33 Màn hình cập nhật người dùng 66
Hình 3.34 Màn hình quản lý nhóm quyền 67
Hình 3.35 Màn hình cập nhật nhóm quyền 67
Hình 3.36 Màn hình quản lý Dịch vụ 67
Hình 3.37 Màn hình cập nhật Dịch vụ 68
Hình 3.38 Lớp User 68
Hình 3.39 Lớp Role 68
Hình 3.40 Lớp Service 69
Hình 3.41 Màn hình chính của chương trình 71
Hình 3.42 Màn hình tìm kiếm một địa điểm 71
Hình 3.43 Màn hình hiển thị các đối tượng trong hệ thống 72
Hình 3.44 Kết quả hiển thị các đối tượng 72
Hình 3.45 Xem thông tin chi tiết địa điểm tìm kiếm được 72
Hình 3.46 Màn hình tìm kiếm đường đi giữa hai địa điểm 72
Hình 3.47 Màn hình các chức năng của quản trị hệ thống 73
Hình 3.48 Màn hình quản lý dịch vụ 73
Trang 10MỞ ĐẦU
Trong xã hội hiện đại, công nghệ đóng một vai trò vô cùng quan trọng Công nghệ ngày nay đã và đang trở thành hàng hoá được chuyển giao trên thị trường và được bảo hộ bằng pháp luật Những tiến bộ như vũ bão của khoa học – công nghệ trong những thập kỷ qua đặc biệt là trong các lĩnh vực công nghệ thông tin, công nghệ sinh học, công nghệ Nano, tự động hoá đã làm đảo lộn tư duy của nhiều quốc gia và cá nhân mỗi người
Trong tất cả các lĩnh vực đó, lĩnh vực công nghệ thông tin là lĩnh vực được chú trọng phát triển nhiều nhất Ngày nay, ngoài các ứng dụng để bàn, một xu hướng mới đáng chú ý là phát triển các ứng dụng web và các ứng dụng cho thiết bị di động Tất cả các ứng dụng này đều cần được lưu ở một nơi nào đó để người dùng có thể truy cập được
Các công ty đều có các trang web riêng của họ, lượng khách hàng truy cập các trang web này ngày càng tăng lên Điều này khá tốt, nhưng đến một lúc nào đó, việc đáp ứng nhu cầu của người dùng sẽ gặp khó khăn, truy cập trang web sẽ rất chậm Thường các trang web này được đặt trên một máy chủ nào đó, các công ty phải mua vùng lưu trữ, cài đặt web của họ trên máy chủ và việc này tiêu tốn rất nhiều thời gian
và tiền bạc
Điện toán đám mây (điện toán máy chủ ảo) là một xu hướng mới Trong mô hình điện toán đám mây, mọi tiện ích 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ó 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ệ đó Điểm chủ yếu của điện toán đám mây là dựa vào Internet để đáp ứng nhu cầu điện toán của người dùng
Các phần mềm nguồn mở góp phần quan trọng vào phát triển điện toán đám mây Việc xây dựng và triển khai các ứng dụng phần mềm nguồn mở hiện đang được coi là một trong những giải pháp tối ưu giúp giảm thiểu tối đa kinh phí bản quyền Hiện nay chính phủ Việt Nam cũng đang có chính sách khuyến khích sử dụng và phát triển phần mềm mã nguồn mở
Với việc nghiên cứu điện toán đám mây, luận văn này tập trung nghiên cứu những khái niệm cơ bản về điện toán đám mây nói chung, công nghệ điện toán đám mây của Google nói riêng và ứng dụng vào phân tích, xây dựng thử nghiệm một hệ thống quản lý dịch vụ cho phép quản lý, tìm kiếm các điểm cung cấp dịch vụ Hệ thống này sử dụng được trên trình duyệt của các điện thoại di động, máy tính hoặc bất
kỳ thiết bị nào miễn là có kết nối Internet
Trang 11Hệ thống được phát triển bằng ngôn ngữ lập trình Java, sử dụng công cụ Google Map API, Web server sử dụng dịch vụ Google App Engine và Database server sử dụng Google Data Store
Ngoài phần mở đầu, kết luận và tài liệu tham khảo, luận văn được trình bày trong
3 chương, các nội dung cơ bản của luận văn được trình bày theo cấu trúc như sau:
Chương 1: Tổng quan về điện toán đám mây, trình bày một số khái niệm cơ
bản, kiến trúc, thành phần, các ưu, nhược điểm của Điện toán đám mây
Chương 2: Điện toán đám mây của Google, trình bày giải pháp Điện toán đám
mây của Google, bao gồm một số sản phẩm cơ bản như Google Apps, Google Maps, Google Earths, tìm hiểu về Google App Engine, trên cơ sở đó ứng dụng vào xây dựng
hệ thống trình bày ở Chương 3
Chương 3: Xây dựng hệ thống quản lý dịch vụ, trên cơ sở các kiến thức đã tìm
hiểu được ở Chương 2, Chương 3 tập trung phân tích, thiết kế và mô tả ứng dụng của
việc sử dụng Google App Engine, Google Maps vào hệ thống quản lý các dịch vụ
Trang 12Trong điện toán đám mây, cơ sở hạ tầng trong suốt với người dùng, người dùng
sẽ dùng các tài nguyên mà điện toán đám mây cung cấp theo nhu cầu riêng của họ vào bất kỳ lúc nào, cho dù họ ở bất cứ nơi đâu, miễn là họ có kết nối Internet [15]
Tháng 10, 2009, trong hội thảo có chủ đề “Tính hiệu quả và bảo mật khi sử dụng
mô hình Điện toán đám mây” của Viện Tiêu chuẩn và Công nghệ quốc gia (NIST), phòng thí nghiệm Công nghệ Thông tin, Peter Mell và Tim Grance định nghĩa điện toán đám mây như sau:
“Điện toán đám mây là một mô hình cho phép truy cập mạng theo nhu cầu tới một nguồn tài nguyên máy tính dùng chung tin cậy và có thể cấu hình được, các nguồn tài nguyên này có thể được cung cấp nhanh chóng và được đưa ra để công sức quản lý khách hàng nhỏ nhất hoặc ảnh hưởng của các nhà cung cấp dịch vụ nhỏ nhất” [14]
Mô hình điện toán đám mây này bao gồm năm đặc trưng, ba mô hình dịch vụ và bốn mô hình triển khai [14]
Năm đặc trưng bao gồm: Tự phục vụ theo nhu cầu; Truy cập mạng mọi lúc mọi nơi; Kho tài nguyên lớn; Độc lập vị trí; Mềm dẻo; Dịch vụ đều đặn
Trang 13nghiệp, được xây dựng và quản lý bởi tổ chức công nghệ thông tin của chính doanh nghiệp hoặc bởi một nhà cung cấp đám mây Công ty có thể cài đặt, cấu hình, xử lý hạ tầng để hỗ trợ đám mây riêng trong trung tâm dữ liệu của doanh nghiệp
- Đám mây chung – được bán cho thị trường, đám mây này có cơ sở hạ tầng lớn Đám mây chung được chạy bởi các bên thứ ba, các ứng dụng từ các khách hàng khác nhau cùng được đặt trên máy chủ đám mây, hệ thống lưu trữ, mạng Một ưu điểm của đám mây chung là chúng có thể lớn hơn nhiều so với đám mây riêng của công ty, cung cấp khả năng tăng hoặc giảm theo nhu cầu, chuyển rủi ro về mặt hạ tầng từ cho doanh nghiệp đến cho nhà cung cấp đám mây
- Đám mây lai – kết hợp cả mô hình đám mây chung và đám mây riêng
Năm 2009, Open Cloud Manifest được phát triển bởi một nhóm các tổ chức gồm IBM, Intel, Google để đề xuất ra các hành động sử dụng các dịch vụ điện toán đám mây Tại “Open Cloud Manifest”, điện toán đám mây được định nghĩa với một tập các đặc trưng và các giá trị Các đặc trưng bao gồm [7]:
- Khả năng co giãn và cung cấp sức mạnh tính toán động tiết kiệm chi phí
- Khả năng người tiêu dùng (người dùng cuối, tổ chức, công ty Công nghệ thông tin) tạo ra sức mạnh tính toán mà không cần phải quản lý công nghệ phức tạp bên dưới
- Kiến trúc đám mây riêng (đặt trong tường lửa của một tổ chức) hoặc chung (đặt trên mạng)
Các giá trị được chỉ ra bao gồm:
- Co giãn theo nhu cầu: tất cả các tổ chức phải đối phó với các thay đổi trong môi trường của họ Khả năng co giãn của điện toán đám mây là một lợi ích lớn Nếu một tổ chức mà tài nguyên tính toán của họ cần nhiều hoặc ít thời gian hơn bình thường, thì công nghệ đám mây (cả chung và riêng) đều có thể giải quyết được
- Hợp lý hóa trung tâm dữ liệu: một tổ chức ở bất kỳ quy mô nào đều đầu tư đáng
kể vào trung tâm dữ liệu của họ, bao gồm mua sắm và bảo trì phần cứng, phần mềm, cung cấp các tiện nghi tại nơi đặt phần cứng, thuê người duy trì trung tâm dữ liệu luôn hoạt động Một tổ chức có thể hợp lý hóa trung tâm dữ liệu của họ bằng việc sử dụng các ưu điểm của công nghệ đám mây bên trong tổ chức hoặc chuyển gánh nặng này ra công cộng
- Cải tiến quy trình nghiệp vụ: đám mây cung cấp một cơ sở hạ tầng để cải tiến quy trình nghiệp vụ Tổ chức và các nhà cung cấp cũng như các đối tác của họ có thể chia sẻ dữ liệu và ứng dụng trên đám mây, cho phép mọi người chú trọng đến quy trình nghiệp vụ thay vì chú trọng vào cơ sở hạ tầng
Trang 14- Cực tiểu hóa chi phí khởi động: điện toán đám mây giảm chi phí khởi động ban đầu cho các công ty mới thành lập, các tổ chức gặp rủi ro trong kinh doanh hay thậm chí cả các nhóm công nghệ cao trong các tổ chức lớn hơn Tổ chức mới bắt đầu bằng một cơ sở hạ tầng đã có, vì vậy thời gian và các tài nguyên khác dành cho xây dựng trung tâm dữ liệu được các nhà cung cấp đám mây đảm nhiệm, bất kể là đám mây chung hay riêng
Trong bài báo ZDNet có tên “Năm đặc trưng của Điện toán đám mây”, Dave Malcolm Surgient đề xuất các đặc trưng của Điện toán đám mây gồm [8]:
- Cơ sở hạ tầng tính toán động: một cơ sở hạ tầng vật lý chuẩn hóa, linh động, ảo
và bảo mật, dư thừa để đảm bảo tính sẵn sàng cao
- Phương pháp công nghệ thông tin hướng dịch vụ: ngược lại với mô hình hướng máy chủ, thể hiện của một ứng dụng hoặc dịch vụ luôn sẵn sàng, dễ dàng truy cập và chuyên dụng
- Mô hình tự phục vụ: khả năng tải lên, xây dựng, triển khai, lập lịch, quản lý, báo cáo được cung cấp theo nhu cầu
- Nền tảng cực tiểu hoặc tự quản lý: tự quản lý bằng việc thuê phần mềm tự động:
o Phát triển các dịch vụ và khôi phục các tài nguyên dùng lại mức cao
o Cơ chế lập lịch và duy trì dung lượng tài nguyên
o Khả năng cấu hình, quản lý và báo cáo để đảm bảo rằng các tài nguyên được định vị và phân phối tới nhiều nhóm người dùng
o Công cụ để điều khiển truy cập tới các tài nguyên, các chính sách, để xem cách các tài nguyên được sử dụng hoặc các thao tác được thực hiện
o Trả phí theo mức độ tiêu dùng
Có một số nhầm lẫn về điện toán đám mây như [13]:
Mặc dù điện toán đám mây có thể kết hợp với một số mô hình điện toán như điện toán lưới, điện toán theo nhu cầu… nhưng điện toán đám mây không đồng nghĩa với các mô hình điện toán đó Điện toán đám mây không phải luôn thuê các dịch vụ đo lường đắt đỏ của điện toán theo nhu cầu, và điện toán đám mây có thể sử dụng các nền tảng phân tán, nền tảng ảo thay vì một nguồn tài nguyên máy tính tập trung
Câu hỏi đặt ra là điện toán đám mây có tương đương với điện toán lưới không? Điện toán lưới thuê các máy ảo phân tán, nhưng không giống như điện toán đám mây, những máy ảo này thường thực hiện một tác vụ đơn và rất lớn
Trang 15Một số điện toán khách/chủ được xem như điện toán đám mây, đám mây xuất hiện trong vai trò máy chủ Tuy nhiên, mô hình khách - chủ truyền thống, máy chủ là một máy cụ thể đặt tại một địa điểm xác định Việc tính toán chạy trên đám mây có thể dựa vào các máy tính ở bất kỳ đâu, được phân chia giữa các máy tính và có thể sử dụng các nền tảng ảo mà người dùng không biết Người dùng chỉ biết rằng họ đang truy cập các tài nguyên và sử dụng các bộ xử lý và lưu trữ ở một nơi nào đó để nhận được kết quả
Điện toán đám mây không phải là phần mềm như là dịch vụ nếu phần mềm đó có thể được mua hoặc quản lý bởi một tổ chức, hoặc phần mềm chạy trên phần cứng hoặc một máy nào đó của người dùng
Điện toán đám mây không phải ảo hóa, mặc dù có thể dùng như một thành phần
để thực thi điện toán đám mây Hệ điều hành ảo hóa có thể được đặt tại các máy tính của một tổ chức hoặc trong một trung tâm dữ liệu không phải là điện toán đám mây Điện toán đám mây không giống như kiến trúc hướng dịch vụ (SOA) hỗ trợ việc trao đổi dữ liệu giữa các ứng dụng trong các quy trình nghiệp vụ
1.2 Kiến trúc
Kiến trúc đám mây gồm: nền tảng đám mây (Cloud Platform), dịch vụ đám mây (Cloud Service), hạ tầng đám mây (Cloud Infrastructure), lưu trữ đám mây (Cloud Storage)
Hình 0.1 Kiến trúc đám mây
Dịch vụ đám mây (Cloud Service): giải pháp dịch vụ đám mây phân phối các phần mềm ứng dụng qua Web Một nhà cung cấp dịch vụ đám mây triển khai phần mềm tới người dùng theo nhu cầu Nhà cung cấp có thể đặt ứng dụng trên chính hạ tầng máy chủ của họ hoặc sử dụng phần cứng của nhà cung cấp khác
Ứng dụng có thể được đăng ký bản quyền trực tiếp bởi một tổ chức, một người
Trang 16dùng hoặc một nhóm người dùng, hoặc thậm chí qua một bên thứ ba quản lý rất nhiều bản quyền giữa các tổ chức người dùng Người dùng sau đó sẽ truy cập ứng dụng qua một trình duyệt web Một dịch vụ đám mây hoàn chỉnh sẽ cung cấp ứng dụng đầy đủ tính năng theo nhu cầu, phục vụ nhiều tổ chức hoặc các cá nhân
NIST định nghĩa dịch vụ đám mây là khả năng được cung cấp cho khách hàng
để sử dụng các ứng dụng của nhà cung cấp chạy trên hạ tầng đám mây Các ứng dụng
có thể truy cập được từ rất nhiều các thiết bị phía máy khách qua một giao diện (ví dụ như một trình duyệt web) Khách hàng không cần quản lý hoặc điều khiển hạ tầng đám mây phía dưới (gồm mạng, máy chủ, hệ điều hành, lưu trữ dữ liệu, khả năng của các ứng dụng)
Nền tảng đám mây (Cloud Platform) tương tự như dịch vụ đám mây (Cloud Service) nhưng dịch vụ ở đây là toàn bộ môi trường phát triển ứng dụng mà không phải chỉ là sử dụng ứng dụng Giải pháp nền tảng đám mây khác biệt so với dịch vụ đám mây ở chỗ chúng cung cấp một nền tảng phát triển ảo đặt trên đám mây, truy cập được qua trình duyệt web
Nền tảng đám mây cung cấp cả các nền tảng tính toán và cả các giải pháp Lập trình viên phần mềm có thể xây dựng các ứng dụng web mà không cần phải cài đặt các công cụ phát triển phần mềm trên máy tính của chính họ, việc triển khai cũng được thực hiện dễ dàng trên đám mây Nền tảng đám mây đóng gói một lớp phần mềm và cung cấp nó như là một dịch vụ để có thể xây dựng các dịch vụ mức cao hơn
NIST định nghĩa nền tảng đám mây là khả năng được cung cấp cho khách hàng
để triển khai trên hạ tầng đám mây các ứng dụng do khách hàng tự xây dựng hoặc các ứng dụng được đặt trước sử dụng ngôn ngữ lập trình và các công cụ mà nhà cung cấp
hỗ trợ Khách hàng không phải quản lý hoặc điều khiển hạ tầng đám mây phía dưới bao gồm mạng, máy chủ, hệ điều hành, lưu trữ dữ liệu, nhưng phải điều khiển các ứng dụng đã triển khai và cấu hình môi trường đặt ứng dụng
Hạ tầng đám mây (Cloud Infrastructure) là mô hình đám mây thể hiện rõ ràng
sự khác biệt giữa hạ tầng công nghệ thông tin truyền thống và hạ tầng đám mây Hạ tầng đám mây mô tả sự phân phối dịch vụ hạ tầng tính toán
NIST định nghĩa hạ tầng đám mây là khả năng được cung cấp cho khách hàng
để cung cấp các xử lý, lưu trữ, mạng, các tài nguyên tính toán khác mà tại đó khách hàng có thể triển khai và chạy phần mềm (bao gồm hệ điều hành và ứng dụng) Khách hàng không quản lý và điều khiển hạ tầng đám mây phía dưới nhưng phải điều khiển
hệ điều hành, lưu trữ, các ứng dụng đã triển khai và điều khiển các thành phần trong mạng
Trang 171.3 Thành phần
Thành phần của điện toán đám mây bao gồm: Ứng dụng (Application), Máy khách (Clients), Cơ sở hạ tầng (Infrastruture), Nền tảng (Platform), Dịch vụ (Services), Lưu trữ (Storage)
Nền tảng (Platform): là các dịch vụ nền tảng cho việc đưa ra các giải pháp hoặc cho triển khai các dịch vụ đám mây
Lưu trữ dữ liệu (Storage): là các dịch vụ lưu trữ dữ liệu, dịch vụ cơ sở dữ liệu
Cơ sở hạ tầng (Infrastructure): là các dịch vụ cơ sở hạ tầng, phân phối các cơ sở
hạ tầng máy tính trong đám mây
1.4 Lợi ích
Điện toán đám mây ra đời cho phép các ứng dụng bớt chịu lệ thuộc vào cơ sở
hạ tầng Người dùng chỉ phải trả cho những gì họ sử dụng và trả cho nhu cầu nên họ sẽ tiết kiệm được vốn và chi phí đầu tư Không những thế, người dùng còn sử dụng các dịch vụ trên đám mây mà không cần hiểu rõ cơ sở hạ tầng của các dịch vụ đó
Dữ liệu được đặt trên đám mây thay vì được lưu trên máy tính cá nhân, việc xử
lý và chỉnh sửa dữ liệu được hoàn toàn thực hiện trên đám mây Sự độc lập giữa thiết
bị và vị trí giúp người dùng có thể truy cập hệ thống bằng trình duyệt web, người dùng
Trang 18có thể truy cập vào đám mây bất kỳ khi nào, từ bất cứ nơi đâu, qua bất kỳ thiết bị gì miễn là có kết nối Internet Chi phí phải trả cho quá trình sử dụng được tính căn cứ vào những gì mà khách hàng sử dụng hoặc tính theo nhu cầu sử dụng của họ
Điện toán đám mây cung cấp khả năng cung cấp sẵn các tài nguyên cơ sở hạ tầng công nghệ một cách nhanh chóng và ít tốn kém
Tuy nhiên, một trở ngại lớn của việc sử dụng điện toán đám mây là vấn đề bảo mật vì người dùng không chắc rằng dữ liệu của họ được bảo mật trên đám mây Ngoài
ra người dùng còn gặp vấn đề về độ trễ của dữ liệu, khả năng không kiểm soát dữ liệu
1.5 Ưu, nhược điểm
1.5.1 Ưu điểm
Điện toán đám mây giúp giảm chi phí máy tính Để chạy các ứng dụng web của điện toán đám mây, các máy tính cá nhân không cần phải có hiệu suất cao và giá thành cao, cũng không cần phải có khả năng xử lý mạnh hoặc dung lượng lớn
Điện toán đám mây giúp cải thiện hiệu suất của các máy tính cá nhân vì các máy tính này không cần phải cài nhiều chương trình và chỉ có một số ít chương trình
và tiến trình được nạp vào trong bộ nhớ
Điện toán đám mây ra đời làm giảm giá thành phần mềm Thay vì phải mua các phần mềm đắt đỏ, hầu hết mọi thứ ta đạt được đều miễn phí Với các ứng dụng web, việc cập nhật diễn ra tự động, ứng dụng mà người dùng truy cập gần nhất chính là ứng dụng được cập nhật mới nhất
Điện toán đám mây giúp cải thiện định dạng của văn bản Dung lượng lưu trữ trên điện toán đám mây cũng vô hạn, lên tới hàng trăm Pbytes, giúp lưu trữ được mọi
dữ liệu mà người dùng cần lưu
Điện toán đám mây cũng làm tăng độ tin cậy của dữ liệu, nếu một máy tính trên đám mây bị hỏng, việc lưu trữ dữ liệu không hề bị ảnh hưởng, tất cả các dữ liệu vẫn ở trên đám mây và truy cập được
Điện toán đám mây cho phép truy cập dữ liệu toàn cầu, chỉ cần một máy tính nối mạng Internet là có thể truy cập được dữ liệu cho dù người dùng ở bất kỳ đâu
Một ưu điểm nữa của điện toán đám mây là độc lập thiết bị Người dùng có thể truy cập đám mây từ bất kỳ máy tính nào hoặc từ bất kỳ thiết bị nào, miễn là thiết bị
đó được kết nối với mạng Internet
1.5.2 Nhược điểm
Để truy cập được vào đám mây và sử dụng các tiện ích mà đám mây cung cấp đòi hỏi thiết bị phải được kết nối vào mạng Internet Nghĩa là nếu không được kết nối
Trang 19với mạng, người dùng sẽ không thể truy cập được bất cứ thứ gì kể cả tài liệu của chính
họ
Kể cả khi đã được kết nối với mạng rồi, hiệu quả làm việc của người dùng vẫn
có thể không cao nếu họ có kết nối mạng tốc độ chậm Điện toán đám mây chỉ dành cho các mạng tốc độ nhanh, băng thông lớn
Trên đám mây, tính năng của ứng dụng có thể bị giới hạn Ngày nay nhiều ứng dụng dựa trên nền web không có đầy đủ tính năng như các ứng dụng desktop Ví dụ khi dùng Google Present, người dùng không dùng được nhiều tính năng như dùng Microsoft PowerPoint Các tính năng cơ bản có thể tương tự nhau nhưng điện toán đám mây thiếu rất nhiều tính năng nâng cao của PowerPoint
Dữ liệu trên đám mây có thể không bảo mật Với điện toán đám mây, tất cả dữ liệu của người dùng được lưu trên đám mây Các công ty điện toán đám mây nói rằng
dữ liệu đựơc bảo mật Tuy nhiên vấn đề bảo mật trên đám mây vẫn còn là một câu hỏi lớn Ngoài ra việc mất mát dữ liệu trên đám mây cũng hoàn toàn có thể xảy ra
1.6 Các nhà cung cấp
Hiện nay có một số nhà cung cấp điện toán đám mây, tiêu biểu có thể kể đến như: Google, IBM, Microsoft, Amazon, Salesforce… Mỗi nhà cung cấp đều cung cấp các đặc trưng riêng cho điện toán đám mây của họ
Google cung cấp Google Cloud bao gồm Google Apps, Google App Engine, Google Maps, Google Earth Google Apps là dịch vụ của Google cho phép kết hợp tên miền của cá nhân với các sản phẩm của Google Google App Engine là nền tảng điện toán đám mây theo mô hình PaaS Google Maps là một ứng dụng dịch vụ và công nghệ bản đồ trên nền web của Google Google Earth là phần mềm mô phỏng quả địa cầu
Microsoft cung cấp dịch vụ điện toán đám mây Azure, bao gồm Windows Azure, NET Services, SQL Services, Live Services Windows Azure là một nền tảng
để chạy các ứng dụng Windows và lưu trữ dữ liệu của các ứng dụng trên đám mây Live services cung cấp các dịch vụ trực tuyến như tin nhắn tức thì, dịch vụ thư điện tử SQL services cung cấp một tập các dịch vụ dựa vào đám mây để lưu và làm việc với nhiều kiểu dữ liệu từ không có cấu trúc đến dữ liệu quan hệ SQL Data Services cung cấp một cơ sở dữ liệu trên đám mây
Trang 20Hình 0.3 Nền tảng điện toán đám mây của Microsoft [12]
IBM cung cấp hạ tầng điện toán đám mây bao gồm trung tâm dữ liệu chia làm
ba lớp: lớp phần cứng vật lý (máy chủ, thiết bị mạng, thiết bị lưu trữ…), lớp ảo hóa (các tài nguyên vật lý được trừu tượng hóa thành các máy chủ, kho lưu trữ, mạng ảo), lớp quản lý đóng vai trò như một trung tâm điều khiển quản lý việc sử dụng tài nguyên trong toàn bộ hệ thống
Amazon là hãng bán lẻ lớn nhất trên thế giới Việc xử lí hàng triệu giao dịch mỗi giờ yêu cầu một cơ sở hạ tầng giao dịch cấp cao và không chỉ cung cấp tính ổn định, tốc độ mà còn giảm chi phí chuyển đổi Amazon đã đạt được điều này bằng cách xây dựng một cơ sở hạ tầng trung tâm dữ liệu tự động triển khai hệ điều hành ảo và máy chủ lưu trữ Amazon cung cấp một số dịch vụ web như dịch vụ lưu trữ đơn giản (Simple Storage Service), dịch vụ tính toán (Elastic Compute Cloud), dịch vụ truy vấn đám mây (Simple Queue Service), dịch vụ cơ sở dữ liệu (Simple DB), dịch vụ phân phối dữ liệu (CloudFront)
Kiến trúc đám mây gồm: nền tảng đám mây (Cloud Platform), dịch vụ đám mây (Cloud Service), hạ tầng đám mây (Cloud Infrastructure), lưu trữ đám mây (Cloud Storage)
Thành phần của điện toán đám mây bao gồm: Ứng dụng (Application), Máy khách (Clients), Cơ sở hạ tầng (Infrastruture), Nền tảng (Platform), Dịch vụ (Services), Lưu trữ (Storage)
Trang 21Điện toán đám mây ra đời mang lại rất nhiều lợi ích cho người sử dụng Tuy nhiên điện toán đám mây cũng có một số nhược điểm
Hiện nay có rất nhiều nhà cung cấp dịch vụ điện toán đám mây Mỗi nhà cung cấp cung cấp các đặc trưng riêng cho điện toán đám mây của họ Chương sau sẽ đi tìm hiểu cụ thể nhà cung cấp điện toán đám mây Google để thấy được các tiện ích mà điện toán đám mây của Google mang lại và cách áp dụng vào quá trình phát triển phần mềm
Trang 222.2 Ưu điểm, thế mạnh
Các ưu điểm của đám mây Google có thể liệt kê như sau:
Điện toán đám mây cho phép truy cập nhanh hơn, hiệu suất cao hơn Mỗi khi Google đưa ra một tính năng mới cho ứng dụng web, người dùng cập nhật các tính năng này bằng cách làm mới lại trình duyệt Các ứng dụng chạy trên di động cũng nhận được các tính năng mới mà không cần phần mềm cập nhật
Các ứng dụng chạy trên nền web của Google cho phép người dùng truy cập toàn bộ thông tin của họ qua các thiết bị Dữ liệu của người dùng được lưu trên đám mây mà không phải được lưu tại một máy tính cá nhân nào, vì thế khách hàng có thể kết nối đến các nguồn thông tin và làm việc tốt Hạ tầng của Google cho phép khách hàng truy cập từ văn phòng, từ nhà, trên đường, qua thiết bị di động
Đám mây của Google cho phép cộng tác nhanh hơn Dữ liệu của Google Apps được lưu trên đám mây, do đó nhiều người dùng có thể truy cập và làm việc cho dự án đồng thời
Google đầu tư vào bảo mật giúp bảo vệ khách hàng tốt hơn Google không chỉ đầu tư về mặt vật lý mà còn đầu tư cả quy trình bảo mật cho khách hàng Google thuê rất nhiều chuyên gia bảo mật trên thế giới để bảo vệ hệ thống và nghiên cứu các chính sách bảo mật Trung tâm dữ liệu được bảo mật với rất nhiều cấp độ Google đã cài đặt tiến trình bảo mật đa tầng để bảo vệ dữ liệu của khách hàng
Dữ liệu và các hoạt động của người dùng được ghi lại trên nhiều trung tâm dữ liệu Nếu một trung tâm dữ liệu không thể truy cập được vì bất kỳ lý do gì, hệ thống sẽ chuyển sang trung tâm dữ liệu khác mà không ngắt hoạt động của người dùng
Google Apps cung cấp tính mềm dẻo và điều khiển mở rộng Quy định sử dụng dịch vụ của Google Apps chỉ ra khách hàng vẫn sở hữu dữ liệu của họ trong Google Apps, khách hàng hoàn toàn có thể lấy dữ liệu của họ khỏi Google Apps trong trường hợp họ không sử dụng dịch vụ nữa Google Apps cung cấp các điều khiển để quản trị
Trang 23hệ thống có thể quản lý việc truy cập sử dụng các dịch vụ của họ Giao diện lập trình ứng dụng của Google Apps cho phép quản trị hệ thống xây dựng các chức năng và tích hợp với các công nghệ khác
Ngoài ra, việc chạy các ứng dụng trên trình duyệt web giúp khách hàng tiết kiệm chi phí Khách hàng có thể tiết kiệm thời gian và tiền bạc vì không phải quan tâm đến bản quyền phần mềm, các bản vá và các cập nhật định kỳ.[9]
2.3 Google Apps
Google Apps là dịch vụ của Google cho phép kết hợp tên miền của cá nhân với các sản phẩm của Google Các tính năng của Google Apps gồm các ứng dụng web tương tự với bộ Office, bao gồm Gmail, Google Calendar, Google Talk, Google Docs, Google Sites… Google Apps được xây dựng trên nền tảng điện toán đám mây, cho phép người dùng sử dụng các ứng dụng trực tuyến từ bất kỳ nơi nào miễn là có kết nối internet Ngoài ra, Google Apps còn cho phép người dùng tích hợp các ứng dụng từ bên thứ ba tại Google Apps Marketplace
Gmail (Google Mail): là dịch vụ thư điện tử trên nền web và thư điện tử POP3 miễn phí Gmail chạy được trên nhiều trình duyệt, hỗ trợ đa ngôn ngữ Gmail cung cấp tiện ích tìm kiếm nâng cao cho người dùng: tìm kiếm theo người gửi, theo người nhận, theo chủ đề, theo từ có trong thư, theo ngày…Gmail có tính năng cho phép người dùng thêm tối đa 5 tài khoản để lấy thư về thông qua POP3 Gmail được tích hợp với Google Talk và Google Calendar
Google Calendar: là ứng dụng web để quản lý thông tin liên lạc và quản lý thời gian của Google Giao diện giống như một ứng dụng lịch trên máy tính, thiết kế bằng Ajax cho phép người dùng xem, thêm, kéo, thả các sự kiện từ một ngày sang một ngày khác, cho phép xem theo tuần, theo tháng, theo sự kiện Google Calendar có thể được truy cập qua điện thoại di động
Google Docs: là bộ soạn thảo văn bản, bảng tính, trình diễn, lưu trữ dữ liệu miễn phí chạy trên nền web của Google, cho phép người dùng tạo và chỉnh sửa các văn bản trực tuyến Google Docs là phần mềm dịch vụ (SaaS) của Google Google Docs được truy cập qua web nên có thể truy cập được vào bất kỳ lúc nào, từ bất cứ nơi đâu Các trình duyệt có thể dùng là Firefox, Internet Explorer, Safari, Chrome, trên các
hệ điều hành Microsoft Windows, App OS X, Linux Có thể truy cập được qua điện thoại di động bằng Mobile Google Docs
Google Cloud Connnect: là tiện ích điện toán đám mây miễn phí cho Windows Microsoft Offlice 2003, 2007, 2010, có thể tự động lưu và đồng bộ bất kỳ một văn bản Microsoft nào Google Cloud Connect có thể được tự động đồng bộ hoặc được đồng
bộ với Google Docs bởi yếu tố con người khi có thay đổi với các tài liệu Microsoft Office Các tài liệu có thể được chỉ một người dùng hoặc được dùng chung giữa nhiều
Trang 24người trong một tổ chức Các tài liệu này sẽ tự động lưu lại khi có thay đổi được lưu trên Google Docs Google Sync cho phép xem và chỉnh sửa các văn bản trên hầu hết các thiết bị di động có kết nối mạng
Google Groups: là một dịch vụ của Google hỗ trợ việc trao đổi, thảo luận trong nhóm Thành viên trong Google Groups trao đổi thông tin với nhau qua giao diện web hoặc thư điện tử Nhóm có một trang web riêng, có thể quản lý các thành viên trong nhóm hoặc lưu trữ các tài liệu của nhóm
Google Sites: là một công cụ tạo ra trang web do Google cung cấp, được tích hợp với Google AdSense, Google Webmaster Tools, YouTube, Google Video, Google Docs, Google Calendar, Google Maps, Picasa…Google Sites tập trung hóa các văn bản, bảng tính, trình diễn, video…, có thể truy cập được bất kỳ lúc nào, từ bất kỳ nơi nào thông qua trình duyệt web, trên các máy tính cá nhân, Mac, Linux
Google Video: là một công cụ tìm kiếm và chia sẻ video miễn phí của Google Công cụ này cho phép nhúng video vào trang web và cung cấp mã HTML cần thiết của video Mỗi video có địa chỉ web riêng theo định dạng
http://video.google.com/videoplay?docid=<video id>
Trình duyệt Chrome: là một trình duyệt web do Google phát triển, Chrome có thể chạy được trên các hệ thống chạy hệ điều hành Windows (XP Service Pack 2+/Vista/7), Mac OS X (10.5.6 hoặc các phiên bản sau đó, Intel), Linux (Ubuntu 8.04 hoặc các phiên bản sau đó, Debian 5/OpenSure 11.1)
Google App Marketplace: là một nơi lưu trữ phần mềm trực tuyến, triển khai các ứng dụng tích hợp với phần mềm của Google như Google Mail, Google Docs, Google Calendar Google App Marketplace tương tự nơi lưu trữ phần mềm của di động (iPhone hoặc Android) Người dùng có thể dễ dàng tìm kiếm các phần mềm tích hợp với ứng dụng của họ, cài đặt các ứng dụng chạy trên trình duyệt web
Các thông điệp dựa trên nền web của Google và các ứng dụng không yêu cầu nhiều phần cứng, phần mềm, không cần nhiều thời gian xây dựng, do đó tiết kiệm chi phí Người dùng cuối có thể dùng giao diện gần giống Microsoft Outlook cho dịch vụ email, địa chỉ liên lạc, lịch biểu khi họ chuyển từ dùng Gmail sang Google Calendar
Dung lượng lưu trữ lớn hơn 50 lần so với mức trung bình: mỗi người dùng có dung lượng lưu trữ email là 25Gb, vì vậy người dùng có thể giữ các thư quan trọng và tìm kiếm chúng khi cần thiết bằng công cụ tìm kiếm Google Gmail được thiết kế để người dùng mất ít thời gian quản lý hộp thư Tính năng tiết kiệm thời gian gồm dán nhãn các thư, thư nhanh, lọc thư rác giúp người dùng làm việc hiệu quả hơn
Google Apps cho phép truy cập thư điện tử, lịch, nhắn tin tức thời qua di động: khách hàng có thể sử dụng Google Apps ngay cả khi không ngồi ở bàn làm việc mà
Trang 25không mất thêm bất kỳ khoản phí nào, Google apps hỗ trợ truy cập bằng điện thoại qua BlackBerry, iPhone, Windows Mobile, Android và nhiều điện thoại mạnh khác
Google Apps đảm bảo luôn luôn sẵn sàng, do đó đạt năng suất cao và không lo
hệ thống bị sập Với cơ chế đồng bộ, dữ liệu và các hoạt động trong Gmail, Google Calendar, Google Docs và Google Sites được lưu giữ đồng thời trong nhiều trung tâm bảo mật dữ liệu Nếu một trung tâm dữ liệu không thể đáp ứng được yêu cầu, hệ thống
sẽ gọi đến một trung tâm dữ liệu khác, phục vụ người dùng mà không bị ngắt dịch vụ
Google Apps đảm bảo bảo mật thông tin Khi khách hàng đưa thông tin công ty lên Google, khách hàng được đảm bảo thông tin của họ được an toàn và bảo mật Đội bảo mật thông tin của Google bao gồm các chuyên gia về lĩnh vực thông tin, ứng dụng
và bảo mật mạng trên thế giới nhằm giữ an toàn thông tin của khách hàng
Google cung cấp cho người dùng quyền Quản trị và điều khiển dữ liệu Quản trị
hệ thống có thể tùy biến Google apps để đáp ứng kỹ thuật và các yêu cầu về nghiệp vụ Các lựa chọn tích hợp cho phép kết nối Google Apps với các cơ sở hạ tầng công nghệ thông tin hiện tại: single sign on API kết nối Google Apps với hệ thống xác thực, User provisioning utility và API kết nối Google Apps với hệ thống thư mục người dùng Email routing và email gateway cho phép chạy Google Apps cùng với một giải pháp thư điện tử Tiện ích chuyển đổi thư điện tử và API cho phép chuyển từ giải pháp thư điện tử sang Google Apps
Google hỗ trợ khách hàng 24/7 Google Apps tin cậy, dễ vận hành, hỗ trợ người quản trị Các lựa chọn bao gồm: hỗ trợ qua điện thoại các vấn đề cấp thiết, hỗ trợ qua thư điện tử, hỗ trợ trực tuyến các dịch vụ của Google Google Apps có một mạng lưới sâu rộng các đối tác giúp triển khai, chuyển đổi dữ liệu, đào tạo người sử dụng, tích hợp hệ thống, phát triển ứng dụng
Các tính năng có thể kể đến của Google apps là rẻ, nhiều ứng dụng tiện ích, hỗ trợ người dùng, độ tin cậy và bảo mật dữ liệu Phí thường niên là 50$/tài khoản/năm, không giới hạn số người sử dụng Các ứng dụng tiện ích mà Google Apps cung cấp có thể kể đến như các ứng dụng thông điệp, tin nhắn: Gmail, Google Calendar, Google Groups, các ứng dụng cộng tác: Google Docs, Sites, Video… Ngoài ra Google Apps còn cung cấp các công cụ chuyển đổi và tích hợp cho người dùng
Sau khi đăng ký tên miền với Google Apps, quản trị được cấp một trang quản trị với giao diện của Google Apps với tài khoản quản trị, mật khẩu tự thiết lập, và địa chỉ thư điện tử của admin là admin@domain_name Tài khoản thư điện tử này được truy cập thông qua giao diện Gmail Các dịch vụ do Google apps cung cấp có thể được
sử dụng tại địa chỉ http://www.google.com/a/domain_name
Trang 26Hình 0.1 Trang chủ quản trị trong Google Apps
Tại giao diện của Google Apps này có các thẻ như Dashboard, Organization & Users, Groups, Domain settings, Advance tools, Support, Service Settings Mỗi thẻ sẽ quản lý các thông tin tương ứng
Hình 0.2 Các danh mục quản trị trong Google Apps
2.4 Google App Engine
2.4.1 Khái niệm
Google App Engine là nền tảng điện toán đám mây theo mô hình PaaS Google App Engine cho phép chạy ứng dụng web trên cơ sở hạ tầng của Google Việc xây dựng, bảo trì, thay đổi ứng dụng rất dễ dàng, người dùng không cần phải bảo trì máy chủ mà chỉ cần đẩy ứng dụng lên máy chủ Google, khi đó Google sẽ phục vụ đáp ứng nhu cầu của người dùng [3]
Các ứng dụng được chuyển lên máy chủ thông qua Google Apps, tên miền của ứng dụng có thể là tên miền của khách hàng đã có hoặc sử dụng tên miền miễn phí appspot.com Người dùng có thể thiết lập cho ứng dụng của mình được truy cập bởi tất
cả mọi người hoặc giới hạn truy cập chỉ cho các thành viên trong tổ chức của mình Google App Engine hỗ trợ các ứng dụng được viết bằng các ngôn ngữ Java hoặc Python
Cũng như các dịch vụ điện toán đám mây khác, với App Engine, người dùng không phải trả phí cài đặt ban đầu và phí thường niên mà chỉ phải trả cho những gì họ
sử dụng, các tài nguyên lưu trữ và băng thông sử dụng được tính theo gigabyte Dung lượng lưu trữ tối đa cho phép lên tới 500 MB, CPU và băng thông cho phép phục vụ
Trang 275000 lần ghé thăm trang web 1 tháng Trường hợp người dùng phải trả phí cho ứng dụng, họ sẽ chỉ phải trả cho việc dùng các nguồn tài nguyên quá hạn mức mà Google cung cấp miễn phí
Hiện nay Google Apps cung cấp cho người dùng các sản phẩm bao gồm: Google Apps (bản miễn phí), Google Apps cho thương mại, Google Apps cho giáo dục, Google Apps cho chính phủ và Google Apps cho phi lợi nhuận [3]
App Engine hỗ trợ tích hợp ứng dụng với tài khoản Google để xác thực người dùng Ứng dụng App Engine cho phép người dùng đăng nhập bằng tài khoản Google của họ mà không cần phải tạo thêm tài khoản nào khác
2.4.2 Tính năng
Google App Engine hỗ trợ web động và các công nghệ web phổ biến hiện nay, Cho phép cơ sở dữ liệu có khả năng chấp nhận truy vấn liên tục, tự động cân bằng tải Giao diện lập trình ứng dụng cho phép xác thực người dùng, gửi thư điện tử qua tài khoản Google
Google App Engine cung cấp môi trường phát triển đầy đủ tính năng giống như Google App Engine được cài đặt trên máy tính của người dùng
Google App Engine có khả năng lập lịch cho các sự kiện xảy ra tại một thời điểm xác định trong khoảng thời gian định kỳ
Ứng dụng có thể chạy trên hai môi trường là Java và Python Môi trường chạy ứng dụng được bảo mật, có thể truy cập ứng dụng qua URL, dịch vụ thư điện tử, các yêu cầu HTTP, HTTPS Ứng dụng không ghi được vào file hệ thống mà chỉ có thể đọc các file trong mã nguồn của ứng dụng Ứng dụng chỉ đáp ứng một yêu cầu web, kết quả phải được trả về trong vòng 30 giây, sau khi kết quả đã được trả về, yêu cầu sẽ không thực hiện gọi các tiến trình con hay thực thi mã nguồn nữa
2.4.3 Dịch vụ App Engine
URL fetch: các ứng dụng có thể truy cập các nguồn tài nguyên trên mạng (dữ liệu, dịch vụ web) qua dịch vụ tìm kiếm các tài nguyên trên mạng (URL fetch) Máy chủ tạo yêu cầu HTTP tới các máy chủ khác trên mạng, giống như truy vấn các trang hoặc tương tác với dịch vụ web Tất cả các yêu cầu phải bắt đầu và kết thúc trong thời gian xử lý yêu cầu
Mail: cho phép gửi thư qua dịch vụ thư điện tử của App Engine Dịch vụ này sử dụng cơ sở hạ tầng của Google để gửi thư điện tử Các ứng dụng App Engine có thể gửi thông điệp sử dụng dịch vụ thư điện tử Các thông điệp có thể được gửi với tư cách
là ứng dụng hoặc người dùng tạo yêu cầu gửi thư điện tử Nhiều ứng dụng web sử dụng thư điện tử để thông báo cho người dùng, xác nhận hoạt động của người dùng, hiệu lực thông tin liên lạc Một ứng dụng cũng có thể nhận thư điện tử Nếu một ứng
Trang 28dụng được cấu hình để nhận thư, một thông điệp được gửi đến địa chỉ của ứng dụng được chuyển đến dịch vụ thư, phân phối các thư đến ứng dụng dưới dạng yêu cầu HTTP tới bộ xử lý yêu cầu Ứng dụng App Engine có thể gửi và nhận thông điệp đến
và từ máy chủ tán gẫu hỗ trợ giao thức XMPP, bao gồm Google Talk - một ứng dụng gửi một thông điệp chat XMPP bằng cách gọi dịch vụ XMPP Khi ai đó gửi thư đến địa chỉ của ứng dụng, dịch vụ XMPP phân phối thư đến ứng dụng bằng cách gọi bộ xử
lý yêu cầu
Memcache: dịch vụ bộ nhớ đệm cung cấp cho ứng dụng một vùng nhớ đệm hiệu suất cao, có thể truy cập được thông qua nhiều thể hiện của ứng dụng, phù hợp với dữ liệu không cần lưu trữ lâu Ưu điểm lớn nhất của nó đối với lưu trữ dữ liệu là nhanh Bộ nhớ đệm lưu các giá trị trong bộ nhớ thay vì trên đĩa cứng để truy cập nhanh hơn Nó được phân tán như cơ sở dữ liệu, vì vậy mọi yêu cầu nhận được cùng một tập các khóa và giá trị Ứng dụng kiểm tra giá trị đệm, nếu không có giá trị, nó thực hiện truy vấn hoặc tính toán và lưu giá trị trong bộ đệm để sử dụng sau này
Image Manipulation: dịch vụ hình ảnh cho phép ứng dụng thao tác với các hình ảnh, có thể thay đổi kích cỡ, cắt bớt, xoay các ảnh có định dạng JPEG và PNG Nhiệm
vụ xử lý ảnh được thực hiện trên cơ sở hạ tầng tương tự như Google sử dụng để xử lý hình ảnh, vì vậy kết quả được trả về rất nhanh
2.4.4 Giới hạn sử dụng
Google không thu phí tạo tài khoản, xuất bản ứng dụng Ứng dụng được miễn phí sử dụng 500MB dung lượng lưu trữ và 5000 lượt ghé thăm mỗi tháng Khi chọn trả tiền sử dụng, có thể thiết lập số lượng sử dụng tối đa và chi phí cho mỗi tài nguyên theo nhu cầu sử dụng
Mỗi tài khoản có thể đăng ký tối đa 10 ứng dụng Mỗi ứng dụng bị giới hạn tài nguyên sử dụng, có thể điều chỉnh bằng cách mua thêm tài nguyên Một số tính năng
bị giới hạn không liên quan đến tài nguyên sử dụng để đảm bảo tính ổn định của ứng dụng
2.4.5 Ứng dụng trên Google App Engine
2.4.5.1 Tổng quan
Google App Engine là một dịch vụ máy chủ ứng dụng web “Ứng dụng web” nghĩa là một ứng dụng hoặc một dịch vụ được truy cập qua web, thường là qua trình duyệt
Google App Engine được thiết kế để đặt các ứng dụng có nhiều người dùng đồng thời Khi một ứng dụng có thể phục vụ nhiều người dùng đồng thời mà không giảm hiệu suất, ta nói rằng ứng dụng đó co giãn Các ứng dụng được viết cho App Engine co giãn một cách tự động Khi có càng nhiều người sử dụng ứng dụng, App
Trang 29Engine càng cấp nhiều tài nguyên hơn cho ứng dụng và quản lý việc dùng các tài nguyên này Ứng dụng tự nó không cần biết bất kỳ điều gì về tài nguyên mà nó đang
sử dụng
Không giống các máy chủ web truyền thống hoặc các máy chủ tự quản lý, với Google App Engine, người dùng chỉ phải trả cho những tài nguyên mà họ dùng Những tài nguyên này được đo bằng gigabyte mà không thu phí hàng tháng hay phí trả trước Các tài nguyên phải trả phí gồm phí sử dụng CPU, phí lưu trữ hàng tháng, băng thông đi và đến, một số tài nguyên cho các dịch vụ App Engine Lúc đầu, các lập trình viên sẽ được cấp cho một lượng tài nguyên nhất định, đủ cho các ứng dụng nhỏ với lưu lượng thấp Google ước lượng rằng với nguồn tài nguyên miễn phí, một ứng dụng
có thể cho phép khoảng 5 triệu lượt xem mỗi tháng
App Engine có thể được miêu tả gồm ba phần: môi trường chạy thực, lưu trữ dữ liệu, các dịch vụ bậc thang
2.4.5.2 Môi trường chạy thực
Một ứng dụng App Engine đáp ứng các yêu cầu web Một yêu cầu web bắt đầu khi một người dùng trình duyệt, trao đổi với ứng dụng bằng một yêu cầu HTTP, giống như truy cập một trang web từ một URL Khi App Engine nhận được yêu cầu, nó xác định ứng dụng từ tên miền của địa chỉ, hoặc một miền con app.com (được cung cấp miễn phí cho mọi ứng dụng) hoặc một miền con của tên miền của khách hàng đăng ký
và cài đặt với Google Apps App Engine chọn một máy chủ từ rất nhiều máy chủ để
xử lý yêu cầu, lựa chọn máy chủ nào có khả năng phản hồi nhanh nhất, sau đó gọi ứng dụng với nội dung của yêu cầu HTTP, nhận dữ liệu đáp ứng từ ứng dụng và trả đáp ứng về máy người dùng
Một ứng dụng có thể đọc chính các file từ hệ thống file của nó, nhưng lại không thể ghi vào các file và càng không thể đọc các file của một ứng dụng khác Một ứng dụng không thể truy cập các tài nguyên mạng của máy chủ phần cứng mặc dù nó có thể xử lý các vấn đề liên quan đến mạng bằng các dịch vụ
App Engine có thể đánh giá để tìm ra máy chủ xử lý một yêu cầu để cung cấp phản hồi nhanh nhất Không có cách nào đảm bảo rằng cùng một máy chủ phần cứng
sẽ xử lý hai yêu cầu, ngay cả khi yêu cầu đến từ cùng một máy khách và đến tương đối nhanh
App Engine có thể chạy nhiều ứng dụng trên cùng một máy chủ mà hoạt động của các ứng dụng ảnh hưởng đến nhau Để hạn chế truy cập vào hệ điều hành, môi trường chạy thực phải giới hạn tổng thời gian, việc sử dụng CPU khi một yêu cầu xảy
ra
Một yêu cầu có tới 30 giây để trả đáp ứng tới máy khách App Engine phù hợp với các ứng dụng mà đáp ứng nhỏ hơn một giây
Trang 30Google App Engine cung cấp hai môi trường chạy thực cho ứng dụng: môi trường Java và môi trường Python Môi trường chọn tùy thuộc vào ngôn ngữ và các công nghệ liên quan dùng để phát triển ứng dụng
Môi trường Java chạy các ứng dụng được triển khai cho Máy ảo Java 6 (JVM) Một ứng dụng có thể được cài đặt bằng ngôn ngữ lập trình Java hoặc các ngôn ngữ khác cũng biên dịch hoặc chạy trong máy ảo Java như PHP (sử dụng Quercus), Ruby (sử dụng Jruby), Javascript (sử dụng trình biên dịch Rhino), Scala, Groovy Ứng dụng truy cập môi trường và các dịch vụ bằng giao diện web, gồm Java servlets và Java Persistence API (JPA) Bất kỳ công nghệ Java nào mà chức năng bị giới hạn bởi sandbox có thể chạy App Engine App Engine hỗ trợ Google Web Toolkit (GWT), một framework cho các ứng dụng web cho phép lập trình ứng dụng mà không cần cài thêm gì nữa
Môi trường Python chạy các ứng dụng được viết bằng ngôn ngữ lập trình Python 2.5 sử dụng phiên bản Cpython App Engine gọi một ứng dụng Python sử dụng CGI, một tiêu chuẩn giao diện hỗ trợ ứng dụng Một ứng dụng có thể sử dụng thư viện chuẩn của Python cũng như API và thư viện để truy cập các dịch vụ và mô hình hóa
dữ liệu Nhiều framework ứng dụng web mã nguồn mở Python làm việc với App Engine như Django, web2py, Pylons
Môi trường Java và Python sử dụng cùng mô hình máy chủ ứng dụng: một yêu cầu được chuyển đến một máy chủ ứng dụng, ứng dụng được khởi động trên máy chủ ứng dụng (nếu cần thiết) và được gọi để xử lý yêu cầu, tạo ra kết quả, kết quả được trả
về máy khách Mỗi môi trường chạy một bộ biên dịch của nó (bộ biên dịch JVM hoặc Python)
Việc sử dụng các máy chủ khác nhau cho mỗi yêu cầu có ưu điểm trong việc co giãn App Engine giảm nhẹ giá khởi động bằng việc lưu ứng dụng trong bộ nhớ lâu nhất có thể và sử dụng lại máy chủ một cách thông minh Khi một máy chủ cần lấy lại tài nguyên, nó khử ứng dụng được sử dụng gần nhất đi Tất cả các máy chủ ứng dụng
có môi trường chạy (bộ biên dịch JVM hoặc Python) được tải trước khi yêu cầu đến được máy chủ, chỉ có ứng dụng tự nó được tải vào máy chủ mới
Ứng dụng có thể lợi dụng bộ đệm ứng dụng để giữ dữ liệu trực tiếp trên máy chủ Vì một ứng dụng có thể bị loại trừ giữa hai yêu cầu (và các ứng dụng lưu lượng thấp thường được loại trừ), không có gì đảm bảo rằng một yêu cầu của người dùng sẽ được một máy chủ xử lý, các biến toàn cục dùng để khởi động tài nguyên cũng như phân tích các file cấu hình
Có thể cấu hình máy chủ để sử dụng hệ điều hành hoặc phần cứng nào đó, nhưng môi trường chạy là một trừu tượng hóa mức trên của hệ điều hành, cho phép App Engine quản lý các nguồn tài nguyên, tính toán, xử lý yêu cầu, thay đổi, tải các phân tán mà không gồm ứng dụng Các tính năng yêu cầu kiến thức về hệ điều hành
Trang 31được cung cấp bởi các dịch vụ bên ngoài môi trường chạy thực, được cung cấp hoặc đánh giá bằng lời gọi thư viện chuẩn hoặc hạn chế theo cách logic trong định nghĩa của sandbox
2.4.5.3 Lưu trữ dữ liệu
Hầu hết các ứng dụng web cần lưu trữ thông tin trong suốt quá trình xử lý Cấu hình cho một trang web nhỏ bao gồm một máy chủ cơ sở dữ liệu, một hoặc nhiều máy chủ kết nối đến cơ sở dữ liệu để lưu và truy vấn dữ liệu Sử dụng một máy chủ cơ sở
dữ liệu trung tâm sẽ giúp cho việc hiển thị dữ liệu dễ dàng hơn, để nhiều người dùng truy cập nhiều máy chủ web đều thấy cùng một thông tin và là các thông tin mới nhất
Hầu hết các hệ lưu trữ dữ liệu cho ứng dụng web trong các thập kỷ trước đều là
cơ sở dữ liệu quan hệ, với các bảng gồm các dòng và cột với các chỉ số và các hàm tính toán để thực hiện truy vấn, đặc biệt là các truy vấn kết hợp (join) để xử lý các bản ghi có liên quan đến nhau Một loại hệ cơ sở dữ liệu khác gồm cây phân cấp lưu trữ dữ liệu (hệ thống file, cơ sở dữ liệu XML) và các cơ sở dữ liệu đối tượng Mỗi loại cơ sở
dữ liệu có ưu, nhược điểm riêng, phù hợp cho ứng dụng tùy thuộc vào tính chất của dữ liệu và cách dữ liệu được truy cập
Lưu trữ dữ liệu trong App Engine không giống như cơ sở dữ liệu quan hệ truyền thống, các đối tượng dữ liệu (các thực thể) có một kiểu và một tập các thuộc tính Các truy vấn có thể truy vấn các thực thể theo kiểu nào đó và sắp xếp giá trị của các thuộc tính Giá trị của các thuộc tính có thể thuộc các kiểu như trong bảng 2.1:
Bảng 2.1 Các thuộc tính trong App Engine[3]
Trang 32phần nhất ReferenceProperty
SelfReferenceProperty db.Key
Theo các thành phần (kiểu, ID hoặc tên, loại, ID hoặc tên ) blobstore.BlobReferenceProperty blobstore.BlobKey thứ tự byte
(Unicode)
đó theo chiều dài
PostalAddressProperty db.PostalAddress Unicode
App Engine cung cấp hai lựa chọn lưu trữ dữ liệu khác nhau, phân biệt nhau bởi tính có sẵn và nhất quán, đó là lưu trữ dữ liệu High Replication và Master/Slave
Trong lưu trữ dữ liệu High Replication, dữ liệu được lưu trên nhiều trung tâm
dữ liệu High Replication cung cấp tính có sẵn rất cao cho việc đọc và ghi vì dữ liệu được lưu đồng bộ trên nhiều trung tâm dữ liệu Lưu trữ dữ liệu High Replication là kiểu lưu trữ dữ liệu duy nhất trong Python 2.7
Trong lưu trữ dữ liệu Master/Slave, một trung tâm dữ liệu giữ bản sao chép chính của dữ liệu, dữ liệu được ghi vào trung tâm dữ liệu chính không đồng bộ với tất
cả các trung tâm dữ liệu phụ khác Chỉ có một trung tâm dữ liệu giữ các bản sao chép chính, nên rất nhất quán cho việc đọc và truy vấn Master/Slave không hỗ trợ trong Python 2.7
Các đối tượng dữ liệu trong lưu trữ dữ liệu App Engine được gọi là các thực thể Mỗi thực thể có thể có một hoặc nhiều thuộc tính Thuộc tính có thể là chuỗi, là số nguyên, hoặc thậm chí tham chiếu đến một thực thể khác Thuộc tính có thể có một hoặc nhiều giá trị Một thuộc tính có nhiều giá trị có thể có nhiều kiểu Truy vấn trên thuộc tính có nhiều giá trị kiểm tra xem các giá trị có phù hợp với tiêu chuẩn của truy vấn hay không
Các thực thể của một kiểu giống như các dòng trong một bảng, các thuộc tính giống như các cột Một thực thể của một kiểu đã cho không bắt buộc phải có cùng thuộc tính với các thực thể khác cùng loại Một thực thể có thể có thuộc tính cùng tên
Trang 33với thuộc tính của thực thể khác Điểm khác biệt khác giữa thực thể và hàng trong bảng là một thực thể có thể có nhiều giá trị cho cùng một thuộc tính
Mọi thực thể đều có một khóa riêng Không giống cơ sở dữ liệu quan hệ, khóa không phải là “trường” hay thuộc tính, nhưng là một khía cạnh độc lập của thực thể
Có thể tìm một thực thể nhanh nếu biết khóa của nó, và truy vấn được thực hiện trên khóa đó Khóa của thực thể không thay đổi được sau khi thực thể đã được tạo ra
Lưu trữ dữ liệu cung cấp một API với các hoạt động đơn giản trên thực thể bao gồm “get”, “put”, “delete”, “query” Người dùng có thể sử dụng API bậc thấp để thực thi các giao diện khác hoặc sử dụng trực tiếp trong ứng dụng
Mỗi đối tượng dữ liệu trong App Engine (entity) có một hoặc nhiều thuộc tính thuộc nhiều kiểu khác nhau Mỗi thực thể cũng có một khóa để phân biệt các thực thể với nhau Khóa đơn giản nhất có loại (kind) và mã thực thể (entity ID) Loại giúp phân chia các thực thể do đó việc truy vấn sẽ dễ dàng hơn
Lưu trữ dữ liệu App Engine không yêu cầu tất cả các thực thể thuộc cùng một loại có cùng thuộc tính giống nhau Ứng dụng có thể xác định và tuân theo mô hình dữ liệu bằng thư viện trong SDK hoặc mã ứng dụng
Mỗi truy vấn dùng một chỉ số, một bảng chứa kết quả của truy vấn theo thứ tự mong muốn Ứng dụng App Engine định nghĩa các chỉ số trong file cấu hình Máy chủ ứng dụng web tự động thêm các yêu cầu với file này khi gặp các truy vấn không dựa trên chỉ số Có thể điều chỉnh chỉ số bằng cách thay đổi file trước khi đưa ứng dụng lên Khi các thực thể của ứng dụng bị thay đổi, các chỉ số với kết quả đúng sẽ được cập nhật Khi một truy vấn được thực thi, kết quả được lấy từ chỉ số tương ứng
Cơ chế này hỗ trợ nhiều truy vấn và phù hợp với hầu hết các ứng dụng Tuy nhiên cơ chế này không hỗ trợ một số loại truy vấn trong công nghệ cơ sở dữ liệu như phép nối (join) và kết tập (aggregate)
Có thể thực hiện nhiều hành động trên một thực thể trong một giao dịch bằng API giao dịch Có thể thay đổi nhiều thực thể trong một giao dịch bằng nhóm thực thể (entity groups) bằng cách khai báo thực thể đó thuộc về một nhóm thực thể khi tạo thực thể Với những ứng dụng sử dụng kho dữ liệu theo kiểu Master/Slave, tất các các thực thể được trả về, được tạo ra, được cập nhật hoặc bị xóa trong một giao dịch phải thuộc cùng nhóm thực thể Với những ứng dụng sử dụng kho dữ liệu theo kiểu High Replication, các thực thể trong một giao dịch có thể thuộc cùng một nhóm thực thể hoặc thuộc các nhóm thực thể khác nhau
Các nhóm thực thể được định nghĩa bằng cây quan hệ giữa các thực thể Để tạo thực thể trong nhóm, cần khai báo thực thể là con của một thực thể khác đã có trong nhóm Thực thể khác kia sẽ là cha Một thực thể không có cha là thực thể gốc Thực thể gốc mà không có con thuộc về nhóm thực thể chỉ có mình thực thể đó Mỗi thực
Trang 34thể có một đường quan hệ cha – con từ thực thể gốc đến thực thể đó Đường này là một phần tất yếu của khóa Một khóa có thể được biểu diễn bởi loại và mã (ID) hoặc tên khóa
Các ứng dụng sử dụng kho dữ liệu High Replication có thể thực hiện các giao dịch trên các thực thể của các nhóm thực thể khác nhau Tính năng này được gọi là các giao dịch nhóm chéo (cross-group transactions – XG transactions) Giao dịch nhóm chéo có thể được áp dụng tối đa trên 5 nhóm thực thể Một giao dịch nhóm chéo thành công miễn là không có các giao dịch đồng thời nào chạm đến bất kỳ một nhóm thực thể nào trong giao dịch
Với ứng dụng App Engine, dữ liệu được ghi lại qua 2 pha: commit và apply Pha commit xảy ra trước, trong pha này, thực thể dữ liệu được ghi lại trong log Pha apply xảy ra sau đó Pha này bao gồm hai hành động được thực hiện song song: dữ liệu thực thể được ghi lại, chỉ số của các hàng của thực thể được ghi lại
Khi ứng dụng tạo ra các thực thể mới và cập nhật các chỉ số cũ, lưu trữ dữ liệu cũng cập nhật các chỉ số tương ứng Việc này giúp cho truy vấn nhanh (mỗi truy vấn đơn giản là một lần quét bảng) khi có thể nhiều bảng cần được cập nhật chỉ vì một thay đổi nhỏ Hiệu suất của một truy vấn theo chỉ số không bị ảnh hưởng bởi số lượng các thực thể trong cơ sở dữ liệu
Khi một ứng dụng có nhiều máy khách cùng đọc hoặc ghi cùng một dữ liệu đồng thời, đòi hỏi dữ liệu luôn phải ở trong trạng thái thống nhất Khi một ứng dụng cập nhật các thuộc tính của một thực thể đơn, App Engine đảm bảo rằng một thời điểm nào đó, mọi việc cập nhật thực thể đều thành công hoặc việc cập nhật thực thể không thành công va thực thể giữ nguyên trạng thái như trước khi cập nhật Những người dùng khác không thấy được bất kỳ thay đổi nào cho đến khi thay đổi thành công
Nói cách khác, việc cập nhật một thực thể xảy ra trong một giao dịch Mỗi giao dịch là nguyên tử: giao dịch hoặc thành công, hoặc thất bại mà không thể thất bại một phần hoặc thành công một phần
Một ứng dụng có thể đọc hoặc cập nhật các thực thể trong một giao dịch nhưng
nó phải cho App Engine biết thực thể nào sẽ được cập nhật Ứng dụng làm việc này bằng cách tạo ra các thực thể trong các nhóm thực thể App Engine sử dụng các nhóm thực thể để điều khiển cách các thực thể được phân tán trên các máy chủ, vì thế có thể đảm bảo rằng một giao dịch trên một nhóm thành công hoặc thất bại Nếu người dùng
cố cập nhật một thực thể trong khi một người dùng khác lại đang cập nhật thực thể đó, lưu trữ dữ liệu ngay lập tức trả về ngoại lệ lỗi Nhưng nếu chỉ đọc dữ liệu thì bao giờ cũng thành công
Trang 352.4.5.4 Hàng đợi tác vụ và tác vụ được lập lịch
Một ứng dụng web phải đáp ứng các yêu cầu web rất nhanh, thường là nhỏ hơn một giây và tốt nhất là vài phần miligiây để cung cấp trải nghiệm tốt nhất cho người dùng ngồi trước trình duyệt Do đó App Engine sử dụng hàng đợi tác vụ Hàng đợi tác
vụ cho phép bộ xử lý mô tả các công việc sắp phải làm Hàng đợi đảm bảo rằng cuối cùng mọi tác vụ đều được hoàn thành Nếu một tác vụ bị thất bại, hàng đợi sẽ cố chạy tác vụ cho tới khi thành công
Một hàng đợi thực thi một tác vụ bằng cách gọi bộ xử lý yêu cầu Bộ xử lý tác
vụ cũng bị giới hạn tương tự như các bộ xử lý yêu cầu khác, bao gồm giới hạn thời gian 30 giây Một tính năng đặc biệt mạnh của hàng đợi tác vụ là khả năng xếp một tác
vụ trong một giao dịch trên dữ liệu Điều này đảm bảo tác vụ sẽ được cho vào hàng đợi nếu các giao dịch còn lại với cơ sở dữ liệu thành công
App Engine có một dịch vụ khác để xử lý các tác vụ tại một thời điểm xác định trong ngày Các tác vụ được lập lịch cũng được biết đến là các “cron job”, tên được mượn từ một tính năng tương tự của hệ điều hành Unix Dịch vụ tác vụ được lập lịch
có thể gọi một bộ xử lý yêu cầu tại một thời điểm xác định trong ngày, trong tuần, trong tháng, dựa vào lịch mà người dùng cung cấp khi đẩy ứng dụng lên máy chủ Các tác vụ được lập lịch rất hữu ích cho vịêc bảo trì thường xuyên hoặc gửi các thông điệp báo cáo định kỳ
2.4.5.5 Công cụ lập trình
Google cung cấp các công cụ miễn phí để phát triển các ứng dụng App Engine bằng Java hoặc Python Người dùng có thể tải gói phát triển phần mềm (SDK) cho ngôn ngữ đã chọn và hệ điều hành máy tính từ trang web của Google Người dùng Java có thể dùng Java SDK dưới dạng plug-in cho môi trường phát triển tích hợp Eclipse Người dùng Python sử dụng Windows hoặc Mac OS X có thể dùng Python SDK dưới dạng ứng dụng GUI Cả hai SDK đều có sẵn dưới dạng file nén ZIP của công cụ dòng lệnh, để sử dụng thực tiếp hoặc tích hợp vào môi trường phát triển hoặc các hệ thống đã có
Mỗi SDK bao gồm một máy chủ lập trình web chạy ứng dụng trên máy tính cá nhân đóng vai trò môi trường chạy thực, cơ sở dữ liệu, các dịch vụ Máy chủ lập trình
tự động phát hiện các thay đổi trong các file nguồn và tải lại chúng nếu cần, vì vậy lập trình viên có thể giữ máy chủ chạy trong khi vẫn phát triển ứng dụng
Máy chủ lập trình web bao gồm một ứng dụng web để duyệt nội dung của cơ sở
dữ liệu (giả lập) Người dùng cũng có thể tạo ra các thực thể cơ sở dữ liệu mới để kiểm thử bằng giao diện
Mỗi SDK cũng bao gồm công cụ để tương tác với ứng dụng chạy trên App Engine Người dùng sử dụng công cụ này để tải mã ứng dụng lên App Engine Người
Trang 36dùng cũng có thể sử dụng công cụ này để tải dữ liệu từ ứng dụng đang hoạt động, hoặc quản lý các chỉ số của ứng dụng đang hoạt động
Python và Java SDK bao gồm một tính năng mà người dùng có thể cài đặt vào ứng dụng để bảo mật truy cập từ xa vào ứng dụng đang hoạt động Python SDK bao gồm công cụ xử lý dữ liệu lớn như tải dữ liệu mới từ file và tải xuống rất nhiều dữ liệu cho mục đích sao lưu hoặc di chuyển SDK cũng bao gồm dòng lệnh tương tác Python
để kiểm thử, gỡ lỗi, chỉnh sửa dữ liệu trực tiếp Người dùng có thể tự viết các kịch bản
và chương trình sử dụng tính năng điều khiển truy cập cho truyền dữ liệu lớn hoặc các mục đích bảo trì khác
Người dùng đăng nhập vào khung quản trị bằng tài khoản Google Người dùng
sử dụng tài khoản Google hiện tại nếu đã có hoặc tạo mới một tài khoản cho ứng dụng của mình Một khi đã tạo ra ứng dụng sử dụng khung quản trị, người dùng có thể thêm quản trị viên là các tài khoản Google Bất kỳ quản trị viên nào cũng có thể truy cập khung quản trị và tải lên phiên bản mới của ứng dụng
Khung quản trị cho phép truy cập dữ liệu thời gian thực của ứng dụng, nhật ký
dữ liệu của ứng dụng, cũng có thể truy vấn cơ sở dữ liệu qua giao diện web và kiểm tra trạng thái của các chỉ số của kho dữ liệu
Khi tải mã mới của ứng dụng bằng SDK, phiên bản mới được gán một phiên bản định danh mới, dùng để xác định file cấu hình của ứng dụng Phiên bản được dùng cho ứng dụng hiện tại là phiên bản chính được chọn làm mặc định Người dùng điều khiển phiên bản mặc định bằng khung quản trị Người dùng có thể truy cập phiên bản không mặc định bằng URL riêng chứa định danh của phiên bản Điều này cho phép kiểm thử một phiên bản mới của ứng dụng chạy trên App Engine trước khi chính thức phát hành nó
Người dùng sử dụng khung quản trị để cài đặt và quản lý tài khoản thanh toán cho ứng dụng Khi ứng dụng sử dụng các nguồn tài nguyên miễn phí, người dùng thiết lập một tài khoản thanh toán bằng thẻ tín dụng và tài khoản Google Chủ nhân của tài khoản thanh toán được thiết lập một ngân sách, số tiền lớn nhất phải trả mỗi ngày Trong ngân sách đó, người dùng có thể xác định thời gian CPU là bao nhiêu, băng thông, lưu trữ, người nhận thư… Người dùng chỉ bị tính phí cho những gì mà ứng dụng sử dụng quá mức miễn phí
Trang 372.4.5.7 Ứng dụng trên Google App Engine
Ứng dụng dựa trên Google App Engine có thể được viết bằng ngôn ngữ Java, Python, Go Tùy theo mỗi ngôn ngữ sử dụng để xây dựng ứng dụng, cần cài đặt gói phát triển phần mềm (SDK) tương ứng SDK bao gồm phần mềm cho máy chủ web trên chính máy của lập trình viên do đó có thể kiểm thử được ứng dụng Máy chủ mô phỏng tất cả các dịch vụ của App Engine bao gồm bộ lưu trữ dữ liệu, tài khoản Google, khả năng nhận URL, gửi thư điện tử từ máy tính bằng App Engine APIs Có thể sử dụng Eclipse và Google Plugin cho Eclipse hoặc Apache Ant để phát triển ứng dụng
Để tạo và quản lý ứng dụng bằng App Engine, người dùng sử dụng Administration Console Sau khi đã đăng ký mã ứng dụng (application ID) cho ứng dụng, người dùng đẩy ứng dụng lên App Engine bằng Eclipse Plugin hoặc công cụ cửa
sổ dòng lệnh trong SDK Một khi mã ứng dụng đã được đăng ký, người dùng có thể xóa đi nhưng không thể đăng ký lại mã tương tự được nữa
Một ứng dụng App Engine viết bằng ngôn ngữ Java dùng chuẩn Java Servlet để tương tác với môi trưởng máy chủ web File ứng dụng bao gồm các lớp đã được biên dịch, JARs, các file tĩnh và file cấu hình được sắp xếp theo cấu trúc thư mục theo chuẩn sắp đặt WAR Lập trình viên có thể sử dụng bất kỳ quy trình lập trình nào để tạo
ra web servlet và thư mục WAR
Tên của Project sẽ là tên thư mục gốc chứa tất cả các file của Project Bên trong
có 2 thư mục là src/ và war/ Src/ chứa mã nguồn Java, war/ chứa ứng dụng hoàn chỉnh sắp xếp dưới định dạng WAR Quá trình biên dịch sẽ dịch các file mã nguồn Java và chuyển các lớp đã được dịch vào các thư mục tương ứng trong war/
Trang 38dụng và danh sách các file tĩnh (file ảnh, file css), file nguồn (các file JSP…) Nội dung của file appengine-web.xml như sau:
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <application></application>
Có thể đưa ứng dụng lên App Engine bằng Eclipse hoặc bằng cửa sổ dòng lệnh Trong trường hợp sử dụng Eclipse có Google Plugin Cách khác là sử dụng lệnh có trong appcfg.cmd (Windows) hoặc appcfg.sh (Mac OS X, Linux) AppCfg là công cụ
đa ứng dụng để tương tác với ứng dụng trên App Engine Lệnh lấy tên của ứng dụng, đường dẫn tới thư mục war/ và các lựa chọn khác Để đưa mã nguồn của ứng dụng và các file lên App Engine, sừ dụng lệnh update như sau:
Với hệ điều hành Windows:
\appengine-java-sdk\bin\appcfg.cmd update war
Với hệ điều hành MAC OS X hoặc Linux:
/appengine-java-sdk/bin/appcfg.sh update war
2.4.5.8 Hạn chế
App Engine hỗ trợ kết nối bảo mật (HTTPS) với appspot.com nhưng không hỗ trợ kết nối bảo mật cho tên miền của khách hàng Trong khi đó, tài khoản Google đăng nhập sử dụng kết nối bảo mật
Một ứng dụng có thể sử dụng dịch vụ đón nhận URL để gửi yêu cầu HTTPS tới một trang khác, nhưng App Engine không xác thực lại trên máy chủ
Một ứng dụng có thể nhận thư đến và các đoạn chat XMPP tại một số địa chỉ, nhưng không có địa chỉ nào sử dụng tên miền của khách hàng
Một ứng dụng có thể chấp nhận yêu cầu web trên miền của khách hàng bằng Google Apps Google Apps ánh xạ miền con của tên miền khách hàng vào một ứng dụng, miền con này có thể là www App Engine không hỗ trợ các tên miền không rõ ràng như http://example.com Nó cũng không hỗ trợ miền thứ ba trong miền của khách hàng (http://foo.www.example.com) App Engine hỗ trợ miền con của appspot.com như foo.app-id.appspot.com