Trước khi đi vào phần giới thiệu về Google App Engine, chúng ta cần làm rõ 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ôi trường tính toán dựa trên internet mà ở đó tất cả phần mềm, dữ liệu, tài nguyên được cung cấp cho máy tính và các thiết bị khác theo nhu cầu.
Trang 1M c l c ục lục ục lục
1 Mở đầu 3
2 Tìm hiểu về Google App Engine 5
2.1 Kiến trúc hoạt động 5
2.2 Các thành phần chính và chức năng 6
2.2.1 Môi trường thực thi (runtime environment) 6
2.2.2 Các file server tĩnh (static file servers) 6
2.2.3 Kho dữ liệu (datastore) 7
2.2.4 Thực thể (entities) và Thuộc tính (properties) 7
2.2.5 Truy vấn (queries) và Chỉ mục (indexes) 8
2.2.6 Phiên giao dịch (transaction) 8
2.2.7 Các dịch vụ (services) 9
2.2.8 Tài khoản Google (google accounts) 9
2.2.9 Các công cụ lập trình (programming tools) 10
2.3 Hạn chế của Google App Engine 11
3 Xây dựng và triển khai ứng dụng 12
3.1 Chuẩn bị: 12
3.2 Đăng kí tài khoản Google App Engine 12
3.3 Tạo project Guestbook 17
3.3.1 Giới thiệu 17
3.3.2 Tạo Project 18
3.4 Các file cài đặt trong project 20
3.4.1 Lớp Servlet 20
3.4.2 File guestbook.jsp 22
3.4.3 File web.xml 25
3.4.4 File appengine-web.xml 26
3.5 Triển khai ứng dụng 27
Trang 23.5.1 Chuẩn bị 27
3.5.2 Dịch và chạy chương trình 28
3.6 Upload ứng dụng lên Google App Engine 31
3.7 Sử dụng ứng dụng 32
4 Kết luận 36
5 Tài liệu tham khảo 37
Trang 3Danh mục hình ảnh
Hình 3-1: Đăng nhập bằng tài khoản Google 12
Hình 3-2: Màn hình chào mừng Google App Engine 13
Hình 3-3: Nhập số điện thoại để nhận mã xác minh 13
Hình 3-4: Nhập mã xác minh 14
Hình 3-5: Nhập thông tin cho Application 15
Hình 3-6: Hoàn tất tạo Application 15
Hình 3-7: Thông báo tạo Application thành công 15
Hình 3-8: Danh sách các Application của tài khoản 16
Hình 3-9: Danh sách các Application của tài khoản hochisi@gmail.com dùng trong bài tập 16
Hình 3-10: Giao diện của trang ứng dụng Guestbook 17
Hình 3-11: Tạo mới Project 18
Hình 3-12: Chọn kiểu project là Web Application Project 18
Hình 3-13: Đặt tên cho project 19
Hình 3-14: Cấu trúc của project Guestbook 20
Hình 3-15: Nhập thông tin ID của Google App Engine 27
Hình 3-16: Dịch và chạy ứng dụng 28
Hình 3-17: Lựa chọn cách chạy của project 28
Hình 3-18: Màn hình thông tin biên dịch project 29
Hình 3-19: Cửa sổ nhắc chạy ứng dụng bằng URL 29
Hình 3-20: Giao diện ứng dụng Guestbook 30
Hình 3-21: Đăng nhập vào hệ thống 31
Hình 3-22: Upload ứng dụng lên Google App Engine 32
Hình 3-23: Giao diện ứng dụng khi chạy qua Internet bằng URL 33
Hình 3-24: Màn hình đăng nhập thông tin người dùng Guestbook 34
Hình 3-25: Status của Application 34
Hình 3-26: Biểu đồ hoạt động của Application 35
Trang 41 M đ u ở đầu ầu
Trước khi đi vào phần giới thiệu về Google App Engine, chúng ta cần làm
rõ khái niệm điện toán đám mây Điện toán đám mây (Cloud Computing, haycòn biết đến với tên gọi “Điện toán máy chủ ảo”) là môi trường tính toán dựatrên internet mà ở đó tất cả phần mềm, dữ liệu, tài nguyên được cung cấp chomáy tính và các thiết bị khác theo nhu cầu
Thuật ngữ “đám mây” ở đây là lối nói ẩn dụ chỉ mạng Internet và như mộtliên tưởng về độ phức tạp của các cơ sở hạ tầng chứa trong nó
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ậnhà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đó
Một số nền tảng điện toán đám mây hiện nay: Google App Engine,Windows Azure, Amazone Webservice, Sun Cloud, Facebook, …
Google App Engine (App Engine hay GAE) là một nền tảng điện toánđám mây của Google để phát triển và lưu trữ ứng dụng web trong những trungtâm dữ liệu do Google quản lý (google-managed data centers) Bản beta đượcgiới thiệu lần đầu tiên vào ngày 7 tháng 4 năm 2008 “Google App Engine” làmột nền tảng hosting bao gồm web server, cơ sở dữ liệu BigTable and kho lưu
trữ file GFS Google App Engine cho phép ta viết ứng dụng web dựa trên cơ sở
hạ tầng của Google
Ứng dụng App Engine rất dễ xây dựng, dễ bảo trì, và dễ dàng để mở rộngquy mô Khi nói đến “ứng dụng web”, chúng ta muốn nói tới các ứng dụng haydị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áctrang 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
Với App Engine, ta không cần quan tâm là trang web của mình được lưutrữ như thế nào (kể cả database đi kèm), mà chỉ cần quan tâm đến việc phát triển
Trang 5ứng dụng theo các API do Google cung cấp Với App Engine, không cần máychủ để duy trì: ta chỉ cần tải ứng dụng của mình, và nó sẵn sàng để phục vụngười dùng.
Người sử dụng có thể sử dụng tên miền riêng của mình thông qua GoogleApps cung cấp, hoặc có thể dùng sub-domain miễn phí của appspot.com
Thực ra, GAE được thiết kế để lưu trữ những ứng dụng và phục vụ nhiềungười dùng một cách đồng thời Khi một ứng dụng có thể phục vụ nhiều ngườidù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ự cogiãn (scales) Những ứng dụng được viết cho App Engine sẽ được co giãn mộtcách tự động Càng nhiều người sử dụng chương trình, App Engine sẽ tạo racàng nhiều tài nguyên cho ứng dụng đó và quản lý chúng Chính bản thân ứngdụ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 haycác server có chức năng tự quản lý, với Google App Engine, chúng ta chỉ phảitrả 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ênnà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ókhoảng 1 GB lưu trữ, một lượng tài nguyên miễn phí đủ để chạy những ứngdụ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ễnphí, một ứng dụng có thể đạt tới 5 triệu lượt truy cập trong một tháng
Trong phạm vi đề tài này, nhóm chúng tôi sẽ trình bày một cách tổng quátcác vấn đề cần quan tâm về hệ thống Google App Engine như: kiến trúc, cácthành phần, các bước để xây dựng ứng dụng trên Google App Engine Đồngthời, đề tài cũng minh họa một ứng dụng cụ thể đã triển khai trên Google AppEngine
Trang 62 Tìm hi u v Google App Engine ểu về Google App Engine ề Google App Engine
2.1 Ki n trúc ho t đ ng ến trúc hoạt động ạt động ộng
Kiến trúc của App Engine khác với những server lưu trữ ứng dụng webthông thường Ở phần lõi của nó, App Engine sẽ hạn chế những truy cập từ ứngdụ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ácsocket, chạy các tiến trình ngầm, hay các cách đi khác bằng cổng sau để giúpchương trình của ta có quyền trên môi trường này 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âydựng dựa trên khái niệm có thể mở rộng theo chiều ngang, nghĩa là thay vì ứngdụ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ạytrên nhiều phần cứng yếu hơn
Ứng dụng App Engine chạy như một thực thể cô lập trong môi trườnggồm nhiều thành phần (multitenant environment) App Engine chia sẻ nhữngnguồ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ữanhữ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ácdịch vụ của Google, như 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ụ: cổng 8888
Xem xét kỹ hơn một chút, giả sử App Engine là một tòa nhà có gắng 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ủacă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ácdị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ượngdatastore 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
Trang 72.2 Các thành ph n chính và ch c năng ầu ức năng
2.2.1 Môi tr ường thực thi (runtime environment) ng th c thi (runtime environment) ực thi (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ườidùng gửi một yêu cầu truy cập vào ứng dụng thông qua giao thức HTTP KhiApp Engine nhận được yê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 <tên bạn>.appspot.com (cung cấp miễn phí mỗi ứngdụ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ớiGoogle Apps App Engine lựa chọn một máy chủ từ nhiều máy chủ để xử lý cácyê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 ứngdụng và trả về cho người dùng thông qua trình duyệt web
Google App Engine cung cấp hai môi trường thực thi tốt cho các ứngdụng Đó là Java và Python Môi trường chúng ta chọn sẽ phụ thuộc vào ngônngữ và những công nghệ liên quan khi chúng ta dùng để phát triển ứng dụng
Môi trường Java thực thi các ứng dụng được viết cho JVM6 Ứng dụng cóthể được phát triển dựa vào ngôn ngữ lập trình Java hoặc hầu hết các ngôn ngữ
có thể biên dịch và chạy trên JVM: ví dụ PHP (dùng Quercus), Ruby (dùngJRuby), Javascript (dùng Rhino), Scala, Groovy App Engine cũng hỗ trợGoogle Web Tootkit (GWT)
Môi trường Python thực thi các ứng dụng được viết dựa vào ngôn ngữ lậptrình Python bản 2.5 App Engine gọi các ứng dụng Python nhờ vào CGI(Common Gateway Interface) Ứng dụng có thể dùng hầu hết các thư viện củaPython, các framework của Python như Django, web2py, Pylons
Cả hai môi trường Java và Python đều sử dụng chung một mô hình: mộtyêu cầu gửi đến ứng dụng trên server, ứng dụng được kích hoạt (nếu cần thiết),gọi bộ phận xử lý yêu cầu và trả về kết quả cho client Mỗi môi trường sử dụng
bộ tiền xử lý (interpreter) cho riêng mình (JVM hay Python)
2.2.2 Các file server tĩnh (static file servers)
Hầu hết các website có một số tài nguyên mà chúng chuyển đến các trìnhduyệt không thay đổi trong suốt hoạt động của site Ví dụ như các hình ảnh vàcác file Css hỗ trợ hiển thị của site, các đoạn mã Javascript chạy trên trìnhduyện, và các file HTML tĩnh Vì việc gửi những file này không cần đến việc
Trang 8gọi code của ứng dụng, nói cách khác, việc này không cần thiết, làm giảm hiệnquả làm việc của các server ứng dụng.
Thay vì thế, App Engine cung cấp một tập các server tách biệt chuyên làmnhiệm vụ trao đổi các file tĩnh này Những server nói trên tối ưu hóa cho kiếntrúc bên trong và hạ tầng mạng để xử lý các requests cho các tài nguyên tĩnh.Đối với client, các file tĩnh này cũng giống như các tài nguyên khác được cungcấp bởi ứng dụng của chúng ta
Chúng ta upload các file tĩnh cùng với code ứng dụng Chúng ta có thểcấu hình vài cách hiển thị nhất định cho các file này, bao gồm các URL cho filetĩnh, loại nội dung, và các hướng dẫn cho trình duyệt để lưu các bản sao file nàytrong bộ nhớ cache để giảm lưu lượng và tăng tốc cho trang web
2.2.3 Kho d li u (datastore) ữ liệu (datastore) ệu (datastore)
Hầu hết mọi ứng dụng web đều cần một nơi để chứa thông tin khi xử lýyêu cầu từ phía client và lấy thông tin cho những lần yêu cầu sau này Việc sửdụng một server làm một trung tâm dữ liệu là một ý tưởng rất hay nhưng có vấn
đề xảy ra khi quá nhiều kết nối được gửi tới server này
Hệ thống database của Google App Engine gần giống như một đối tượngdatabase Thiết kế của App Engine datastore chỉ là trừu tượng để cho AppEngine có thể xử lý việc phân tán và co giãn các ứng dụng Chính vì thế trongcác đoạn mã của chúng ta sẽ quan tâm đến những thứ khác được nêu sau đây
2.2.4 Th c th (entities) và Thu c tính (properties) ực thi (runtime environment) ểu về Google App Engine ộng
Một ứng dụng App Engine có thể chứa dữ liệu trong một hay nhiều thựcthể datastore Mỗi thực thể có một hay nhiều thuộc tính, mỗi thuộc tính đều cótên và giá trị Mỗi thực thể đều được phân loại để tiện cho việc truy vấn
Ở cái nhìn đầu tiên, chúng ta thấy thực thể có thể gần giống các hàng(row) trong một bảng trong cơ sở dữ liệu quan hệ Và mỗi thuộc tính có thểgiống với một cột Tuy nhiên đối với các thực thể cùng loại với nhau có thể cócác thuộc tính khác nhau Thứ 2, các thực thể có thể có cùng thuộc tính với cácthực thể cùng loại khác nhưng khác về kiểu dữ liệu Một điểm khác nhau nữagiữa thực thể và các hàng (row) là các thực thể có thể có nhiều giá trị cho mộtthuộc tính đơn lẻ
Mỗi thực thể có một khóa riêng (key) phân biệt lẫn nhau được cung cấpbởi ứng dụng hoặc do App Engine Khác với CSDL quan hệ, khoá của thực thể
Trang 9không phải là thuộc tính, nó tồn tại độc lập với thực thể Khoá của thực thểkhông được thay đổi khi thực thể đã được tạo ra.
2.2.5 Truy v n (queries) và Ch m c (indexes) ấn (queries) và Chỉ mục (indexes) ỉ mục (indexes) ục lục
Một câu truy vấn trên datastore trả về không hoặc nhiều thực thể cùng loạivới nhau Nó cũng có thể trả về các khóa của thực thể Câu truy vấn có thể dựavào các giá trị thuộc tính của thực thể và được sắp xếp theo giá trị của thuộctính Câu truy vấn cũng có thể làm việc với các khóa của thực thể
Với App Engine, mỗi câu truy vấn sẽ có một chỉ mục trong datastore Khiứng dụng cần thực hiên một câu truy vấn, thì datastore sẽ tìm chỉ mục của câutruy vấn đó Khi chúng ta tạo mới một thực thể và cập nhật cái cũ thì datastorecũng sẽ cập nhật lại chỉ mục Điều này giúp cho câu truy vấn được nhanh hơn
2.2.6 Phiên giao d ch (transaction) ịch (transaction)
Khi một ứng dụng có quá nhiều client liên tục đọc hay ghi cùng một dữliệu ở cùng một thời điểm, thì phiên giao dịch rất cần thiết để dữ liệu không bịđọc sai Mỗi phiên giao dịch là đơn vị nhỏ nhất và chỉ có hai trạng thái là thànhcông hoặc thất bại
Một ứng dụng đọc hay cập nhật nhiều thực thể trong một phiên giao dịch,nhưng nó phải nói cho App Engine biết những thực thể nào sẽ được cập nhật khi
nó tạo ra nhiều thực thể Ứng dụng làm được điều này bởi việc tạo ra nhóm thựcthể Nhờ nhóm thực thể, App Engine sẽ biết được các thực thể sẽ phân tán nhưthế nào qua các server, vì thế nó có thể khẳng định chắc chắn là phiên giao dịchthành công hay thất bại App Engine cũng hỗ trợ những phiên giao dịch nội bộ(local transaction)
Nếu một người dùng cố gắng cập nhật một thực thể trong khi người khácđang cập nhật thực thể đó thì datastore sẽ ngay lập tức trả về một biệt lệ báo lỗi.Trong thuật ngữ database, thì ta nói App Engine sử dụng “optimisticconcurrency control” Với chỉ mục và “optimistic concurrency control”, AppEngine được thiết kế giúp cho ứng dụng có thể đọc dữ liệu nhanh hơn và đảmbảo hơn
Trang 10lấy dữ liệu một cách bình thường trên datastore Memcache lưu trữ dữ liệu trên
bộ nhớ thay vì trên ổ đĩa để tăng tốc độ truy cập Nó cũng phân tán nhưdatastore tuy nhiên không lưu trữ, vì thế nếu mất điện thì dữ liệu trên memcachecũng mất Và nó cũng có nhiều giới hạn sử dụng hơn datastore Việc sử dụngmemcache tốt nhất là lưu lại các kết quả của các câu query hay các tính toántrước đó Ứng dụng sẽ kiểm tra trong memcache, nếu không có dữ liệu thì sẽtiến hành query trên datastore
Ứng dụng App Engine có thể truy cập các tài nguyên web khác nhờ vàodịch vụ URL Fetch Dịch vụ này tạo ra các yêu cầu theo dạng HTTP gửi đến cácserver khác trên Internet như là việc tương tác với các web service khác Vì khi
ta truy cập đến server khác thời gian sẽ lâu nên URL Fetch hỗ trợ chạy ngầmbên dưới trong khi xử lý các yêu cầu khác
Ứng dụng App Engine có thể gửi mail dựa vào dịch vụ Mail, hoặc nếuđược cấu hình, nó có thể nhận được email
Ứng dụng App Engine có thể gửi và nhận những tin nhắn đến các dịch vụchat có sử dụng giao thức XMPP bao gồm Google Talk
2.2.8 Tài kho n Google (google accounts) ản Google (google accounts)
Các chức năng của App Engine tích hợp trong các tài khoản của Googlenhư Google Mail, Google Docs và Google Calendar Chúng ta có thể sử dụng tàikhoản trên Google như cho các ứng dụng của chúng ta, do đó không cần thiếtlập thêm Và nếu các người dùng của chúng ta đã có tài khoản trên Google, họ
có thể đăng nhập vào ứng dụng của chúng ta với các tài khoản đó, mà không cầntạo tài khoản riêng trong ứng dụng Tất nhiên, điều đó không bắt buộc Chúng taluôn có thể xây dựng hệ thống tài khoản riêng của mình, hoặc sử dụng mộtprovider OpenID
2.2.9 Các công c l p trình (programming tools) ục lục ập trình (programming tools)
Google cung cấp một số tool miễn phí cho việc phá triển ứng dụng AppEngine bằng ngôn ngữ Java và Python Chúng ta có thể download softwaredevelopment kit (SDK) cho ngôn ngữ tương ứng và hệ điều hành của chúng ta
từ website Google Người dùng Java có thể down SDK cho Java trong formplug-in cho Eclipse Người dùng Python sử dụng Windows hoặc Mac OS X cóthể tải SDK cho Python từ form của giao diện ứng dụng Các SDK đó đều cófile zip, sử dụng command-lines để trực tiếp tích hợp vào môi trường phát triểnhoặc xây dựng hệ thống
Trang 11Mỗi SDK bao gồm một server web chạy ứng dụng của chúng ta tại máy
cá nhân, đóng vai trò môi trường thực thi,kho dữ liệu và các service Server này
tự động phát hiện những thay đổi trong file source và load lại chúng nếu cần, vìthế chúng ta có thể luôn mở server trong khi đang lập trình cho ứng dụng
Nếu chúng ta sử dụng Eclipse, chúng ta có thể chạy server cho Java trong
bộ tích hợp debugger, và có thể đặt các breakpoint trong code Chúng ta cũng cóthể sử dụng Eclipse cho ứng dụng phát triển Python dùng PyDev, một nhánh mởrộng của Eclipse, bao gồm bộ debugger cho Python
Mỗi SDK cũng bao gồm một công cụ cho việc tương tác với các ứngdụng chạy trên App Engine Chủ yếu là sử dụng cho việc upload code lên AppEngine Chúng ta cũng có thể sử dụng tool để download các file log từ ứng dụngđang chạy, hoặc quản lý danh mục ứng dụng
SDK Python và Java gồm một chức năng mà chúng ta có thể cài đặt trongứng dụng cho việc truy cập có thứ tự từ xa một cách an toàn đến ứng dụng SDKPython bao gồm các công cụ dùng cho việc xử lý dữ liệu lớn, như upload dữ liệu
từ file text, và tải lượng lớn dữ liệu, hoặc sao lưu cho mục đích lưu trữ SDKcũng có command-line shell của Python cho việc test, kiểm lỗi và thao tác với
dữ liệu (Các tool này có trong SDK cho Python, nhưng cũng làm việc với cácứng dụng Java sử dụng phiên bản Java có chức năng truy cập từ xa) Chúng ta
có thể viết đoạn mã script và chương trình sử dụng chức năng truy cập từ xa choviệc vận chuyển lượng lớn dữ liệu và các biện pháp bảo trì khác
2.3 H n ch c a Google App Engine ạt động ến trúc hoạt động ủa Google App Engine
• App Engine hỗ trợ HTTPS đối với domain con của appspot.com nhữngvẫn chưa hỗ trợ đối với các domain khác
• Hiện Google App Engine hỗ trợ 2 loại ngôn ngữ là: Python, Java
(Một số ngôn ngữ khác như PHP cũng có thể chạy được nếu cài cùng với
bộ chuyển từ PHP sang Java)
• Phụ thuộc hoàn toàn vào các dịch vụ của Google
• Microsoft, … sẽ chẳng bao giờ mua sản phẩm được xây dựng trên nềntảng của đối thủ
Trang 12• Các nhà đầu tư e ngại vì toàn bộ dữ liệu của mình đều nằm trong tay nhàcung cấp dịch vụ, dù cho đó là Google.
Trang 133 Xây d ng và tri n khai ng d ng ực thi (runtime environment) ểu về Google App Engine ức năng ục lục
3.1 Chu n b : ẩn bị: ịch (transaction)
- JDK 1.6
- Bộ công cụ hỗ trợ lập trình Java Eclipse
- Google plugin cho Eclipse
- AppEngine-java-SDK-1.8.2
3.2 Đăng kí tài kho n Google App Engine ản Google (google accounts)
Để triển khai các ứng dụng trên dịch vụ điện toán đám mây của Google, tacần một tài khoản AppEngine thông qua tài khoản email của Google
Ta thực hiện đăng ký như sau:
Vào trình duyệt, mở trang http://appengine.google.com/ và đăng nhập với thông
tin tài khoản Gmail
Hình 3-1: Đăng nhập bằng tài khoản Google
Sau khi đăng nhập, giao diện tiếp theo xuất hiện cho phép người dùng tạo các ứng dụng – Application Ta bấm vào nút Create Application để bắt đầu tạo một ứng dụng
Trang 14Hình 3-2: Màn hình chào mừng Google App EngineLần đầu tiên tạo Application, hệ thống sẽ yêu cầu xác minh tài khoản bằng mật mã Ta nhập số điện thoại, nhận mã xác minh và nhập vào như các bước dưới đây.
Hình 3-3: Nhập số điện thoại để nhận mã xác minh
Trang 16Hình 3-5: Nhập thông tin cho Application
Sau khi nhập xong thông tin, ta check vào mục I accept these tems và bấmnút Create Application bên dưới để hoàn tất
Hình 3-6: Hoàn tất tạo ApplicationMàn hình tiếp theo thông báo quá trình tạo Application đã thành công
Hình 3-7: Thông báo tạo Application thành công
Khi đã có Application, khi vào trang chủ appengine.com với tài khoản đã đăng nhập, ta thấy xuất hiện danh sách các Application của mình
Trang 17Hình 3-8: Danh sách các Application của tài khoản
Trong bài tập này, tác giả sử dụng tài khoản hochisi@gmail.com đã đăng
kí ứng dụng có định danh là chisi-qnu, như hình dưới
Hình 3-9: Danh sách các Application của tài khoản hochisi@gmail.com dùng
trong bài tậpVậy là việc tạo Application trên trang appengine.com đã xong Công việctiếp theo là ta xây dựng project trên môi trường Eclipse, sau đó upload lênApplication đã tạo để chạy
Trang 183.3 T o project Guestbook ạt động
3.3.1 Gi i thi u ới thiệu ệu (datastore)
Các ứng dụng App Engine Java sử dụng các chuẩn java servlet để tươngtác với môi trường máy chủ web Các file của một ứng dụng bao gồm: các fileclass đã được biên dịch từ file java, các file JAR của bộ thư viện, các file tĩnh(css,…) và các file xml cấu hình Tất cả được sắp xếp theo một cấu trúc thưmục và nằm trong thư mục WAR
Trong ứng dụng minh họa này, nhóm tác giả trình bày chi tiết các bước đểtạo một ứng dụng có tên Guestbook, ứng dụng này khi khởi chạy trên web sẽcho người dùng có thể nhập các dòng message và post lên trang web, thông tincủa người dùng có thể là thông tin đăng nhập từ 1 tài khoản gmail hoặc là vôdanh Nhìn chung, ứng dụng minh họa này giống như chương trình chat-roomtrên các diễn đàn ta thường thấy!
Hình 3-10: Giao diện của trang ứng dụng Guestbook
Trang 193.3.2 T o Projectạt động
Từ môi trường eclipse, ta tạo một project đặt tên là Guestbook, tênpackage là guestbook
Hình 3-11: Tạo mới Project
Giao diện tiếp theo, ta chọn mục Goole/Web Application Project Next đểtiếp tục
Hình 3-12: Chọn kiểu project là Web Application Project
Đặt tên cho project là Guestbook và tên package là guestbook BấmFinish để hoàn tất
Trang 20Hình 3-13: Đặt tên cho project
Như hình bên dưới, bên trong Guestbook có 2 thư mục ta cần quan tâm:một thư mục mang tên /src để chứa mã nguồn java và một thư mục /war đểchứa các file class được biên dịch từ file nguồn java Thư mục war được xem làmột ứng dụng hoàn chỉnh dùng để up lên Google App