Google App Engine

**Google App Engine** (gọi tắt là **GAE** hay **App Engine**) là một môi trường phát triển ứng dụng dựa trên công nghệ điện toán đám mây. Ở đó Google cung cấp một hệ thống gồm: ngôn ngữ lập trình, hệ cơ sở dữ liệu, các thư viện lập trình, người lập trình sẽ viết ứng dụng và ứng dụng này sẽ chạy trên các máy chủ của Google.

Google App Engine được cung cấp miến phí cho mỗi ứng dụng trong một giới hạn, khi các ứng dụng vượt qua mức quá hạn mức thì phải trả thêm khoản phí cho mức vượt quá này.

## Các nền tảng được hỗ trợ
Hiện App Engine hỗ trợ hai loại ngôn ngữ chính là: Python và Java hiện tại thêm ngôn ngữ Go (đang ở mức thử nghiệm). Một số ngôn ngữ khác như PHP cũng có thể chạy được nếu cài cùng với bộ chuyển từ PHP sang Java.

## Danh sách các thư viện dịch vụ
*App Identity (Python, Java, Go) 
*Blobstore (Python, Java, Go)
*Capabilities (Python, Java, Go)
*Channel (Python, Java, Go)
*Google Cloud Endpoints (Python, Java, Go)
*Images (Python, Java, Go): xử lý hình ảnh
*Logs (Python, Java, Go): ghi nhật ký
*Mail (Python, Java, Go): dịch vụ gửi thư điện tử
*Memcache (Python, Java, Go): cache
*Multitenancy (Python, Java, Go)
*OAuth (Python, Java, Go): đăng nhập sử dụng OAth
*Prospective Search (Python, Java, Go)
*Search (Python, Java, Go): tìm kiếm
*Task Queues (Python, Java, Go): lập lịch công việc cho máy chủ
*Sockets (Python, Java, Go)
*URL Fetch (Python, Java, Go)
*Users (Python, Java, Go): thông tin người dùng đang đăng nhập
*XMPP (Python, Java, Go)

## Giới hạn
*Các tệp tin khi lưu trữ lên App Engine chỉ có thể đọc-xóa (không sửa chữa).
*App Engine chỉ có thể chạy qua các yêu cầu HTTP (các dịch vụ khác có thể chạy lệnh qua Console terminal) (Các task queue cũng chạy thông qua yêu cầu HTTP).
*Các ứng dụng dùng python có thể sử dụng các thư viện python ngoài các thư viện được cung cấp bởi App Engine nhưng phải là các thư viện viết bằng python C và Pyrex không được hỗ trợ.
*Các ứng dụng java chỉ sử dụng được tập các (The JRE Class White List) các lớp viết từ JRE tiêu chuẩn.
*Không hỗ trợ tên miền 'naked' (không có tiền tố www) ví dụ ***' sẽ không chạy trên Appengine mà phải là ***'
*Datastore không lọc (filter) được hai thuộc tính cùng một lúc ví dụ *age > 4 and age < 10*.

## Sự khác biệt với các dịch vụ khác
So với các dịch vụ điện toán đám mây khác như Amazon EC2, hoặc với các hình thức viết trên máy chủ dịch vụ truyền thống App Engine cung cấp một môi trường thuận lợi hơn để viết đặc biệt cho các ứ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 là phải viết trên các dịch vụ mà App Engine cung cấp. App Engine giải quyết các khó khăn trong việc phát triển và quản trị hệ thống khi xây dựng một ứng dụng lớn (hàng trăm yêu cầu trên giây).

Khi các mô hình khác yêu cầu người dùng cài đặt và thiết lập cấu hình thì App Engine chỉ cần một màn hình quản trị để quản trị cũng như mở rộng hay thu nhỏ mức cung ứng dịch vụ.

## Các dịch vụ tương tự
* Amazon Web Services
* Engine Yard
* Heroku
* Force.com
* Skytap
* VMware
* Rackspace Cloud
* GoGrid
* Windows Azure
* OpenShift
* Jelastic

## Tham khảo

## Liên kết ngoài
* 
* Google App Engine - Run your web applications on Google's infrastructure - a technical talk by Google engineer Guido van Rossum at Stanford University. (online video archive )
* Java Frameworks and libraries supported 
* Web2py book -- online documentation -- Google App Engine deployment recipe 
* Google Cloud SQL Sample Projects