Home | Escopo | Processo | Design/Mockups | Configuração | Arquitetura | Gerência | Código | BD | Qualidade | Analytics |
---|
Arquitetura do Projeto
Descrição
...
Sumário
[...]
Arquitetura geral
Frontend
Votação para definição da tecnologia do frontend
A arquitetura do frontend foi baseada no padrão moderno e bastante utilizado na indústria atual de aplicativos - baseado em 2024, o MVVM (Model,View,ViewModel). Utilizando React Native com TypeScript, foram necessárias algumas adaptações e concessões para que o projeto não corresse o risco de ser insustentável, pois a combinação do padrão de funcionamento React Native com a teoria do MVVM vem de encontro com um pouco mais de verbosidade, o que pode ser um entrave para programadores não tão experientes, como AGES I e II. É uma aposta de que seja garantido um projeto sólido.
Já para o Design System, optamos pelo Atomic Design, que é um sistema modular baseado em componentes. Essa metodologia torna o desenvolvimento de produtos digitais ou interfaces no geral mais escalável, uma vez que é mais fácil adicionar novas funcionalidades utilizando esse tipo de sistema (ref. cursospm3).
Abaixo, uma foto mostrando a divisão de componentes, onde um átomo é algo simples como um componente de InputText
, e moléculas são jusções de mais de uma célula/componente.
Backend
A arquitetura do projeto foi implementada baseada no tipo cliente-servidor. Onde o cliente é o aplicativo em React Native sendo executado no celular do usuário e o servidor é a aplicação Spring Boot, que é executada dentro de um container Docker dentro de uma máquina virtual EC2, no ambiante de nuvem AWS. Já por parte do código utilizamos o design pattern de Layers, este que possibilita a segregação de responsabilidades no backend por meio de camadas que se comunicam utilizando interfaces. Tais camadas implementadas foram a Controller para gerenciar as requisições dos clientes, a Service, encarregada das regras de negócio, e os Repository e Model, que se responsabilizam pela escrita e leitura no banco de dados.
Votação para definição da tecnologia do backend
Definimos Java e SprintBoot
- src.main.java = caminho para os diretórios do projeto com.ages.backend = caminho para os arquivos oficiais da arquitetura
- controller = diretório onde ficam os arquivos de controle das requisições a API REST
- mappers = diretório que contem os mappers, para mapear objetos da aplicação para a estrutura de dados do banco de dados e vice-versa
- dto = diretório onde ficam o tratamento de dados e suas validações das requisições para o banco
- Enum = diretório onde ficam os objetos enumerados (que possuem valores fixos) que podem ser utilizados
- model = diretório onde ficam as entidades (a estrutura de informações que vão ser salvos no banco)
- repository = diretório onde ficam os arquivos de tratamento das camadas de persistência do JPA
- service = diretório onde ficam validações mais complexas e funções utilizadas pelas requisições
- resources = diretório onde fica o application.properties com as configurações do spring
- test = diretório onde ficam os testes do projeto
- Downloads
Programa | Descrição |
---|---|
Como fazer o download do Java 21 | |
Como fazer o download do Maven 3.9.X | |
Como fazer o download do Postman | |
Como fazer o download da IDE IntelliJ |
Deploy
Estimativa de custo: infra_cost_estimate.pdf
Como fazer o deploy
Requisitos:
- Docker
- Repositório backend clonado
- Ferramenta para SSH
- Conta no DockerHub
Para o backend: 1 - Com projeto clonado na máquina local, rodar o comando no mesmo diretório:
mvn clean install
2 - Gerar a imagem do container Docker que irá conter nosso serviço:
docker build -t <userDockerhub>/iacc_backend:latest .
3 - Teste localmente o container para ver se ta tudo okay com o comando:
docker run -p 8080:8080 iacc_backend
4 - Faça login com suas credenciais do Dockerhub:
docker login
5 - Depois subir a imagem para o repositório do Dockerhub:
docker push <userDockerhub>/iacc_backend:latest
6 - Acesse remotamente a EC2 com ssh (peça a chave .pem para os AGES 3 ou 4):
ssh -i "iacc.pem" [email protected]
7 - Baixar a imagem do Dockerhub do nosso container dentro da EC2 após repetir o passo 4 nela:
docker pull <userDockerhub>/iacc_backend:latest
8 - Rodar o container:
sudo docker run -d -p 8080:8080 <userDockerhub>/iacc_backend:latest