Se hai mai usato Google App Engine, sai, è uno dei modi più veloci per ottenere dall’idea al prototipo funzionante., Finché si conformano alle restrizioni sandbox, non è necessario configurare server, installare pacchetti o eseguire qualsiasi attività DevOps noiosa che ti rallenti.
Con l’introduzione dell’ambiente flessibile App Engine (precedentemente noto come Managed VMs), Google ha sollevato molte delle restrizioni sandbox e ha aggiunto più runtime incorporati, incluso il nodo.js e Ruby. È anche possibile personalizzare tutto specificando il proprio Dockerfile!
Vedi il confronto qui.
Tuttavia, questa flessibilità ha un prezzo., L’ambiente flessibile è più lento da distribuire e non può essere scalato rapidamente come l’ambiente standard. La distribuzione predefinita è anche eccessiva per la prototipazione.
La più grande differenza a mio parere è la mancanza di “scala a zero.”Con App Engine Standard, se nessuno sta usando l’applicazione si spegne tutto verso il basso. Nel momento in cui un utente visita, App Engine gira un’istanza in millisecondi per servire la nuova richiesta. In combinazione con il generoso livello gratuito, non devi preoccuparti dei costi di infrastruttura per i prototipi., Attualmente, l’ambiente flessibile richiede almeno un’istanza in esecuzione per servire il traffico e non esiste un livello gratuito.
Diamo un’occhiata ad alcune best practice per la prototipazione con l’ambiente flessibile che può ridurre al minimo i costi.
Aggiornamento 2019: consiglio vivamente di utilizzare Cloud Run invece di App Engine Flex per la maggior parte delle attività. A mio parere, combina il meglio dello standard App Engine (pay per use, scala a zero) con App Engine Flex (flessibilità, Dockerfiles). L’unico grande vantaggio che Flex ha sono le dimensioni delle istanze più grandi.,
Lanciamo un Nodo.js app su App Engine Ambiente flessibile. L’app predefinita.yaml sembra qualcosa di simile a questo:
runtime: nodejs
env: flex
Distribuire con il gcloud comando:
$ gcloud app deploy
Dopo la distribuzione di app, siamo in grado di controllare la sezione “Istanze” di App Engine per vedere la seguente:
per impostazione predefinita, lancia due n1-standard-1 VMs., Questo è progettato per fornire una maggiore affidabilità.
Diamo un’occhiata al costo mensile per questa distribuzione. Ho configurato questa distribuzione predefinita nel Calcolatore dei prezzi di Google Cloud qui.
Sono oltre 8 80 al mese!
Anche se questo prezzo andrebbe bene se si servisse il traffico di produzione, è piuttosto ridicolo nella fase di prototipazione.
Fase uno: Ridurre il numero di istanze
Possiamo dimezzare i costi lanciando un’istanza invece di due. A tale scopo, attivando il ridimensionamento manuale (non è necessario l’autoscaling per un prototipo) e impostando le istanze su 1., Puoi leggere di più sul ridimensionamento qui.
Modificare l’applicazione.yaml:
runtime: nodejs
env: flex
manual_scaling:
instances: 1
Questo ridurrà il nostro costo da circa 8 80 a 4 40! Bello!