October 13, 2021
Google App Engine Logo

Tổng quan về Google App Engine

Giới thiệu về Google App Engine

Google App Engine (gọi tắt là GAE hay App Engine) 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 trung tâm dữ liệu do Google quản lý (google – managed data centers).
GAE là một dịch vụ lưu trữ các ứng dụng web. Khi nói đến “ứng dụng web”, chúng ta muốn nói tới các ứng dụng hay dịch vụ được truy cập trên các trang web, thường là thông qua trình duyệt web: web mua bán, mạng xã hội… kể cả các trang web truyền thống như xử lý văn bản hay hình ảnh nhưng được thiết kế dành cho thời gian thực.

Google sẽ 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. Khi đó, 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.

GAE được thiết kế để lưu trữ những ứng dụng và phục vụ nhiều người dùng một cách đồng thời. Khi một ứng dụng có thể phục vụ nhiều người dùng một cách đồng thời mà không làm giảm hiệu suất, chúng ta gọi đó là sự co giãn(scale).
Những ứng dụng được viết cho App Engine sẽ được co giãn một cách tự động. Càng nhiều người sử dụng chương trình, App Engine sẽ tạo ra càng nhiều tài nguyên cho ứng dụng đó và quản lý chúng.

Xây dựng, mua, hay mượn? Đó là câu hỏi khó.
Nhiều doanh nghiệp có cả một danh sách phần cứng để chạy các ứng dụng như các cơ sở dữ liệu, các máy chủ ứng dụng, các hệ thống quản lý thay đổi và các công cụ lần vết tìm lỗi. Tuy vậy, ngày nay danh sách này có thể dễ dàng vứt bỏ để thay bằng việc sử dụng chính gói phần mềm ấy dưới dạng một dịch vụ (SaaS) đang chạy trên một cơ sở hạ tầng của người nào đó khác. Toàn bộ chồng ứng dụng mà một nhóm làm việc có thể phải sử dụng để quản lý một quá trình phát triển có thể được vay mượn — nghĩa là, thuê với một khoản phí nhỏ — giải phóng cho công ty khỏi phải đầu tư vào phần cứng để chạy chúng.
Ví dụ, thay vì mua một máy tính để chạy một hệ thống quản lý thay đổi (như Subversion hoặc Git, cả hai là mã nguồn mở và có sẵn miễn phí), một nhóm làm việc có thể sử dụng một dịch vụ quản lý thay đổi dùng chung như GitHub. Công ty đằng sau GitHub phải gánh chịu chi phí của các tài sản phần cứng và tính một chi phí danh nghĩa (thường là hàng tháng cho mỗi người dùng) cho các tổ chức khác sử dụng Git. Cùng một nguyên tắc thuê phần mềm như là một dịch vụ từ các nhà cung cấp khác như thế này có thể được áp dụng cho việc lần vết tìm lỗi, quản lý các bài kiểm thử và quản lý các yêu cầu (ví dụ qua JIRA Hosted hoặc Pivotal Tracker). Cũng có thể nói giống như vậy đối với các tài sản phần cứng nằm dưới mà các nền tảng phần mềm khác (về bản chất, thường là tùy chỉnh) chạy trên đó.
Một doanh nghiệp có thể vứt bỏ phần cứng nằm bên dưới của một ứng dụng web cụ thể để thay bằng việc chạy ứng dụng trên phần cứng được cung cấp bởi Amazon, Google hoặc các đối tác khác. Các công ty này đưa ra khả năng thuê phần cứng ở các mức độ khác nhau, vừa vặn có thể lưu trữ một ứng dụng.
Hơn nữa, các công ty này quản lý khả năng mở rộng, sao lưu và thậm chí cả an ninh nữa. Hãy suy nghĩ về nó một lát: Amazon và Google đã nêu ra những mối quan tâm này (và nhiều hơn nữa) từ lâu rồi và đối phó tốt hơn với chúng, có nhiều đổi mới xung quanh các khía cạnh của việc chạy các nền tảng phần mềm sao cho hiệu quả.
Bằng cách sử dụng App Engine của Google, ví dụ thế, một công ty CNTT có thể hạ thấp tổng chi phí mua một cơ sở hạ tầng để chạy các ứng dụng cần thiết. Và họ có thể triển khai các ứng dụng đó nhanh hơn vì vô số các mối quan tâm đan chéo nhau, kết hợp với việc triển khai ứng dụng và quản lý đã được tính đến và vì thế được cung cấp cho họ (với nhiều khả năng là theo một cách tốt hơn). Nhanh và rẻ không còn có nghĩa là chất lượng thấp.

Không giống như những server cung cấp những dịch vụ thông thường hay các server có chức năng tự quản lý, với GAE chúng ta chỉ phải trả tiền cho những tài nguyên mà chúng ta sử dụng. Những tài nguyên này được đo bằng gigabyte và không có bất kỳ lệ phí hàng tháng nào.
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 tại App Engine hỗ trợ khá nhiều ngôn ngữ như:  Node.js, Java, Ruby, C#, Go, Python, Php. Trong đó Java và Python là 2 ngôn ngữ chính.

