Aprendendo serverless em diálogo — 🧙♂️ Doutor e 🐣 Estudante sobrevivem às faturas de nuvem
Revivi a época em que eu não conseguia entender serverless e decidi perguntar tudo o que pude.
O servidor sumiu? A verdadeira identidade do mago
🧙♂️ Doutor — 🐣, hoje vamos aprender sobre serverless. Só de ouvir o nome parece uma “magia que faz o servidor sumir”, mas a verdade é mais discreta e ainda assim profunda.
🐣 Estudante — Servidor nenhum? Não me diga que o senhor, como se fosse o Harry Potter, lançou “Servidor, desapareça!” e ele sumiu mesmo?
🧙♂️ Doutor — Hahaha, essa ideia passa pela cabeça de nove entre dez pessoas. Mas não é que “não existam servidores”. Lá no fundo da nuvem eles trabalham duro. Apenas não precisamos ficar conscientes da existência deles.
🐣 Estudante — Então é propaganda enganosa. Tipo escrever “legumes orgânicos” e despejar agrotóxico escondido.
🧙♂️ Doutor — Comparação bem torta, mas acerta o ponto. O “less” em “serverless” significa “menos gestão”. Antes criávamos nossos próprios servidores, instalávamos o sistema, lidávamos com incidentes — era como cuidar de um hamster. Em serverless o provedor de nuvem assume tudo isso.
🐣 Estudante — Quando o hamster morre a gente chora, mas quando o servidor cai os clientes brigam, então é pior ainda.
🧙♂️ Doutor — E diferente do hamster, o servidor ainda te acorda às três da manhã com um “o banco de dados não responde”.
📌 Nota: Conceitos básicos de serverless Serverless não quer dizer “não existem servidores”, mas sim que a gestão dos servidores é delegada ao provedor de nuvem.
- Modelo tradicional: comprar, instalar e administrar o servidor por conta própria
- Serverless: o provedor gerencia toda a infraestrutura e você se concentra apenas no código
Como funciona o serverless: ninjas que só aparecem quando chamados
🐣 Estudante — Parece difícil de usar. Em que ele é diferente de um servidor comum?
🧙♂️ Doutor — Pois é. Em serverless o recurso ‘aparece’ apenas quando é chamado, executa o processamento e desaparece. Por isso os aplicativos precisam ser projetados como ‘velocistas’. Maratonistas não servem.
🐣 Estudante — Então alguém grita ‘calcule agora!’ e ele surge, e quando dizem ’terminou’ ele desaparece?
🧙♂️ Doutor — Exatamente! É como um ninja que só aparece quando é convocado. Como ele fica escondido na nuvem, você não paga aluguel quando não está fazendo nada.
🐣 Estudante — Mas ninjas aparecem de lugares diferentes. Como fica o endereço IP?
🧙♂️ Doutor — Boa pergunta! Eles não têm endereço fixo. Como o servidor muda a cada vez, a nuvem coloca uma API Gateway como ‘porteiro da vila dos ninjas’ para distribuir as requisições para o ninja certo.
🐣 Estudante — Entendi. Mas se o ninja muda toda hora, significa que ele não lembra do que aconteceu antes?
🧙♂️ Doutor — Isso mesmo. Por isso a arquitetura precisa ser stateless. Nada de conversas ‘continuando de ontem’. Cada execução começa como se fosse a primeira vez, memória de peixinho dourado.
🐣 Estudante — Não é inconveniente? Como ficam login e sessão?
🧙♂️ Doutor — Guardamos o estado fora. Banco de dados, Redis, essas coisas. O ninja não tem memória própria, mas deposita os pergaminhos importantes no ‘depósito de rolos’.
📌 Nota: Por que o design stateless é crucial Funções serverless iniciam em contêineres novos a cada execução, logo o estado local (variáveis, arquivos, sessão) não é preservado.
- Armazenamento de estado: bancos externos, Redis, S3 etc.
- Sessões: tokens JWT ou armazenamento externo
- Arquivos: tudo que não for temporário precisa ir para um storage externo
Diferenças em relação a servidores tradicionais: bichinho de estimação vs. ninja
🐣 Estudante — Consegue dar uma ideia concreta?
🧙♂️ Doutor — Pensa em um fluxo de ‘gerar miniaturas quando uma imagem é enviada’. No modelo tradicional, um servidor 24 horas fica lá, “será que chega alguma coisa?”. Consome energia e ainda pode falhar.
🐣 Estudante — É como um porteiro parado na porta esperando alguém aparecer.
🧙♂️ Doutor — Isso! E às vezes o porteiro fica resfriado e cai. Já no serverless, quando toca o sino “imagem enviada!”, o ninja aparece, gera a miniatura rapidinho e some.
🐣 Estudante — Mas não demora para o ninja aparecer?
🧙♂️ Doutor — Aí entra o problema do cold start. Quando o ninja está dormindo, leva alguns segundos para acordar e se preparar. Com linguagens pesadas, como Java, é como se o ninja sonolento tivesse que abrir o tapete de ioga e preparar o café antes de trabalhar.
🐣 Estudante — Irritante. Então não serve para processamento em tempo real?
🧙♂️ Doutor — Há mecanismos de aquecimento, mas, em geral, ele brilha em processamento em lote ou assíncrono. Coisas do tipo “responda já!” não são o forte.
Entendendo com um exemplo: um app de compartilhamento de fotos
🐣 Estudante — Me explica com um exemplo. Digamos que quero criar um app de fotos?
🧙♂️ Doutor — Ótimo. No modelo tradicional seria assim:
Servidor tradicional:
Servidor web rodando 24 horas (¥5000 por mês)
↓
"Uma foto foi enviada"
↓
Processamento de miniatura dentro do servidor
↓
Salvar no banco de dados
🧙♂️ Doutor — Desse jeito você paga ¥5000 todo mês, mesmo que ninguém envie nada. É como manter uma loja pagando aluguel sem cliente.
🐣 Estudante — Que desperdício.
🧙♂️ Doutor — No serverless seria:
Versão serverless:
Imagem enviada ao S3
↓
Evento do S3 dispara uma função Lambda
↓
Função Lambda inicia (0,1 s)
↓
Gera a miniatura e grava em outro bucket S3
↓
Função Lambda termina
↓
Cobrança: apenas pelo tempo de execução (cerca de ¥0,001 por chamada)
🐣 Estudante — Então se ninguém usar, custa zero?
🧙♂️ Doutor — Exatamente! Você paga só pelo que usar. Mas se viralizar, a fatura viraliza junto. Se um vídeo bombar e disparar um milhão de execuções…
🐣 Estudante — A fatura chega a ¥1000!
🧙♂️ Doutor — O cálculo está certo, mas lembra que somamos tráfego, API Gateway, banco de dados. Não é raro chegar a dezenas de milhares de ienes. É a tragédia moderna de “viralizou e faliu”.
📌 Nota: Cobrança por uso — benefícios e armadilhas
Benefícios
- Custo inicial quase zero
- Escala automática conforme o uso
- Dispensa a gestão de infraestrutura
Riscos
- Cobranças inesperadas e altas (principalmente em virais)
- Estruturas de preços complexas
- Dificuldade para enxergar o custo combinado de vários serviços
Contramedidas
- Configurar alertas de cobrança
- Implementar limites de taxa
- Fazer testes de carga e estimativas de custo com antecedência
Tipos de serverless: as especialidades dos ninjas
🐣 Estudante — Ouvi dizer que existem tipos diferentes de serverless?
🧙♂️ Doutor — São três grandes estilos: FaaS (Function as a Service), BaaS (Backend as a Service) e contêineres serverless.
🐣 Estudante — O que é FaaS?
🧙♂️ Doutor — É o serviço do tipo “cuido só da função”. AWS Lambda, Google Cloud Functions, Azure Functions. Você escreve a função e eles “executam apenas quando chamados e cobram por uso” — um negócio digno de um sushibar.
🐣 Estudante — E BaaS?
🧙♂️ Doutor — É o “deixo banco, autenticação e push comigo”. Firebase, Supabase, AWS Amplify. É como viver na casa dos pais, onde “a mãe resolve tudo”.
🐣 Estudante — Viver com os pais é fácil, mas tem que seguir as regras deles.
🧙♂️ Doutor — Exatamente. Daí surge o risco de vendor lock-in. Quando percebe, já está “viciado a ponto de não viver sem aquele serviço”.
O que o serverless faz bem — e o que não faz
🐣 Estudante — Então é só fazer esforço físico que dá certo? Para que usar serverless?
🧙♂️ Doutor — A graça é a velocidade. Você publica uma ideia rapidamente e, enquanto o uso é pequeno, o custo fica perto de zero. Dá para lançar hoje algo que imaginou ontem à noite.
🐣 Estudante — Mas não serve para tudo, né?
🧙♂️ Doutor — Claro. Ele tem pontos fortes e fracos bem claros.
Pontos fortes
- Processamento de imagens (upload → geração de miniaturas)
- Transformação de dados (converter CSV em JSON)
- Envio de notificações (e-mail, push)
- Jobs em lote regulares (relatórios diários)
- APIs leves (busca de usuários, leitura de dados)
Pontos fracos
- Processamento em tempo real (chat, games)
- Tarefas de longa duração (transcodificação de vídeo, ML)
- Aplicações que exigem gestão complexa de estado
- Integrações fortemente acopladas a legados
🐣 Estudante — Então ele tem “explosão de velocidade mas pouca resistência”.
🧙♂️ Doutor — Isso mesmo! Excelente nos 100 metros, péssimo na maratona.
A armadilha das cobranças: ninjas pagos por hora
🐣 Estudante — Se gente forte não precisa e a fatura pode te matar, só vale para quem pensa bem?
🧙♂️ Doutor — Exato. Serverless é “ganha quem usa a cabeça, explode quem vacila”. Se você não entender a cobrança, vai ver o inferno.
🐣 Estudante — Que tipo de inferno?
🧙♂️ Doutor — Imagine escrever um código em loop infinito. Num servidor tradicional tudo fica lento. No serverless, “novos ninjas são convocados sem parar”.
🐣 Estudante — Um exército de ninjas trabalhando e cobrando por hora sem parar? Terror.
🧙♂️ Doutor — E você só percebe na fatura do fim do mês. “Como assim ¥1.000.000?” Casos de gente sendo cobrada centenas de milhares de ienes na AWS existem aos montes.
🐣 Estudante — Assustador. Tem como evitar?
🧙♂️ Doutor — Claro. Configura alerta de custo, limite de tempo de execução, limite de concorrência. É como redigir direito o “contrato de trabalho dos ninjas”.
Casos reais de fracasso: o medo do viral
🐣 Estudante — Já ouviu algum caso real de cobrança absurda?
🧙♂️ Doutor — Dezenas. Um famoso foi o “app de edição de fotos que estourou e recebeu uma fatura de ¥3.000.000”.
🐣 Estudante — Nossa… conta mais.
🧙♂️ Doutor — Uma startup criou um app que “embelezava fotos com IA”. Calculavam cerca de ¥0,1 por foto.
🐣 Estudante — E o que houve?
🧙♂️ Doutor — Bombou nas redes: 1.000.000 de fotos por dia. Cada foto demorava mais que o previsto e a conta real foi de ¥3 por foto.
🐣 Estudante — 1.000.000 × ¥3 = ¥3.000.000…
🧙♂️ Doutor — E isso por 30 dias. “Ficou famoso e quebrou”: a tragédia moderna.
🐣 Estudante — Não tinham prevenção?
🧙♂️ Doutor — Nenhum limite de cobrança. “Nunca pensamos que ia viralizar”. Hoje virou praxe definir um “teto para o sucesso”.
🐣 Estudante — Ironia: limitar o sucesso.
🧙♂️ Doutor — Pois é. “Gritos de alegria” viram gritos de dor na vida real.
Mudança na experiência de desenvolvimento: prazer mágico, dor das restrições
🐣 Estudante — E na hora de desenvolver? É diferente de programar normalmente?
🧙♂️ Doutor — No começo é divertido. Você escreve a função, aperta um botão e publica para o mundo. Parece até virar mago.
🐣 Estudante — Uau, parece divertido mesmo.
🧙♂️ Doutor — Mas com o tempo aparecem os espinhos. É difícil testar localmente, depurar é um saco. Quando pensa “por que não funciona?”, o ninja já sumiu e só restam logs.
🐣 Estudante — Tipo chegar à cena do crime depois, só com as evidências.
🧙♂️ Doutor — Exato. E os logs ficam espalhados em vários serviços: CloudWatch, X-Ray, CloudTrail. Vira brincadeira de detetive.
🐣 Estudante — Chato. Melhor montar o servidor logo.
🧙♂️ Doutor — Essa é a armadilha do serverless. No começo é magia fácil; depois, uma maldição complexa. Mas quem se acostuma não quer voltar a “cuidar do servidor”.
🐣 Estudante — Então vicia?
🧙♂️ Doutor — Sim. “Não se preocupar com servidor” é viciante. Mas no lugar disso vêm “preocupação com cobranças” e “limitações de design”.
Serverless vs. modelo tradicional: a realidade do custo
🐣 Estudante — No fim, qual sai mais barato?
🧙♂️ Doutor — Depende do uso e da previsibilidade. Pense num gráfico:
Servidor tradicional
- Custo fixo: ¥50.000 por mês
- Custo variável: quase zero
- Modelo ‘restaurante de prato feito’
Serverless
- Custo fixo: quase zero
- Custo variável: depende do uso
- Modelo ‘sushibar de esteira’
🐣 Estudante — Qual é mais barato depende do quanto você ‘come’.
🧙♂️ Doutor — Perfeito. Comer pouco → sushibar (serverless). Comer muito → prato feito (tradicional). Concretamente:
Até 1 milhão de requisições por mês: serverless vence com folga
Acima de 10 milhões de requisições por mês: servidor tradicional sai mais em conta
No meio: depende, considere também o custo operacional
🐣 Estudante — E se a previsão errar?
🧙♂️ Doutor — Vira jogo de azar. “Planejei devorar no prato feito e perdi o apetite” ou “Achei que ia comer pouco no sushibar e virou campeonato de glutões”.
Serverless vai vencer?
🐣 Estudante — Então serverless vai vencer ou fracassar?
🧙♂️ Doutor — Nem vitória absoluta, nem derrota certa. Servidores tradicionais, contêineres e serverless vão coexistir. “Precisamos de ninjas, cavaleiros e magos” no mesmo mundo.
🐣 Estudante — Entendi. Nenhuma tecnologia resolve tudo.
🧙♂️ Doutor — Isso. Não existe “bala de prata”. Mas usada no contexto certo, é uma ferramenta poderosíssima.
🐣 Estudante — Quem deveria usar?
🧙♂️ Doutor — Gente assim:
Perfil ideal para serverless
- Quer colocar algo em pé rapidamente
- Entende bem a estrutura de cobrança
- Prefere gestão simplificada a controle total
- Se empolga com tecnologias novas
Quem não combina com serverless
- Artesãos que querem controlar tudo
- Quem é ruim de planejar orçamento
- Quem prioriza acima de tudo a operação estável
- Quem não consegue se desvencilhar de legados
🐣 Estudante — Então é para “inovadores mão de vaca”.
🧙♂️ Doutor — Descrição excelente. Precisa juntar inovação com avareza.
Encerrando: viver no modo serverless
🐣 Estudante — No fim, o senhor recomenda serverless?
🧙♂️ Doutor — Não é questão de recomendar, e sim de “entender e saber usar”. É uma magia moderna em que você pesa a tentação da conveniência e o risco das cobranças.
🐣 Estudante — Magia… Se conjurar errado, volta contra o mago.
🧙♂️ Doutor — Isso. Por isso precisamos aprender a ‘pronúncia correta’. Serverless é “ganha quem usa a cabeça, explode quem se distrai”. Não serve para brutamontes, mas é arma poderosa para quem souber controlar.
🐣 Estudante — Então fica assim:
- Operar servidor: inferno físico de resistência
- Serverless: sobrevivência financeira com estratégia Certo?
🧙♂️ Doutor — Resumo perfeito. A escolha depende do contexto. Mas “não escolher nada” já não é opção. Engenheiros modernos precisam decidir se serão cavaleiros, ninjas ou magos.
🐣 Estudante — Entendido. Vou começar pelo básico e deixar o ninja para depois.
🧙♂️ Doutor — Com essa mentalidade você vira um grande ‘domador de ninjas’. Mas cuidado com a fatura.
🐣 Estudante — Sim! Vou configurar alerta de cobrança!
📌 Nota final: framework para decidir pelo serverless
Avalie em conjunto os pontos abaixo antes de adotar serverless:
Fatores técnicos
- Natureza do processamento (lote vs. tempo real)
- Frequência de execução (baixa vs. alta)
- Necessidade de manter estado
- Integração com sistemas legados
Fatores de negócio
- Orçamento para investimento inicial
- Habilidades do time de operação
- Precisão na previsão de crescimento
- Grau aceitável de vendor lock-in
Conclusão: serverless não é uma solução universal, e sim uma técnica especializada que rende muito quando usada no contexto certo. Com compreensão e preparo, vira uma arma poderosa; se adotada de forma leviana, custa caro.
Para engenheiros modernos, serverless é uma opção que precisa estar no radar — e uma tecnologia para aplicar onde fizer sentido.