ثلاث خطوات بسيطة لتوفير التكاليف عند وضع النماذج الأولية مع بيئة مرنة لمحرك التطبيقات

إذا سبق لك استخدام Google App Engine ، فأنت تعلم أنه أحد أسرع الطرق للانتقال من الفكرة إلى النموذج الأولي للعمل. طالما أنك تتفق مع قيود صندوق الحماية ، فلن تحتاج إلى إعداد خوادم أو تثبيت حزم أو القيام بأي من مهام DevOps الشاقة التي تبطئك.

من خلال تقديم بيئة محرك التطبيقات المرنة (المعروفة سابقًا باسم VMs المدارة) ، رفعت Google العديد من القيود المفروضة على صندوق الحماية وأضفت المزيد من أوقات التشغيل المضمنة بما في ذلك Node.js و Ruby. يمكنك حتى تخصيص كل شيء عن طريق تحديد Dockerfile الخاص بك!

انظر المقارنة هنا.

ومع ذلك ، تأتي هذه المرونة بسعر. البيئة المرنة أبطأ في النشر ولا يمكن أن تتوسع بسرعة مثل البيئة القياسية. النشر الافتراضي هو أيضا مبالغة للنماذج الأولية.

الاختلاف الأكبر في رأيي هو عدم وجود "مقياس إلى الصفر". باستخدام App Engine Standard ، إذا لم يكن هناك أحد يستخدم التطبيق الخاص بك ، فسيغلق كل شيء. في اللحظة التي يزور فيها المستخدم ، يدور App Engine مثيلًا بالميلي ثانية لخدمة الطلب الجديد. بالاقتران مع المستوى المجاني السخي ، لا داعي للقلق بشأن تكاليف البنية الأساسية للنماذج الأولية. في الوقت الحالي ، تحتاج "البيئة المرنة" إلى تشغيل مثيل واحد على الأقل لخدمة حركة المرور ولا توجد فئة مجانية.

دعونا نلقي نظرة على بعض أفضل الممارسات للنماذج الأولية مع البيئة المرنة التي يمكن أن تقلل من التكلفة.

تحديث 2019: أوصي بشدة باستخدام Cloud Run بدلاً من App Engine Flex لمعظم المهام. في رأيي ، فإنه يمزج الأفضل من App Engine Standard (الدفع لكل استخدام ، القياس إلى الصفر) مع App Engine Flex (المرونة ، Dockerfiles). الميزة الرئيسية الوحيدة التي يتمتع بها Flex هي أحجام المثيلات الأكبر.

النشر الافتراضي

دعنا نطلق تطبيق Node.js على App Engine Flexible Environment. يبدو التطبيق الافتراضي. yaml مثل هذا:

وقت التشغيل: nodejs
env: المرن

قم بنشرها باستخدام الأمر gcloud:

نشر تطبيق gcloud $

بعد نشر التطبيق ، يمكننا التحقق من قسم "المثيلات" في App Engine لمعرفة ما يلي:

بشكل افتراضي ، يتم تشغيل جهازي n1-standard-1 VMs. تم تصميم هذا لتوفير موثوقية أعلى.

دعونا نلقي نظرة على التكلفة الشهرية لهذا النشر. لقد قمت بتهيئة هذا النشر الافتراضي في حاسبة التسعير السحابي من Google هنا.

إنه أكثر من 80 دولارًا في الشهر!

على الرغم من أن هذا السعر سيكون جيدًا إذا كنت تقدم حركة الإنتاج ، إلا أنه أمر مثير للسخرية في مرحلة النماذج الأولية.

الخطوة الأولى: تقليل عدد الحالات

يمكننا خفض التكلفة إلى النصف عن طريق إطلاق مثيل واحد بدلاً من مثيلين. يمكنك القيام بذلك عن طريق تشغيل القياس اليدوي (لا تحتاج إلى القياس التلقائي لنموذج أولي) وتعيين الحالات على 1. يمكنك قراءة المزيد حول القياس هنا.

تعديل التطبيق. yaml:

