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.
Mục lục Danh mục hình ảnh Mở đầu Trước vào phần giới thiệu Google App Engine, 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 tốn máy chủ ảo”) mơi trường tính tốn dựa internet mà tất phần mềm, liệu, tài nguyên cung cấp cho máy tính thiết bị khác theo nhu cầu Thuật ngữ “đám mây” lối nói ẩn dụ mạng Internet liên tưởng độ phức tạp sở hạ tầng chứa Nói cách đơn giản nhất, ứng dụng điện tốn đám mây ứng dụng trực tuyến Internet Trình duyệt nơi ứng dụng hữu vận hành liệu lưu trữ xử lý máy chủ nhà cung cấp ứng dụng Một số tảng điện toán đám mây nay: Google App Engine, Windows Azure, Amazone Webservice, Sun Cloud, Facebook, … Google App Engine (App Engine hay GAE) tảng điện toán đám mây Google để phát triển lưu trữ ứng dụng web trung tâm liệu Google quản lý (google-managed data centers) Bản beta giới thiệu lần vào ngày tháng năm 2008 “Google App Engine” tảng hosting bao gồm web server, sở 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 sở hạ tầng Google Ứng dụng App Engine dễ xây dựng, dễ bảo trì, dễ dàng để mở rộng quy mơ Khi nói đến “ứng dụng web”, muốn nói tới ứng dụng hay dịch vụ truy cập trang web, thường thông qua trình duyệt web: trang web mua bán, mạng xã hội, … App Engine phục vụ trang web truyền thống xử lý văn hay hình ảnh thiết kế dành cho thời gian thực Với App Engine, ta không cần quan tâm trang web lưu trữ (kể database kèm), mà cần quan tâm đến việc phát triển ứng dụng theo API Google cung cấp Với App Engine, không cần máy chủ để trì: ta cần tải ứng dụng mình, sẵn sàng để phục vụ người dùng Người sử dụng sử dụng tên miền riêng thơng qua Google Apps cung cấp, dùng sub-domain miễn phí appspot.com Thực ra, GAE thiết kế để lưu trữ ứng dụng phục vụ nhiều người dùng cách đồng thời Khi ứng dụng phục vụ nhiều người dùng cách đồng thời mà không làm giảm hiệu suất, gọi co giãn (scales) Những ứng dụng viết cho App Engine co giãn cách tự động Càng nhiều người sử dụng chương trình, App Engine tạo nhiều tài nguyên cho ứng dụng quản lý chúng Chính thân ứng dụng khơng cần phải biết đến tài ngun mà sử dụng Khơng server cung cấp dịch vụ lưu trữ thơng thường hay server có chức tự quản lý, với Google App Engine, phải trả tiền cho tài nguyên mà sử dụng Những tài nguyên đo gigabyte lệ phí hàng tháng hay lệ phí để thay đổi diện mạo trang web Hóa đơn tốn nguồn tài ngun bao gồm CPU sử dụng, lưu trữ hàng tháng, băng thông vào (incoming and outgoing bandwidth), số tài nguyên khác dịch vụ App Engine Để giúp làm quen với GAE, lập trình viên có khoảng GB lưu trữ, lượng tài nguyên miễn phí đủ để chạy ứng dụng nhỏ với băng thông thấp Google dự tốn với nguồn tài ngun miễn phí, ứng dụng đạt tới triệu lượt truy cập tháng Trong phạm vi đề tài này, nhóm chúng tơi trình bày cách tổng qt vấn đề cần quan tâm hệ thống Google App Engine như: kiến trúc, thành phần, bước để xây dựng ứng dụng Google App Engine Đồng thời, đề tài minh họa ứng dụng cụ thể triển khai Google App Engine Tìm hiểu Google App Engine 2.1 Kiến trúc hoạt động Kiến trúc App Engine khác với server lưu trữ ứng dụng web thông thường Ở phần lõi nó, App Engine hạn chế truy cập từ ứng dụng đến sở hạ tầng vật lý, ngăn cản từ việc mở socket, chạy tiến trình ngầm, hay cách khác cổng sau để giúp chương trình ta có quyền mơi trường App Engine thiết kế để giải mối quan tâm mở rộng độ tin cậy Nó xây dựng dựa khái niệm mở rộng theo chiều ngang, nghĩa thay ứng dụng chạy phần cứng mạnh mẽ, chạy nhiều phần cứng yếu Ứng dụng App Engine chạy thực thể cô lập môi trường gồm nhiều thành phần (multitenant environment) App Engine chia sẻ nguồn tài nguyên ứng dụng cô lập liệu bảo mật thành phần với Ứng dụng sử dụng số dịch vụ Google, URLFetch Bởi mở cổng (port) cách trực tiếp ứng dụng mình, nên phải lệ thuộc vào dịch vụ này, ví dụ: cổng 8888 Xem xét kỹ chút, giả sử App Engine tịa nhà có gắng hệ thống điều hịa khơng khí nhiệt độ Chúng ta phần nhà (chính xác ứng dụng chúng ta) Chúng ta điều chỉnh nhiệt độ cách trực tiếp ảnh hưởng đến phần khác tòa nhà (các ứng dụng khác) Vì vậy, phải gửi yêu cầu đến người chủ nhà để nhờ họ thay đổi nhiệt độ cho Chính xác dịch vụ GAE URLFetch, Bigtable query, Memcache, mail, XMPP, dịch vụ khác Đó chất xảy App Engine Như vậy, GAE, tùy vào ứng dụng viết theo ngơn ngữ nào, chạy mơi trường Java hay Python tương ứng Song song đó, cung cấp sử dụng miễn phí dịch vụ google URL Fetch, Mail, Memcache, … lưu trữ sở liệu hướng đối tượng datastore Khi yêu cầu gửi lên từ phía người dùng, GAE chuyển yêu cầu cho ứng dụng Tùy theo việc xử lý chúng mà ta cấu hình sử dụng ứng dụng thích hợp GAE 2.2 Các thành phần chức 2.2.1 Môi trường thực thi (runtime environment) Một ứng dụng App Engine đáp ứng yêu cầu web Một yêu cầu web bắt đầu có người dùng hay điển hình trình duyệt web người dùng gửi yêu cầu truy cập vào ứng dụng thông qua giao thức HTTP Khi App Engine nhận yêu cầu, xác định ứng dụng dựa vào tên miền, tên miền .appspot.com (cung cấp miễn phí ứng dụng) tên miền riêng đăng kí thiết lập với Google Apps App Engine lựa chọn máy chủ từ nhiều máy chủ để xử lý yêu cầu Sau đó, App Engine gửi yêu cầu nhận từ người dùng đến ứng dụng phù hợp để xử lý, sau xử lý xong ứng dụng gửi liệu trả cho App Engine, App Engine nhận liệu phản hồi từ ứng dụng trả 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 ứng dụng Đó Java Python Môi trường chọn phụ thuộc vào ngôn ngữ công nghệ liên quan dùng để phát triển ứng dụng Môi trường Java thực thi ứng dụng viết cho JVM6 Ứng dụng phát triển dựa vào ngơn ngữ lập trình Java hầu hết ngơn ngữ biên dịch chạy JVM: ví dụ PHP (dùng Quercus), Ruby (dùng JRuby), Javascript (dùng Rhino), Scala, Groovy App Engine hỗ trợ Google Web Tootkit (GWT) Môi trường Python thực thi ứng dụng viết dựa vào ngơn ngữ lập trình Python 2.5 App Engine gọi ứng dụng Python nhờ vào CGI (Common Gateway Interface) Ứng dụng dùng hầu hết thư viện Python, framework Python Django, web2py, Pylons Cả hai môi trường Java Python sử dụng chung mơ hình: u cầu gửi đến ứng dụng server, ứng dụng kích hoạt (nếu cần thiết), gọi phận xử lý yêu cầu trả kết cho client Mỗi môi trường sử dụng tiền xử lý (interpreter) cho riêng (JVM hay Python) 2.2.2 Các file server tĩnh (static file servers) Hầu hết website có số tài nguyên mà chúng chuyển đến trình duyệt khơng thay đổi suốt hoạt động site Ví dụ hình ảnh file Css hỗ trợ hiển thị site, đoạn mã Javascript chạy trình duyện, file HTML tĩnh Vì việc gửi file không cần đến việc gọi code ứng dụng, nói cách khác, việc khơng cần thiết, làm giảm làm việc server ứng dụng Thay thế, App Engine cung cấp tập server tách biệt chuyên làm nhiệm vụ trao đổi file tĩnh Những server nói tối ưu hóa cho kiến trúc bên hạ tầng mạng để xử lý requests cho tài nguyên tĩnh Đối với client, file tĩnh giống tài nguyên khác cung cấp ứng dụng Chúng ta upload file tĩnh với code ứng dụng Chúng ta cấu hình vài cách hiển thị định cho file này, bao gồm URL cho file tĩnh, loại nội dung, hướng dẫn cho trình duyệt để lưu file nhớ cache để giảm lưu lượng tăng tốc cho trang web 2.2.3 Kho liệu (datastore) Hầu hết ứng dụng web cần nơi để chứa thông tin xử lý yêu cầu từ phía client lấy thơng tin cho lần yêu cầu sau Việc sử dụng server làm trung tâm liệu ý tưởng hay có vấn đề xảy nhiều kết nối gửi tới server Hệ thống database Google App Engine gần giống đối tượng database Thiết kế App Engine datastore trừu tượng App Engine xử lý việc phân tán co giãn ứng dụng Chính đoạn mã quan tâm đến thứ khác nêu sau 2.2.4 Thực thể (entities) Thuộc tính (properties) Một ứng dụng App Engine chứa liệu hay nhiều thực thể datastore Mỗi thực thể có hay nhiều thuộc tính, thuộc tính có tên giá trị Mỗi thực thể phân loại để tiện cho việc truy vấn Ở nhìn đầu tiên, thấy thực thể gần giống hàng (row) bảng sở liệu quan hệ Và thuộc tính giống với cột Tuy nhiên thực thể loại với có thuộc tính khác Thứ 2, thực thể có thuộc tính với thực thể loại khác khác kiểu liệu Một điểm khác thực thể hàng (row) thực thể có nhiều giá trị cho thuộc tính đơn lẻ Mỗi thực thể có khóa riêng (key) phân biệt lẫn cung cấp ứng dụng App Engine Khác với CSDL quan hệ, khố thực thể khơng phải thuộc tính, tồn độc lập với thực thể Khố thực thể không thay đổi thực thể tạo 2.2.5 Truy vấn (queries) Chỉ mục (indexes) Một câu truy vấn datastore trả không nhiều thực thể loại với Nó trả khóa thực thể Câu truy vấn dựa vào giá trị thuộc tính thực thể xếp theo giá trị thuộc tính Câu truy vấn làm việc với khóa thực thể Với App Engine, câu truy vấn có mục datastore Khi ứng dụng cần thực hiên câu truy vấn, datastore tìm mục câu truy vấn Khi tạo thực thể cập nhật cũ datastore cập nhật lại mục Điều giúp cho câu truy vấn nhanh 2.2.6 Phiên giao dịch (transaction) Khi ứng dụng có nhiều client liên tục đọc hay ghi liệu thời điểm, phiên giao dịch cần thiết để liệu không bị đọc sai Mỗi phiên giao dịch đơn vị nhỏ có hai trạng thái thành công thất bại Một ứng dụng đọc hay cập nhật nhiều thực thể phiên giao dịch, phải nói cho App Engine biết thực thể cập nhật tạo nhiều thực thể Ứng dụng làm điều việc tạo nhóm thực thể Nhờ nhóm thực thể, App Engine biết thực thể phân tán qua server, khẳng định chắn phiên giao dịch thành công hay thất bại App Engine hỗ trợ phiên giao dịch nội (local transaction) Nếu người dùng cố gắng cập nhật thực thể người khác cập nhật thực thể datastore trả biệt lệ báo lỗi Trong thuật ngữ database, ta nói App Engine sử dụng “optimistic concurrency control” Với mục “optimistic concurrency control”, App Engine thiết kế giúp cho ứng dụng đọc liệu nhanh đảm bảo 2.2.7 Các dịch vụ (services) Dịch vụ mối quan hệ datastore với môi trường thực thi GAE bao gồm số dịch vụ hữu ích cho ứng dụng web Dịch vụ memcache dịch vụ lưu trữ theo khóa - giá trị Thuận lợi dịch vụ datastore tốc độ nhanh, nhanh so với việc lưu trữ lấy liệu cách bình thường datastore Memcache lưu trữ liệu nhớ thay ổ đĩa để tăng tốc độ truy cập Nó phân tán datastore nhiên khơng lưu trữ, điện liệu memcache Và có nhiều giới hạn sử dụng datastore Việc sử dụng memcache tốt lưu lại kết câu query hay tính tốn trước Ứng dụng kiểm tra memcache, khơng có liệu tiến hành query datastore Ứng dụng App Engine truy cập tài nguyên web khác nhờ vào dịch vụ URL Fetch Dịch vụ tạo yêu cầu theo dạng HTTP gửi đến server khác Internet việc tương tác với web service khác Vì ta truy cập đến server khác thời gian lâu nên URL Fetch hỗ trợ chạy ngầm bên xử lý yêu cầu khác Ứng dụng App Engine gửi mail dựa vào dịch vụ Mail, cấu hình, nhận email Ứng dụng App Engine gửi nhận tin nhắn đến 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) Các chức App Engine tích hợp tài khoản Google Google Mail, Google Docs Google Calendar Chúng ta sử dụng tài khoản Google cho ứng dụng chúng ta, khơng cần thiết lập thêm Và người dùng có tài khoản Google, họ đăng nhập vào ứng dụng với tài khoản đó, mà khơng cần tạo tài khoản riêng ứng dụng Tất nhiên, điều khơng bắt buộc Chúng ta ln xây dựng hệ thống tài khoản riêng mình, sử dụng provider OpenID 2.2.9 Các cơng cụ lập trình (programming tools) Google cung cấp số tool miễn phí cho việc phá triển ứng dụng App Engine ngôn ngữ Java Python Chúng ta download software development kit (SDK) cho ngôn ngữ tương ứng hệ điều hành từ website Google Người dùng Java down SDK cho Java form plug-in cho Eclipse Người dùng Python sử dụng Windows Mac OS X tải SDK cho Python từ form giao diện ứng dụng Các SDK có file zip, sử dụng command-lines để trực tiếp tích hợp vào môi trường phát triển xây dựng hệ thống Mỗi SDK bao gồm server web chạy ứng dụng máy cá nhân, đóng vai trị mơi trường thực thi,kho liệu service Server tự động phát thay đổi file source load lại chúng cần, ln mở server lập trình cho ứng dụng Nếu sử dụng Eclipse, chạy server cho Java tích hợp debugger, đặt breakpoint code Chúng ta sử dụng Eclipse cho ứng dụng phát triển Python dùng PyDev, nhánh mở rộng Eclipse, bao gồm debugger cho Python Mỗi SDK bao gồm công cụ cho việc tương tác với ứng dụng chạy App Engine Chủ yếu sử dụng cho việc upload code lên App Engine Chúng ta sử dụng tool để download file log từ ứng dụng chạy, quản lý danh mục ứng dụng SDK Python Java gồm chức mà cài đặt ứng dụng cho việc truy cập có thứ tự từ xa cách an toàn đến ứng dụng SDK Python bao gồm công cụ dùng cho việc xử lý liệu lớn, upload liệu từ file text, tải lượng lớn liệu, lưu cho mục đích lưu trữ SDK có command-line shell Python cho việc test, kiểm lỗi thao tác với liệu (Các tool có SDK cho Python, làm việc với ứng dụng Java sử dụng phiên Java có chức truy cập từ xa) Chúng ta viết đoạn mã script chương trình sử dụng chức truy cập từ xa cho việc vận chuyển lượng lớn liệu biện pháp bảo trì khác 2.3 Hạn chế Google App Engine • App Engine hỗ trợ HTTPS domain appspot.com chưa hỗ trợ domain khác • Hiện Google App Engine hỗ trợ loại ngôn ngữ là: Python, Java (Một số ngơn ngữ khác PHP chạy cài với chuyển từ PHP sang Java) • Phụ thuộc hồn tồn vào dịch vụ Google • Microsoft, … chẳng mua sản phẩm xây dựng tảng đối thủ • Các nhà đầu tư e ngại tồn liệu nằm tay nhà cung cấp dịch vụ, Google 10 3.4.3 File web.xml Khi máy chủ web nhận yêu cầu xác định servlet class để gọi cách sử dụng file cấu hình gọi "mơ tả triển khai ứng dụng web." This file is named web.xml , and resides in the war/WEB-INF/ directory in the WAR WEB-INF/ and web.xml are part of the servlet specification File đặt tên web.xml , nằm war/WEB-INF/ thư mục WAR WEB-INF/ web.xml phần đặc tả servlet sign guestbook.SignGuestbookServlet sign /sign 26 guestbook.jsp 3.4.4 File appengine-web.xml App Engine cần tập tin cấu hình bổ sung để tìm cách để triển khai chạy ứng dụng This file is named , and resides in alongside File đặt tên appengine-web.xml , nằm WEB-INF/ với web.xml It includes the registered ID of your application (Eclipse creates this with an empty ID for you to fill in later), the version number of your application, and lists of files that ought to be treated as static files (such as images and CSS) and resource files (such as JSPs and other application data) Nó bao gồm ID đăng ký ứng dụng bạn (Eclipse tạo điều với ID trống để bạn điền vào sau), số phiên ứng dụng bạn, danh sách file phải đối xử file tĩnh (như hình ảnh CSS) file tài nguyên (như JSP liệu ứng dụng khác) In the directory , a file named has the following contents:Trong thư mục war/WEB-INF/ , tập tin có tên appengine-web.xml có nội dung sau đây: chisi-qnu true 1 27 3.5 Triển khai ứng dụng Để upload code file chương trình bạn lên Google App Engine ta dùng tập lệnh có SDK có tên: appcfg.cmd 3.5.1 Chuẩn bị Cần ID application đăng ký google để upload ứng dụng, theo cách đăng ký phần trên, ta có ID application : chisi-qnu Vào thưc mục war/WEB-INF/appengine-web.xml mở file appengine-web.xml lên, đặt ID application vào thẻ save lại hình Hình 3: Nhập thơng tin ID Google App Engine 28 3.5.2 Dịch chạy chương trình Từ giao diện Eclipse, ta bấm nút lệnh Run as Hình 3: Dịch chạy ứng dụng Tiếp theo, ta chọn Web Application, OK Hình 3: Lựa chọn cách chạy project Cửa sổ Console hiển thị thơng tin q trình biên dịch project 29 Hình 3: Màn hình thơng tin biên dịch project Khi biên dịch xong, cửa sổ Development Mode thông điệp đường dẫn URL cục để ta chạy ứng dụng máy tính Cick vào đường dẫn để thực thi ứng dụng Hình 3: Cửa sổ nhắc chạy ứng dụng URL Trên trình duyệt giao diện thực thi ứng dụng web, trang guestbook.jsp Tại đây, người dùng nhập thơng điệp bấm nút Post Greeting để gửi 30 Hình 3: Giao diện ứng dụng Guestbook Click vào link sign out, sau chọn sign in, trang web khác yêu cầu ta đăng nhập Thông tin đăng nhập ID hiển thị dòng thông điệp để biết tên người gửi tin nhắn 31 Hình 3: Đăng nhập vào hệ thống 3.6 Upload ứng dụng lên Google App Engine Sau test ứng dụng thành công local, ta thực đưa ứng dụng lên máy chủ Google App Engine Để làm điều này, ta cần dùng đến công cụ appengine-java-sdk-1.8.2 Các bước thực upload: - Mở cmd windows, ta chuyển trỏ vào thư mục - appengine-java-sdk\bin Dùng lệnh appcfg.cmd để upload: D:\ appengine-java-sdk\bin\appcfg.cmd update D:\workspace\Guestbook\war 32 Hình 3: Upload ứng dụng lên Google App Engine 3.7 Sử dụng ứng dụng Khi ứng dụng sẵn sàng hosting Google App Egine, người dùng chạy ứng dụng cách vào trình duyệt khởi chạy địa Application Trong tập này, URL Application dùng chisiqnu.appspot.com Ta chạy ứng dụng hình đây: 33 Hình 3: Giao diện ứng dụng chạy qua Internet URL Khi chạy ứng dụng thông qua Internet, click vào sign in để đăng nhập, hệ thống nhắc ta đăng nhập vào Guestbook tài khoản Gmail 34 Hình 3: Màn hình đăng nhập thơng tin người dùng Guestbook Khi ứng dụng chạy, trạng thái appengine.google.com Running Hình 3: Status Application 35 Application Và click vào Dashboard, biểu đồ hoạt động thống kê theo thời gian cho biết trình chạy ứng dụng theo chiều dài thời gian Hình 3: Biểu đồ hoạt động Application 36 Kết luận Những két tiểu luận: Thơng qua Tiểu luận tìm hiểu Google App Engine, kiến trúc hoạt động, thành phần chức năng, hạn chế Google App Engine Tìm hiểu định nghĩa thành phần Google App Engine gồm có mơi trường thực thi, Các file server tĩnh, Kho liệu, Thực thể Thuộc tính, Truy vấn Chỉ mục, Phiên giao dịch, Các dịch vụ, Tài khoản Google, Các cơng cụ lập trình Tìm hiểu hạn chế Google App Engine: App Engine hỗ trợ HTTPS domain appspot.com chưa hỗ trợ domain khác Hiện Google App Engine hỗ trợ loại ngôn ngữ là: Python, Java Phụ thuộc hoàn toàn vào dịch vụ Google Microsoft, … chẳng mua sản phẩm xây dựng tảng đối thủ Các nhà đầu tư e ngại tồn liệu nằm tay nhà cung cấp dịch vụ, Google Phần tiểu luận kết việc xây dựng triển khai ứng dụng tạo Guestbook, tiểu luận trình bày chi tiết đăng ký tài khoản, cài đặt chương trình Guest Book Eclipse Và triển khai ứng dụng thành công, tải lên file chương trình lên google App Engine Hướng phát triển : Như bạn thấy tiểu luận này, Google App Engine tải cho tương lai Qua tiểu luận tao có nhìn tổng quan Google App Engine So với dịch vụ điện toán đám mây khác Amazon EC2, với hình thức viết máy chủ dịch vụ truyền thống App Engine cung cấp môi trường thuận lợi để viết đặc biệt cho ứng dụng có nhu cầu mở rộng cho nhiều người dùng đồng thời Nhưng điểm giới hạn phải viết dịch 37 vụ mà App Engine cung cấp App Engine giải khó khăn việc phát triển quản trị hệ thống xây dựng ứng dụng lớn (hàng trăm u cầu giây) Khi mơ hình khác yêu cầu người dùng cài đặt thiết lập cấu hình App Engine cần hình quản trị để quản trị mở rộng hay thu nhỏ mức cung ứng dịch vụ 38 Tài liệu tham khảo Phát triển Java 2.0: chào google App Engine http://www.ibm.com/developerworks/vn/library/j-javadev2-1/ https://developers.google.com/appengine/ Google App Engine http://vi.wikipedia.org/wiki/Google_App_Engine Các ứng dụng Java Facebook google App Engine http://www.ibm.com/developerworks/vn/library/12/j-fb-gae/ Đỗ Thị Phương , “Điện toán đám mây Google ứng dụng xây dựng hệ thống quản lý dịch vụ”, Trường Đại học Quốc gia Hà Nội; Trường Đại học Công nghệ, 2012 Lê Trung Hiếu, Đặng Quốc Toàn, “Giới thiệu Google App Engine” Nguyễn Việt Khoa, “Google App Engine, khơng khó để sử dụng”, Tạp chí lập trình, 2013 Charles Severance, “Using Google App Engine”, O’Reilly Media, 2009 39 ... thống Google App Engine như: kiến trúc, thành phần, bước để xây dựng ứng dụng Google App Engine Đồng thời, đề tài minh họa ứng dụng cụ thể triển khai Google App Engine Tìm hiểu Google App Engine. .. import com .google. appengine.api.datastore.DatastoreServiceFa ctory; import com .google. appengine.api.datastore.Entity; import com .google. appengine.api.datastore.Key; import com .google. appengine.api.datastore.KeyFactory;... http://www.ibm.com/developerworks/vn/library/j-javadev2-1/ https://developers .google. com/appengine/ Google App Engine http://vi.wikipedia.org/wiki /Google_ App_ Engine Các ứng dụng Java Facebook google App Engine http://www.ibm.com/developerworks/vn/library/12/j-fb-gae/