Pokud jste někdy používali Google App Engine, víš, že je to jeden z nejrychlejších způsobů, jak se dostat od nápadu k fungující prototyp., Pokud splňujete omezení karantény, nemusíte nastavovat servery, instalovat balíčky ani provádět žádné únavné úkoly DevOps, které vás zpomalují.
se zavedením flexibilního prostředí App Engine (dříve známého jako Managed VMs) společnost Google zrušila mnoho omezení karantény a přidala další vestavěné runtimes včetně Node.js a Ruby. Můžete dokonce přizpůsobit vše zadáním vlastní Dockerfile!
viz srovnání Zde.
tato flexibilita však přichází za cenu., Flexibilní prostředí je pomalejší nasazení a nemůže škálovat tak rychle jako standardní prostředí. Výchozí nasazení je také nadměrné pro prototypování.
největším rozdílem podle mého názoru je nedostatek “ stupnice na nulu.“Se standardem App Engine, pokud nikdo nepoužívá vaši aplikaci, vypne vše. V okamžiku, kdy uživatel navštíví, App Engine roztočí instanci v milisekundách, aby sloužil novému požadavku. V kombinaci s velkorysou volnou úrovní se nemusíte starat o náklady na infrastrukturu prototypů., V současné době potřebuje flexibilní prostředí alespoň jednu instanci, která slouží provozu, a neexistuje žádná volná úroveň.
podívejme se na některé osvědčené postupy pro prototypování s flexibilním prostředím, které může minimalizovat náklady.
2019 Update: vřele doporučuji používat Cloud Run místo App Engine Flex Pro většinu úkolů. Podle mého názoru se mísí to nejlepší ze standardu App Engine (pay per use, scale to zero) s aplikací Engine Flex (flexibilita, Dockerfiles). Jedinou hlavní výhodou Flex má větší velikosti instance.,
pojďme spustit uzel.js app na App Engine flexibilní prostředí. Výchozí aplikace.yaml vypadá něco jako toto:
runtime: nodejs
env: flex
Nasadit ji s gcloud příkaz:
$ gcloud app deploy
Po nasazení aplikace, se můžeme podívat na „Instance“ sekci App Engine vidět následující:
ve výchozím nastavení, to spustí dva n1-norma-1 VMs., To je navrženo tak, aby poskytovalo vyšší spolehlivost.
podívejme se na měsíční náklady na toto nasazení. Nakonfiguroval jsem toto výchozí nasazení v kalkulačce cen Google Cloud zde.
je to více než $80 měsíčně!
i když by tato cena byla v pořádku, kdybyste obsluhovali výrobní provoz, je to ve fázi prototypování docela směšné.
krok první: snižte počet instancí
můžeme snížit naše náklady na polovinu spuštěním jedné instance namísto dvou. Proveďte to zapnutím ručního škálování (pro prototyp nepotřebujete autoscaling) a nastavením instancí na 1., Více o škálování si můžete přečíst zde.
upravte aplikaci.yaml:
runtime: nodejs
env: flex
manual_scaling:
instances: 1
tím se sníží naše náklady z přibližně $80 na $ 40! Pěkný!