A Amazon Web Services (AWS) é atualmente uma das plataformas de computação em nuvem mais utilizadas do mundo. Empresas de todos os tamanhos utilizam AWS para hospedar aplicações, bancos de dados, APIs, arquivos, microsserviços e sistemas críticos.
A Amazon Web Services (AWS) é atualmente uma das plataformas de computação em nuvem mais utilizadas do mundo.
Empresas de todos os tamanhos utilizam AWS para hospedar aplicações, bancos de dados, APIs, arquivos, microsserviços e sistemas críticos.
Sua popularidade se deve a alguns fatores:
Um dos maiores diferenciais da AWS é a flexibilidade.
Uma mesma aplicação pode ser construída de diversas formas dependendo do custo, desempenho, disponibilidade e complexidade desejados.
Imagine uma aplicação web moderna:
Usuário
|
v
Route53
|
v
Load Balancer
|
v
ECS Service
|
v
Containers Docker
|
v
RDS
Além disso:
Arquivos -> S3
Processamentos -> Lambda
Essa arquitetura é extremamente comum em empresas que utilizam microsserviços.
O S3 é o serviço de armazenamento de arquivos da AWS. Ele funciona como um enorme repositório de objetos.
Você pode armazenar:
Imagine um sistema de e-commerce. Quando o usuário envia uma foto de produto:
produto.jpg
A aplicação salva o arquivo no S3. O banco de dados armazena apenas:
https://bucket.s3.amazonaws.com/produto.jpg
O Route 53 é o serviço de DNS da AWS. Ele traduz nomes amigáveis para endereços de infraestrutura.
Exemplo:
api.minhaempresa.com
para
load-balancer.amazonaws.com
Usuário acessa:
https://api.minhaempresa.com
O Route 53 responde:
Esse domínio aponta para o Load Balancer X
A partir daí a requisição segue para a aplicação.
O ECS é o serviço de orquestração de containers da AWS. Ele permite executar aplicações Docker sem precisar gerenciar servidores manualmente.
Uma API .NET:
FROM mcr.microsoft.com/dotnet/aspnet:9.0
Gera uma imagem Docker. Essa imagem é enviada para a AWS.
O ECS executa os containers automaticamente.
Antes do ECS executar uma aplicação, ela precisa estar empacotada.
É aí que entram as imagens Docker.
Uma imagem contém:
Código
↓
Docker Build
↓
Imagem
↓
Registry (ECR)
↓
ECS
Uma API .NET:
docker build -t payment-api .
Gera uma imagem. Essa imagem é publicada no ECR.
Depois o ECS utiliza essa imagem para criar containers.
O Service é responsável por manter a quantidade desejada de containers executando.
Configuração:
Desired Count = 3
O ECS garante que existam sempre:
API 1
API 2
API 3
Se um container cair:
API 2 morreu
O ECS cria outro automaticamente.
O ECS pode aumentar ou reduzir containers automaticamente.
Configuração:
Mínimo: 2
Máximo: 10
Quando a CPU atingir:
80%
O ECS cria novos containers.
2 -> 4 -> 6 -> 8
Quando o tráfego diminui:
8 -> 6 -> 4 -> 2
Isso reduz custos.
Uma dúvida muito comum:
Como o HTTPS chega até meu container?
A resposta normalmente envolve um Load Balancer.
Usuário
↓
Route53
↓
Application Load Balancer
↓
ECS Service
↓
Container
Usuário acessa:
https://api.minhaempresa.com/clientes
O fluxo ocorre assim:
O Route 53 encontra:
api.minhaempresa.com
Recebe a conexão HTTPS.
Certificado SSL:
AWS Certificate Manager
Exemplo:
/clientes
→ Container da API de Clientes
/pagamentos
→ Container da API de Pagamentos
O Load Balancer encaminha para um container saudável.
payment-api-container-3
Lambda é o serviço serverless da AWS.
Você envia apenas uma função.
A AWS executa quando necessário.
Sempre que um arquivo for enviado ao S3:
produto.jpg
Uma Lambda é acionada.
Ela:
Tudo sem servidores dedicados.
O RDS é o serviço gerenciado de banco de dados relacional.
Suporta:
Uma aplicação de pagamentos pode armazenar:
Clientes
Pagamentos
Pedidos
Reembolsos
em um banco PostgreSQL hospedado no RDS.
Imagine um SaaS de gestão comercial.
Fluxo:
Usuário
↓
Route53
↓
Load Balancer
↓
ECS Service
↓
Container Docker
↓
RDS
Arquivos:
Usuário envia PDF
↓
S3
Processamento:
Upload
↓
Lambda
↓
Extrair informações
Escalamento:
Mais acessos
↓
Mais containers ECS
Tudo acontecendo automaticamente.
| Serviço | Função |
|---|---|
| S3 | Armazenamento de arquivos |
| Route 53 | DNS |
| ECS | Execução de containers |
| ECS Service | Gerenciamento dos containers |
| ECS Auto Scaling | Escalamento automático |
| Load Balancer | Distribuição de tráfego |
| Docker Image | Pacote da aplicação |
| Lambda | Execução serverless |
| RDS | Banco de dados relacional |
Grande parte das arquiteturas modernas na AWS é construída combinando poucos serviços fundamentais.
Uma aplicação típica utiliza:
Dominar esses componentes já permite compreender a arquitetura da maioria dos sistemas hospedados na AWS e fornece uma excelente base para evoluir para soluções mais avançadas envolvendo microsserviços, mensageria, observabilidade e arquiteturas distribuídas.