Definição, componentes e quem é responsável pelo quê.
Um modelo de computação em nuvem no qual você executa código sem gerenciar diretamente os servidores.
O nome engana: a máquina continua lá, só não é você quem cuida dela.
Manutenção, disponibilidade e escalabilidade passam para a nuvem.
O código roda quando algo acontece, não o tempo todo.
O time trabalha na lógica de negócio, não na infraestrutura.
Quem faz o quê dentro da arquitetura.
| Componente | Responsabilidade |
|---|---|
| Evento | Dispara a execução: requisição HTTP, upload, mensagem, agendamento. |
| API / Gateway | Recebe a requisição, autentica e roteia para a função correta. |
| Função | Executa a lógica de negócio; é pequena, isolada e sem estado. |
| Banco de dados | Guarda o estado da aplicação, já que a função não o mantém. |
| Armazenamento | Guarda arquivos e mídia, e pode gerar eventos ao receber conteúdo. |
| Provedor de nuvem | Provisiona, escala, monitora e mantém toda a infraestrutura. |
Do evento até a resposta, e o que acontece quando chegam mil de uma vez.
Sem nenhum servidor provisionado por nós.
Envia a requisição.
Autentica e roteia.
Executa a lógica.
Lê e grava o estado.
Volta ao usuário.
A função só existe enquanto executa: termina o trabalho, o ambiente é liberado.
Mil requisições simultâneas viram mil execuções em paralelo, sem nenhuma configuração.
A dor operacional de um lado, a resposta da arquitetura do outro.
Trade-offs, cenários, ferramentas e um caso real do começo ao fim.
A pergunta não é se é melhor, e sim em qual cenário as características ajudam.
O papel de cada serviço dentro do ecossistema.

Executa a função em resposta a um evento. É o FaaS mais conhecido.

Porta de entrada HTTP: recebe, autentica e encaminha às funções.

Armazena arquivos e dispara eventos quando recebe conteúdo novo.

Equivalente da Microsoft para execução de funções por evento.

Funções gerenciadas dentro do ecossistema do Google Cloud.

Contêineres sem servidor, para quando a função pura não basta.
def handler(event, context):
info = event["Records"][0]["s3"]
bucket, key = info["bucket"]["name"], info["object"]["key"]
obj = s3.get_object(Bucket=bucket, Key=key)
img = Image.open(io.BytesIO(obj["Body"].read()))
img.thumbnail((200, 200))
buf = io.BytesIO()
img.save(buf, format="JPEG")
# outro bucket: evita disparar um novo evento
s3.put_object(Bucket="miniaturas", Key=key, Body=buf.getvalue())
tabela.put_item(Item={"arquivo": key})
def handler(event, context):
for r in event["Records"]:
if r["eventName"] != "INSERT":
continue
email = r["dynamodb"]["NewImage"]["email"]["S"]
ses.send_email(
Source="no-reply@exemplo.com",
Destination={"ToAddresses": [email]},
Message={
"Subject": {"Data": "Confirme seu cadastro"},
"Body": {"Text": {"Data": "Bem-vindo!"}},
},
)
Nenhum servidor ficou ligado esperando. A função existe apenas durante o processamento, e a cobrança corresponde a esse tempo.
Todo dia às 8h, uma regra do Amazon EventBridge dispara a função.
Consulta as vendas do dia anterior e monta o relatório.
Guarda o relatório do dia.
def handler(event, context):
ontem = date.today() - timedelta(days=1)
vendas = consulta_vendas(ontem) # consulta ao banco
relatorio = {"data": str(ontem),
"total": sum(v["valor"] for v in vendas)}
s3.put_object(
Bucket="relatorios",
Key=f"vendas/{ontem}.json",
Body=json.dumps(relatorio),
)
cron(0 11 * * ? *)
# minutos horas dia mês dia-da-semana ano
# todo dia às 11h UTC = 8h em Brasília
O código roda só nos minutos em que o trabalho acontece. Um servidor tradicional ficaria ligado 24 horas para trabalhar alguns minutos por dia.
Serverless troca o controle da infraestrutura por agilidade e escala automática. É uma escolha de cenário, não um upgrade universal.
aws.amazon.com/serverlessdocs.aws.amazon.com/lambda/latest/dg/lambda-runtime-environment.htmlpress.aboutamazon.com/2014/11/amazon-web-services-announces-aws-lambdadevelopers.googleblog.com/2008/04/google-app-engine-at-campfire-one.htmlibm.com/topics/serverlessdatabricks.com/glossary/serverless-computingredhat.com/pt-br/topics/cloud-native-apps/what-is-serverlessalura.com.brserverless.com