Bạn nên thực hiện khối lượng công việc của mình ở đâu? Nó phụ thuộc vào…
Việc lựa chọn các tùy chọn cơ sở hạ tầng phù hợp để thực thi ứng dụng của bạn là rất quan trọng, đối với sự thành công của ứng dụng, cũng như nhóm quản lý và phát triển nó. Từ google cloud, bài viết này sẽ chỉ ra một số yếu tố quan trọng nhất bạn nên xem xét khi quyết định nơi thực thi ứng dụng của mình.
Google Cloud cung cấp những dịch vụ nào?
- Compute Engine – Máy ảo: Bạn dự trữ cấu hình CPU, bộ nhớ, đĩa và GPU, đồng thời có thể quyết định hệ điều hành và phần mềm bổ sung.
- Kubernetes Engine – Các cụm Kubernetes được quản lý: Kubernetes là một hệ thống mã nguồn mở để tự động hóa việc triển khai, mở rộng quy mô và quản lý các ứng dụng được đóng gói (containerized applications). Bạn tạo một cụm và định cấu hình các vùng chứa để chạy, Kubernetes sẽ duy trì hoạt động của chúng, đồng thời quản lý việc mở rộng quy mô, cập nhật và kết nối.
- Cloud Run – Một nền tảng không máy chủ được quản lý hoàn toàn, chạy các vùng chứa riêng lẻ: Bạn cung cấp mã nguồn hoặc một vùng chứa cho Cloud Run, nó sẽ lưu trữ và tự động điều chỉnh quy mô khi cần thiết để phản hồi web và các sự kiện khác.
- App Engine – Một nền tảng không máy chủ được quản lý hoàn toàn cho các ứng dụng web hoàn chỉnh: App Engine xử lý mạng, mở rộng ứng dụng và mở rộng cơ sở dữ liệu. Bạn viết một ứng dụng web bằng một trong những ngôn ngữ được hỗ trợ, triển khai nó trên App Engine và App Engine sẽ xử lý việc mở rộng quy mô, cập nhật phiên bản và các công việc khác.
- Cloud Functions – Chức năng không máy chủ, hướng sự kiện: Bạn viết mã nguồn chức năng riêng lẻ và Cloud Functions sẽ gọi hàm của bạn khi các sự kiện xảy ra (chẳng hạn như thay đổi HTTP, Pub/Sub và Cloud Storage, cũng như các thay đổi khác).
Bạn cần mức độ trừu tượng như thế nào từ các dịch vụ của google cloud?
- Nếu bạn cần kiểm soát nhiều hơn cơ sở hạ tầng bên dưới (ví dụ như hệ điều hành, CPU, RAM, đĩa và ảnh ổ đĩa (disk image)), bạn nên sử dụng Compute Engine. Đây là lựa chọn điển hình cho việc di chuyển ứng dụng cũ và các hệ thống hiện có yêu cầu một hệ điều hành cụ thể.
- Vùng chứa cung cấp một phương pháp an toàn để ảo hóa một hệ điều hành, do đó nhiều khối lượng công việc có thể được thực thi trên một đối tượng hệ điều hành duy nhất. Chúng nhanh và nhẹ, đồng thời có tính di động. Nếu các ứng dụng của bạn được đóng gói, bạn sẽ có hai lựa chọn chính:
– Sử dụng Google Kubernetes Engine (GKE) – cung cấp cho bạn toàn quyền kiểm soát từ vùng chứa đến các nút (nodes) với hệ điều hành, CPU, GPU, đĩa, bộ nhớ và mạng cụ thể. GKE cũng cung cấp Autopilot khi bạn cần sự linh hoạt và khả năng kiểm soát nhưng bị giới hạn về hoạt động và hỗ trợ kỹ thuật.
– Còn nếu bạn chỉ muốn chạy ứng dụng của mình trong các vùng chứa mà không phải lo lắng về việc mở rộng cơ sở hạ tầng, thì Cloud Run là lựa chọn tốt nhất dành cho bạn. Bạn chỉ cần viết mã cho ứng dụng, đóng gói vào một vùng chứa và triển khai nó. - Nếu bạn muốn mã hóa ứng dụng dựa trên HTTP của mình rồi giao phó công việc mở rộng và triển khai ứng dụng cho Google Cloud thì App Engine – một tùy chọn không máy chủ, được quản lý hoàn toàn với thiết kế để lưu trữ và chạy các ứng dụng web – là lựa chọn tốt dành cho bạn.
- Nếu mã nguồn của bạn là một hàm và chỉ thực hiện một hành động dựa trên một sự kiện hoặc trình kích hoạt, thì bạn nên lựa chọn triển khai nó với Cloud Functions.
Use-case của bạn là gì?
- Hãy dùng Compute Engine nếu bạn đang di chuyển một ứng dụng kế thừa với các yêu cầu cụ thể về giấy phép, hệ điều hành, kernel hoặc mạng. Ví dụ: Các ứng dụng dựa trên Windows, xử lý gen, SAP HANA.
- Hãy dùng GKE nếu ứng dụng của bạn cần một hệ điều hành cụ thể hoặc các giao thức mạng khác ngoài HTTP/s. Khi sử dụng GKE có nghĩa là bạn đang sử dụng Kubernetes, bạn có thể dễ dàng triển khai và mở rộng sang các môi trường hỗn hợp và đa đám mây. Anthos là một nền tảng được thiết kế đặc biệt để triển khai hỗn hợp và đa đám mây, cung cấp một màn hình giao diện điều khiển tích hợp tất cả các bộ phận, từ cơ sở hạ tầng đến hiệu suất ứng dụng và cấu trúc liên kết mạng. Ví dụ: Các ứng dụng dựa trên microservices.
- Hãy dùng Cloud Run nếu bạn chỉ cần triển khai một ứng dụng được chứa trong một ngôn ngữ lập trình mà bạn chọn, với hỗ trợ HTTP/s và websocket. Ví dụ: trang web, API, ứng dụng xử lý dữ liệu, webhook.
- Hãy dùng App Engine nếu bạn muốn triển khai và lưu trữ ứng dụng web (HTTP/s) trên nền tảng không máy chủ. Ví dụ: ứng dụng web, backend ứng dụng di động.
- Hãy dùng Cloud Functions nếu mã nguồn của bạn chỉ là một hàm và thực hiện một hành động dựa trên sự kiện hoặc trình kích hoạt từ Pub/Sub hay Cloud Storage. ví dụ: Kích hoạt chức năng chuyển mã video (transcoding) ngay sau khi video được lưu vào Cloud Storaget bucket.
Bạn cần tính di động với mã nguồn mở?
Nếu yêu cầu của bạn bao gồm tính di động và khả năng hỗ trợ mã nguồn mở, hãy xem xét GKE, Cloud Run và Cloud Functions. Tất cả chúng đều dựa trên các framework mã nguồn mở, giúp bạn tránh tình trạng bị khóa bởi nhà cung cấp và cho phép bạn tự do mở rộng cơ sở hạ tầng của mình sang các môi trường hỗn hợp và đa đám mây. Các cụm GKE được cung cấp bởi hệ thống quản lý cụm mã nguồn của Kubernetes, mang đến các cơ chế hỗ trợ bạn tương tác với cụm của mình. Cloud Run for Anthos được cung cấp bởi Knative, một dự án mã nguồn mở hỗ trợ khối lượng công việc không máy chủ trên Kubernetes. Cloud Functions sử dụng framework mã nguồn mở FaaS (function as service) hỗ trợ thực thi các chức năng trên nhiều môi trường khác nhau.
Động lực của nhóm bạn như thế nào?
Nếu bạn có một nhóm phát triển nhỏ và bạn muốn giúp họ tập trung hơn vào mã nguồn, thì một tùy chọn không máy chủ như Cloud Run hoặc App Engine là một lựa chọn tốt vì bạn không cần phải có một nhóm quản lý cơ sở hạ tầng, quy mô và các hoạt động. Nếu bạn có những nhóm lớn hơn, cùng với các công cụ và quy trình của riêng mình, thì Compute Engine hoặc GKE sẽ là lựa chọn lý tưởng hơn vì chúng cho phép bạn xác định quy trình của riêng mình cho CI/CD, bảo mật, quy mô và hoạt động.
Bạn muốn thanh toán theo cách nào?
Mô hình thanh toán của Compute Engine và GKE dựa trên tài nguyên, có nghĩa là bạn sẽ thanh toán cho các phiên bản bạn đã cung cấp, độc lập với việc sử dụng. Bạn cũng có thể tận dụng các chiết khấu cho cam kết sử dụng lâu dài.
Bên cạnh đó, Cloud Run, App Engine và Cloud Functions có hình thức thanh toán theo nhu cầu, có nghĩa là bạn thanh toán khi sử dụng nó.
Kết luận
Việc xem xét tất cả các yếu tó liên quan đóng vai trò quan trọng trong việc lựa chọn các tùy chọn tính toán thích hợp với ứng dụng của bạn. Hãy nhớ rằng không có quyết định nào nhất định phải là cuối cùng, bởi lẽ bạn luôn có khả năng thay đổi từ tùy chọn này sang tùy chọn khác.
Bạn có thể khám phá chi tiết hơn về những thông tin này qua video Where Shoud I Run My Stuff? và một khóa đào tạo về GKE của Google Cloud.
Tìm hiểu thêm về điện toán tại bài viết: Điện toán bí mật và những điều bạn cần biết
Theo Google Cloud Blog