Ba bước đơn giản để tiết kiệm chi phí khi tạo mẫu với môi trường linh hoạt của máy ứng dụng

Nếu bạn đã từng sử dụng Google App Engine, bạn sẽ biết đó là một trong những cách nhanh nhất để chuyển từ ý tưởng sang nguyên mẫu hoạt động. Miễn là bạn tuân thủ các hạn chế của hộp cát, bạn không cần phải thiết lập máy chủ, cài đặt gói hoặc thực hiện bất kỳ tác vụ DevOps tẻ nhạt nào làm bạn chậm lại.

Với việc giới thiệu Môi trường linh hoạt của Máy ứng dụng (trước đây gọi là VM được quản lý), Google đã gỡ bỏ nhiều hạn chế trong hộp cát và thêm các thời gian chạy tích hợp sẵn bao gồm Node.js và Ruby. Bạn thậm chí có thể tùy chỉnh mọi thứ bằng cách chỉ định Dockerfile của riêng bạn!

Xem so sánh ở đây.

Tuy nhiên, sự linh hoạt này có giá. Môi trường linh hoạt chậm triển khai hơn và có thể mở rộng quy mô nhanh như Môi trường tiêu chuẩn. Việc triển khai mặc định cũng là quá mức cần thiết cho tạo mẫu.

Sự khác biệt lớn nhất theo quan điểm của tôi là việc thiếu thang đo thành 0. Khoảnh khắc người dùng truy cập, App Engine sẽ tạo ra một cá thể tính bằng mili giây để phục vụ yêu cầu mới. Kết hợp với tầng miễn phí hào phóng, bạn không thực sự phải lo lắng về chi phí cơ sở hạ tầng cho các nguyên mẫu. Hiện tại, Môi trường linh hoạt cần ít nhất một phiên bản đang chạy để phục vụ lưu lượng truy cập và không có tầng miễn phí.

Hãy cùng xem một số thực tiễn tốt nhất để tạo mẫu với Môi trường linh hoạt có thể giảm thiểu chi phí.

Cập nhật 2019: Tôi thực sự khuyên bạn nên sử dụng Cloud Run thay vì App Engine Flex cho hầu hết các tác vụ. Theo tôi, nó pha trộn tốt nhất từ ​​Tiêu chuẩn Máy ứng dụng (trả cho mỗi lần sử dụng, tỷ lệ bằng 0) với App Engine Flex (tính linh hoạt, Dockerfiles). Ưu điểm chính duy nhất mà Flex có là kích thước cá thể lớn hơn.

Triển khai mặc định

Hãy để cùng nhau khởi chạy một ứng dụng Node.js trên Môi trường linh hoạt của Máy ứng dụng. Ứng dụng mặc định.yaml trông giống như thế này:

thời gian chạy: nodejs
env: uốn

Triển khai nó bằng lệnh gcloud:

$ gcloud triển khai ứng dụng

Sau khi triển khai ứng dụng, chúng ta có thể kiểm tra phần Inst Instance của máy ứng dụng để xem phần sau:

Theo mặc định, nó khởi chạy hai máy ảo n1-standard-1. Điều này được thiết kế để cung cấp độ tin cậy cao hơn.

Hãy cùng xem xét chi phí hàng tháng cho việc triển khai này. Tôi đã cấu hình triển khai mặc định này trong Máy tính giá Google Cloud tại đây.

Nó có hơn 80 đô la một tháng!

Mặc dù mức giá này sẽ ổn nếu bạn đang phục vụ lưu lượng sản xuất, nhưng nó khá vô lý trong giai đoạn tạo mẫu.

Bước một: Giảm số lượng phiên bản

Chúng tôi có thể cắt giảm một nửa chi phí bằng cách khởi chạy một ví dụ thay vì hai. Thực hiện việc này bằng cách bật chia tỷ lệ thủ công (bạn không cần tự động định mức cho nguyên mẫu) và đặt các thể hiện thành 1. Bạn có thể đọc thêm về chia tỷ lệ tại đây.

