O caso

O site de retirada precisa estar no ar até sexta. Ninguém da equipe quer administrar servidor.

A loja do Isaac decidiu vender pelo site, com retirada na loja. Quem vai fazer o sistema é um estagiário, com ajuda de uma amiga desenvolvedora, e o prazo é de duas semanas. Ninguém quer aprender a configurar máquina, balanceador ou certificado para isso. A equipe só quer subir o código e começar a receber pedidos.

Este post parte de Serverless e Cloud Run, que apresenta os modelos sem servidor, e de Compute Engine, onde a máquina é sua para administrar. O App Engine fica no meio: você entrega o código, e a plataforma cuida do resto.

O problema

Subir o código não deveria exigir uma lista de tarefas

No Compute Engine, a loja escolhe a imagem do sistema operacional, instala o runtime da linguagem, configura o balanceamento, os certificados e as regras de firewall, e precisa cuidar de reiniciar uma máquina que cai. É controle total, mas também é uma lista longa. Para um site simples, quase tudo isso é trabalho que não vende nada.

A solução

App Engine: você faz o deploy, a plataforma cuida do resto

O App Engine é uma plataforma como serviço (PaaS) do Google Cloud. Você envia a aplicação, e ela cuida do balanceamento de carga, do aumento e da redução de instâncias conforme o tráfego, das versões anteriores e da verificação de saúde das instâncias.

PerguntaCompute Engine (IaaS)App Engine (PaaS)
Quem escolhe e mantém o sistema operacionalVocêA plataforma
Quem configura o balanceamento de cargaVocêA plataforma
Quem cuida de uma versão nova sem derrubar a antigaVocêA plataforma, com divisão de tráfego
Quanto controle você tem sobre a máquinaTotalMenor, limitado ao que a plataforma oferece

Ambientes

Dois ambientes, dois jeitos de rodar

O App Engine tem dois ambientes. A escolha depende de duas perguntas: a aplicação precisa escalar até zero? E ela precisa de um ambiente que você controla?

Standard

“Precisa escalar a zero e subir em segundos?”

Exemplo
O site de pedidos da loja: quase nenhum acesso de madrugada, e um pico na sexta à noite.
Foco
Cada linguagem roda numa sandbox própria, entre as linguagens suportadas. Escala até zero instâncias e a cobrança acompanha as horas das instâncias.

Flexible

“Precisa de um ambiente que você controla, ou de SSH?”

Exemplo
Um painel de reposição que depende de uma biblioteca do sistema e roda um processo em segundo plano.
Foco
Cada instância é um container numa VM do Compute Engine, com acesso SSH e processos em segundo plano. Mantém pelo menos uma instância ligada, então nunca chega a zero.

Hierarquia

Aplicação, serviço e versão

O App Engine organiza o que você publica em quatro níveis. Cada projeto do Google Cloud tem uma aplicação. Dentro dela ficam os serviços, que são componentes com configurações próprias. Cada serviço tem versões, e cada versão roda em uma ou mais instâncias.

Nível (level)O que éExemplo na loja
Aplicação (application)Uma por projetoA loja inteira
Serviço (service)Um componente, com configurações própriasO site de pedidos e o painel de reposição
Versão (version)Código e configuração, que podem coexistir com outras versõesA versão nova do site de pedidos
Instância (instance)Uma cópia em execução da versão, que atende as requisiçõesDuas instâncias da versão nova

Como várias versões podem estar ativas ao mesmo tempo, o tráfego pode ser dividido entre elas. Por exemplo, 90% para a versão atual e 10% para a nova. Se a nova der problema, o tráfego volta para a anterior, sem reimplantar nada.

Não confunda

App Engine × Cloud Run

App Engine

“Quer publicar o código sem pensar em container?”

Exemplo
O site da loja, enviado como código Python, com versões e divisão de tráfego.
Foco
A plataforma prepara o ambiente da linguagem. Aplicação, serviços, versões e divisão de tráfego já vêm prontos.

Cloud Run

“Já tem um container que responde a requisições HTTP?”

Exemplo
O mesmo site, empacotado com o sistema operacional e as bibliotecas escolhidos por você.
Foco
Roda qualquer container HTTP, sem depender dos runtimes do App Engine. Também escala até zero.

Na prática

Qual ambiente para cada parte da loja

Parte do sistemaEscolhaPor quê
Site de pedidos, com pico de sexta à noiteApp Engine StandardEscala a zero e sobe em segundos
Painel de reposição com biblioteca do sistemaApp Engine FlexibleRoda em VM e aceita SSH para depurar
Serviço de etiquetas, já empacotado em containerCloud RunRoda o container que já existe

Termos-chave

Cinco termos para fixar

Toque no cartão para ver a definição.

Teste rápido

Três perguntas, estilo prova

01

A loja quer um site de pedidos que não gaste nada de madrugada e que suba rápido no pico de sexta. Qual ambiente do App Engine usar?

02

A equipe precisa entrar por SSH na máquina da aplicação para investigar uma falha. Qual ambiente permite isso?

03

Isaac criou a aplicação de pedidos na região de São Paulo e agora quer mudar a região dela. O que é verdade?


Na loja, o App Engine resolve o site de pedidos sem que ninguém administre uma máquina. O próximo passo da trilha é Containers na Nuvem, para quando o próprio container passa a ser o que você empacota.