Backend
Linguagem
Para o backend, foi escolhida a linguagem Kotlin devido a sua compatibilidade com a JVM, fácil configuração de ambiente, sintaxe simples e vários recursos disponíveis na sua biblioteca padrão.
Framework
Para o rápido desenvolvimento da aplicação, a escolha do framework recaiu sob um que tivesse extensa documentação e grandes exemplos na internet: o Spring Boot
Gerenciador de Dependências
Escolhemos o Gradle pois sua configuração, tanto instalação como a adição de dependências, se dá de forma muito mais simples do que com o Maven.
⚙ ️
Arquitetura Para o backend, foi decidido que seria utilizado um modelo de arquitetura em camadas para facilitar o desenvolvimento mas ainda assim manter uma consistência entre lógica de negócio e recursos do framework/aplicação
Além disso, outras práticas incluem:
- TDD
- DDD
- Documentação como código
- Tratamento/Apresentação adequada de erros
🔒
Segurança Para controle de acesso e autenticação foi decidido utilizar o OAuth 2
☁
Cloud Os recursos da AWS utilizados foram:
- S3 storage
- EKS
🐳
Containers Para facilitar a configuração em outros ambientes e a escalabilidade das aplicações, foi optado por usar containers Docker.
Containers encapsulam aplicações e as executam em um ambiente isolado.
Links Úteis
- https://www.geeksforgeeks.org/spring-boot-architecture/
- https://medium.com/@RogelioOrts/layered-architecture-spring-boot-af7dc071d2b5
- https://auth0.com/pt/intro-to-iam/what-is-oauth-2
- https://docs.spring.io/spring-security/reference/servlet/oauth2/index.html
- https://medium.com/cwi-software/primeiros-passos-com-docker-conceitos-b%C3%A1sicos-%C3%A0-cria%C3%A7%C3%A3o-de-sua-primeira-imagem-f6ac2a3c9d25
- https://www.freecodecamp.org/news/a-beginners-guide-to-docker-how-to-create-your-first-docker-application-cc03de9b639f/