Trong GAE, tùy vào ứng dụng viết theo ngôn ngữ nào, nó sẽ được chay trên môi trường tương ứng của ngôn ngữ đó. Bên cạnh đó, chúng ta sẽ được cung cấp miễn phí các dịch vụ của Google như URL Fetch, Mail, Memcache, … và được lưu trữ trên cơ sở dữ liệu hướng đối tượng datastore.

Các thành phần và chức năng của GAE

Môi trường thực thi

GAE cung cấp 2 môi trường tốt là Java và Python cho ứng dụng. Môi trường chúng ta chọn phụ thuộc vào ngôn ngữ và những công nghệ liên quan khi chúng ta dùng để phát triển ứng dụng.

Cả 2 môi trường Java và Python đều sử dụng chung một mô hình: một yêu cầu gửi đến ứng dụng trên server, ứng dụng được kích hoạt, gọi bộ phận xử lý yêu cầu và trả về kết quả cho client.

Các file server tĩnh

Hầu hết các web service có mốt số tài nguyên mà chúng chuyển đến trình duyệt không thay đổi trong suốt hoạt động của site. Ví dụ các hình ảnh và các site Css hỗ trợ hiển thị, các đoạn mã Javascript chạy trên trình duyệt, và các file HTML tĩnh. Việc này làm giảm hiểu quả làm việc của 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àm nhiệm vụ trao đổi các file tĩnh này. Chúng ta upload các file tĩnh cùng với code ứng dụng và có thể cấu hình vài cách hiển thị cho file này dồng thời hướng dẫn cho trình duyệt lưu các bản sao file này trong bộ nhớ cache để giảm lưu lượng và tăng tốc cho web.

Kho dữ liệ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 xử lý sau này. Việc sử dụng một server làm trung tâm dữ liệu là một ý tưởng rất hay nhưng có vấn đề xẩy ra khi có nhiều kết nối đến server này.

Với datastore của GAE vấn đề sẽ được giải quyết với việc xử lý phân tán dữ liệu và “co giãn” ứng dụng.

Thực thể và Thuộc tính

Một ứng dụng App Engine có thể chứa dữ liệu trong một hay nhiều thực thể 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 để dễ truy vấn. Mỗi thực thể có một khóa riêng (key) phân biệt lẫn nhau được cung cấp bổi một ứng dụng hoặc do App Engine. Khác với CSDL quan hệ, khóa của thực thể không phải là thuộc tính, nó tồn tại độc lập với thực thể. Khóa của thực thể không được thay đổi khi thực thể được tạo ra.

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âu truy vấn đó. Khi chúng ta tạo mới một thực thể và cập nhật cái cũ thì datastore sẽ cập nhật lại chỉ mục. Điều nay giúp cho câu truy vấn được nhanh hơn.

Các dịch vụ

Dịch vụ memcache là dịch vụ lưu trữ theo khóa – giá trị. Thuận lợi chính của dịch vù này trên datastore là tốc độ nhanh, rất nhanh so với việc lưu trữ và lấ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 truy nhiên không lưu trữ, vì thế nếu mất điện thì memcache cũng mất.

Ứng dụng App Engine có thể truy cập các tài nguyên web khác nhờ dị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 server khác trên internet như là việc tương tác với các service khác. Vì khi ta truy cập đến server khác thời gian sẽ lây nên URL Fetch hỗ trợ chạy ngầm bê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 thin nhắn đến các dịch vụ chát có sử dũng giao thức XMPP bao gồm Google Talk.

Tài Khoản

Chúng ta có thể sử dụng tài khoản trên Google cho các ứng dụng của chúng ta. Và nếu 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ần tạo tài khoản riêng cho ứng dụng. Tất nhiên, điều đó không bắt buộc. Chúng ta luô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ột provider OpenID.

Các công cụ lập trình

Google cung cấp miễn phí cho việc phát triển ứng dụng App Engine bằng ngôn ngữ Java và Python. Chúng ta có thể download software development 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 form plug-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. Mỗ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. Service này độ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 luôn mở service này trong khi đang lập trình ứng dụng.

Giới hạn

Các tập in 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 ứng dụng dùng python có thể sử dụng các thư viện của 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 đuộc hỗ trợ.

Các ứng dụng java chỉ được sử dụng được các tập (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ụ http://example.com sẽ không chạy được trên App Engine mà phải là

http://www.example.com

Datastore không lọc (filter) được hai thuộc tính cùng 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 người dùng đồng thời. App Engine giải quyết khó khăn trnog 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 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ụ.

Pham Van Tuyen

Anh Tuyen Pham là Tổng giám đốc của Cloud Ace Việt Nam và là GDG Cloud HCM Chapter Lead. Anh là diễn giả quen thuộc tại các sự kiện do Google tổ chức tại Việt Nam như Kubernetes Vietnam, Google Cloud Next Extended. Anh đã có các chứng chỉ của Google Cloud như Google Cloud Architect và Data Engineer.

View all posts by Pham Van Tuyen →