Sửa đổi ứng dụng.yaml:

thời gian chạy: nodejs
env: uốn
hướng dẫn sử dụng
  trường hợp: 1

Điều này sẽ cắt giảm chi phí của chúng tôi từ khoảng $ 80 đến $ 40! Tốt đẹp!

Tuy nhiên, điều này là rất tốn kém cho một nguyên mẫu. Thông thường, một nguyên mẫu chỉ cần tài nguyên tối thiểu để chạy, vì vậy chúng tôi có thể tối ưu hóa hơn nữa.

Bước hai: Sử dụng các trường hợp nhỏ hơn

Thật không may, bước này là không thể vào lúc này! Hy vọng, tùy chọn này sẽ được đưa trở lại trong tương lai.

# Trong khi g1-small đã khá nhỏ, chúng ta có thể còn nhỏ hơn nữa.

#The F1-micro là một ví dụ hoàn hảo cho các nguyên mẫu. Nó có đủ RAM và #CPU để chạy hầu hết các khối lượng công việc ở cấp độ nguyên mẫu, do đó bạn không chi tiêu #money cho các tài nguyên không sử dụng.

thời gian chạy: nodejs
env: uốn
hướng dẫn sử dụng
  trường hợp: 1
#tài nguyên:
# cpu: .5
# memory_gb: 0.18
# đĩa_size_gb: 10

# Bây giờ giá giảm từ $ 40 xuống chỉ còn $ 15! Rất đẹp!

Bước ba: Xoay xuống các trường hợp dev

Nếu bạn đang làm việc trên một nguyên mẫu, rất có thể bạn không cần nó chạy 24/7. Theo mặc định, App Engine sẽ triển khai một phiên bản mới mỗi lần. Điều này làm cho việc quay trở lại phiên bản cũ hoặc phân chia lưu lượng truy cập và thử nghiệm A / B siêu dễ dàng, nhưng không cần thiết cho một nguyên mẫu.

Sửa đổi lệnh triển khai của bạn thành như sau:

$ gcloud triển khai ứng dụng - chuyển đổi dev

Khi bạn kết thúc công việc trong ngày, bạn có thể quay xuống cá thể của mình bằng lệnh sau:

$ gcloud phiên bản ứng dụng dừng dev

Và bạn có thể khởi động lại dễ dàng như sau:

$ gcloud phiên bản ứng dụng bắt đầu dev

Hãy nói rằng bạn làm việc 10 giờ một ngày trong 6 ngày một tuần bởi vì bạn là một kỹ sư 10x. Nếu bạn tắt App Engine khi về nhà, tổng chi phí giảm xuống còn 15 đô la20 một tháng!

Phần kết luận

Bằng cách làm theo ba bước này, chúng tôi đã giảm chi phí cho Máy ứng dụng linh hoạt từ $ 80 xuống còn $ 20.

Rằng giảm giá 85%!

Mặc dù nó vẫn không miễn phí như App Engine Standard, tôi cảm thấy nó hợp lý hơn nhiều.

Phần tốt nhất: bạn don lồng phải thực hiện một mã hoặc các hoạt động thay đổi để đưa nguyên mẫu của bạn lên quy mô sản xuất. Chỉ cần chuyển về chế độ tự động mở rộng và thay đổi các yêu cầu về CPU và RAM của bạn trong app.yaml, và bạn đã sẵn sàng!

Vì vậy, hãy nhớ rằng: Khi tạo mẫu sử dụng một ví dụ nhỏ duy nhất và tắt nó!

ruột thừa

ứng dụng.yaml:

thời gian chạy: nodejs
env: uốn
hướng dẫn sử dụng
  trường hợp: 1
#tài nguyên:
# cpu: .5
# memory_gb: 0.18
# đĩa_size_gb: 10

Triển khai:

$ gcloud triển khai ứng dụng - chuyển đổi dev

Dừng lại:

$ gcloud phiên bản ứng dụng dừng dev

Khởi đầu:

$ gcloud phiên bản ứng dụng bắt đầu dev