وقت التشغيل: nodejs
env: المرن
manual_scaling:
  الحالات: 1

سيؤدي هذا إلى خفض التكلفة لدينا من حوالي 80 دولارًا إلى 40 دولارًا! لطيف!

لا يزال ، هذا مكلف للغاية بالنسبة للنموذج الأولي. عادةً ما يحتاج النموذج الأولي إلى الحد الأدنى من الموارد لتشغيله ، حتى نتمكن من تحقيق المزيد من التحسين.

الخطوة الثانية: استخدم حالات أصغر

لسوء الحظ ، هذه الخطوة غير ممكنة في هذا الوقت! نأمل أن يتم إرجاع هذا الخيار في المستقبل.

# في حين أن g1 الصغير صغير جدًا بالفعل ، يمكننا أن نذهب أصغر.

# و f1 الصغرى هو مثال مثالي للنماذج. إنه يحتوي على ذاكرة RAM و # CPU كافية لتشغيل معظم أعباء العمل على مستوى النموذج الأولي ، لذلك أنت لا تنفق المال على الموارد غير المستخدمة.

وقت التشغيل: nodejs
env: المرن
manual_scaling:
  الحالات: 1
#مصادر:
# وحدة المعالجة المركزية: .5
# memory_gb: 0.18
# disk_size_gb: 10

# الآن ينخفض ​​السعر من 40 دولارًا إلى 15 دولارًا فقط! لطيف جدا!

الخطوة الثالثة: تدور حالات ديف

إذا كنت تعمل على نموذج أولي ، فمن المحتمل أنك لست بحاجة إلى تشغيله على مدار الساعة طوال أيام الأسبوع. بشكل افتراضي ، سينشر تطبيق Engine إصدارًا جديدًا في كل مرة. هذا يجعل الرجوع إلى إصدار قديم أو تقسيم حركة المرور واختبار A / B أمرًا سهلاً للغاية ، ولكن لا يلزم وجود نموذج أولي.

تعديل أمر النشر الخاص بك إلى ما يلي:

$ gcloud نشر التطبيق - الإصدار ديف

عندما تنتهي من العمل لهذا اليوم ، يمكنك تدوين حالتك باستخدام الأمر التالي:

$ gcloud إصدارات التطبيق توقف ديف

ويمكنك تشغيله مرة أخرى بنفس السهولة:

تبدأ إصدارات التطبيق gcloud $ dev

دعنا نقول أنك تعمل 10 ساعات في اليوم لمدة 6 أيام في الأسبوع لأنك مهندس 10x. إذا أغلقت App Engine عند العودة إلى المنزل ، فإن التكلفة الإجمالية تنخفض إلى 15-20 دولارًا في الشهر!

استنتاج

باتباع هذه الخطوات الثلاث ، قمنا بتخفيض تكلفة App Engine Flexible من 80 دولارًا إلى 20 دولارًا.

هذا انخفاض بنسبة 85 ٪ في السعر!

في حين أنه لا يزال غير مجاني مثل App Engine Standard ، أشعر أنه أكثر عقلانية.

أفضل جزء: ليس عليك إجراء رمز واحد أو تغيير العمليات لنقل النموذج الأولي إلى حجم الإنتاج. ما عليك سوى التبديل إلى القياس التلقائي وتغيير متطلبات وحدة المعالجة المركزية وذاكرة الوصول العشوائي في التطبيق. yaml ، وأنت على ما يرام!

لذلك تذكر: عند استخدام النماذج الأولية لمثيل صغير واحد وإغلاقه!

الملحق

app.yaml:

وقت التشغيل: nodejs
env: المرن
manual_scaling:
  الحالات: 1
#مصادر:
# وحدة المعالجة المركزية: .5
# memory_gb: 0.18
# disk_size_gb: 10

نشر:

$ gcloud نشر التطبيق - الإصدار ديف

توقف:

$ gcloud إصدارات التطبيق توقف ديف

بداية:

تبدأ إصدارات التطبيق gcloud $ dev