Este projeto está em desenvolvimento. Novas funcionalidades e melhorias estão sendo implementadas para aprimorar a estrutura e facilitar a reutilização em futuros projetos que utilizem serviços da AWS (LocalStack). A estrutura de infraestrutura é construída do zero para integrar e utilizar vários serviços AWS, permitindo flexibilidade e escalabilidade para diferentes cenários de aplicação.
Em breve, será adicionada uma documentação detalhada ao README, cobrindo a arquitetura, configurações e instruções de uso para facilitar a compreensão e a implementação do projeto.
Se você tem interesse em acompanhar o progresso, fique à vontade para explorar as atualizações e contribuir com sugestões ou melhorias!
- Java 21 (LTS) ou Java 17 (LTS mínimo)
- Maven 3.8.0 ou superior
- Docker e Docker Compose
- IDE recomendada: IntelliJ IDEA ou Eclipse
O projeto segue a Clean Architecture com a seguinte estrutura:
spring-studious-lab-aws/
├── lab-core/ # Camada de domínio e casos de uso
├── lab-dataprovider/ # Camada de infraestrutura e repositórios
└── lab-entrypoint/ # Camada de controllers e APIs REST
# Clone o repositório
git clone https://github.com/wallanpsantos/spring-studious-lab-aws.git
# Entre no diretório
cd spring-studious-lab-aws
# Inicie os containers
docker-compose up -d
POST http://localhost:8082/v1/emprestimos
Content-Type: application/json
{
"identificador_cliente": "123",
"nome": "João Silva",
"email": "joao@email.com",
"descricao_emprestimo": "Empréstimo pessoal",
"valor_solicitado": 5000.00,
"data_final_vencimento": "2025-12-29"
}
PUT http://localhost:8082/v1/pagamentos
Content-Type: application/json
{
"client_id": "123",
"payment_items": [
{
"payment_id": "PAY001",
"payment_value": 1000.00,
"payment_status": "parcial"
}
]
}
O projeto utiliza LocalStack para simular serviços AWS localmente:
- S3: Armazenamento de documentos
- SNS: Sistema de notificações
- SQS: Filas de mensagens
Os serviços são configurados automaticamente através dos scripts em /localstack
:
init-s3-bucket.sh
: Cria buckets S3init-sns-topic.sh
: Configura tópicos SNSinit-sqs-queue.sh
: Configura filas SQSsubscribe-sqs-to-sns.sh
: Configura assinaturas
-
Validação de Dados
- Implementar validação customizada usando
@Validated
- Adicionar validação de negócios no domínio
- Implementar validação customizada usando
-
Segurança
- Implementar autenticação OAuth2/JWT
- Adicionar rate limiting
- Implementar CORS adequadamente
-
Observabilidade
- Adicionar Micrometer para métricas
- Implementar tracing distribuído
- Melhorar logs estruturados
-
Testes
- Aumentar cobertura de testes
- Implementar testes de integração
- Adicionar testes de contrato
-
Documentação
- Melhorar documentação OpenAPI
- Adicionar exemplos de uso
- Documentar regras de negócio
-
Clean Code
- Manter métodos pequenos e focados
- Usar nomes significativos
- Seguir princípio da responsabilidade única
-
Clean Architecture
- Manter independência de frameworks
- Inversão de dependência
- Separação clara de camadas
-
Tratamento de Erros
- Usar exceções específicas do domínio
- Implementar circuit breaker
- Logging adequado
logging:
level:
root: INFO
br.com.springstudiouslabaws: DEBUG
org.springframework: INFO
Para desenvolvimento local:
- Configure o application-local.yml
- Use o profile "local"
- Execute o LocalStack
- Inicie a aplicação
-
Erro de Conexão com MongoDB
- Verifique se o container está rodando
- Confirme as credenciais no .env
-
Erro nos Serviços AWS
- Verifique o LocalStack
- Confirme as configurações no .env