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.
| Pergunta | Compute Engine (IaaS) | App Engine (PaaS) |
|---|---|---|
| Quem escolhe e mantém o sistema operacional | Você | A plataforma |
| Quem configura o balanceamento de carga | Você | A plataforma |
| Quem cuida de uma versão nova sem derrubar a antiga | Você | A plataforma, com divisão de tráfego |
| Quanto controle você tem sobre a máquina | Total | Menor, 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 projeto | A loja inteira |
| Serviço (service) | Um componente, com configurações próprias | O site de pedidos e o painel de reposição |
| Versão (version) | Código e configuração, que podem coexistir com outras versões | A versão nova do site de pedidos |
| Instância (instance) | Uma cópia em execução da versão, que atende as requisições | Duas 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 sistema | Escolha | Por quê |
|---|---|---|
| Site de pedidos, com pico de sexta à noite | App Engine Standard | Escala a zero e sobe em segundos |
| Painel de reposição com biblioteca do sistema | App Engine Flexible | Roda em VM e aceita SSH para depurar |
| Serviço de etiquetas, já empacotado em container | Cloud Run | Roda 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.