Alguns termos técnicos, decodificados
- Cold start (partida a frio) — Quando o código não roda há um tempo, a plataforma precisa acordá-lo. Essa primeira requisição é mais lenta (de uma fração de segundo a alguns segundos). Funções de borda quase não têm isso; funções às vezes têm; contêineres e VMs sempre ativos não têm. Para a maioria dos apps isso é invisível; para um fluxo de checkout ágil, pode importar.
- Escalonamento (scaling) — Lidar com mais usuários sem cair. Escalonamento automático significa que a plataforma adiciona capacidade por você. Escalonamento manual significa que você clica em botões ou o app simplesmente quebra sob carga. "Escala a zero" é uma frase relacionada que você vai ver bastante: quando ninguém está usando seu app, ele não custa nada.
- Estado (state) — Dados que precisam persistir (um banco de dados, arquivos enviados, uma sessão de usuário). As camadas estática e serverless costumam ser "sem estado" (stateless) — elas esquecem tudo entre requisições — então o estado vive em um banco de dados ou serviço de armazenamento separado. É por isso que quase todo app real é "sua hospedagem mais um banco de dados em algum lugar", não uma caixa mágica única.
- Região (region) — Em que parte do mundo seu código e seus dados ficam fisicamente. Isso afeta a velocidade (mais perto é mais rápido) e às vezes a lei (alguns dados precisam permanecer em um país específico). Para um primeiro projeto, escolha a região mais próxima dos seus usuários e siga em frente.
Aqui está toda a jornada de uma requisição, e onde cada parte vive. O navegador conversa com uma borda próxima, que entrega arquivos em ou acorda seu código, que recorre ao banco de dados para tudo o que precisa lembrar:
┌─────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────┐
│ BROWSER │ ───▶ │ EDGE / CDN │ ───▶ │ SERVER CODE │ ───▶ │ DATABASE │
│ user │ │ near user │ │ function/box │ │ state │
└─────────┘ └──────────────┘ └──────────────┘ └──────────┘
▲ │ │ │
│ cache HIT │ stateless │ remembers │
└──────────────────┘ (forgets between │ things │
fast reply requests) ◀───────┘ ◀─────────────────┘