Home | Sprints | Requisitos | Arquitetura | Configuração | Mockups | Banco de Dados | Instalação | Gerência de Projeto | Recursos da AWS |
---|
Arquitetura e Métodos Utilizados
GitFlow
O que é?
GitFlow é o processo de contribuição para os projetos utilizando a ferramenta do Git. As definições presentes neste doc se aplicam tanto para os repositórios de frontend quando para o repositório de backend.
Branches protegidas:
As seguintes branches nunca devem ser apagadas e possuem regras específicas:
main
Branch principal do projeto. Esta branch deve sempre representar o código rodando no ambiente de produção. A branch é protegida e só pode ser alterada a partir de Merge Requests vindo diretamente da branch develop OU de branches de hotfix. Apenas AGES III e IV podem fazer merge dos MRs e realizar alterações nessa branch.
Quando é feito merge de um MR para essa branch, a Pipeline de CI é disparada para checagem.
dev
Branch default para desenvolvimento. Esta deve ser a branch de partida de todas as outras branches do projeto, exceto hotfix. Essa branch é protegida para modificação que não seja através de Merge Requests. Qualquer AGES pode criar um MR pra ela e fazer merge desse MR.
Quando é feito merge de um MR para essa branch, a Pipeline de CI é disparada para checagem e em caso de sucesso o deploy é feito automaticamente para o ambiente de DEV.
Branches não protegidas (feature/fix/chore/Hotfix):
Feature: branches para implementação de funcionalidades novas. O padrão de nomenclatura é feature/ onde representa uma breve descrição do que está sendo implementado nesta branch. Exemplo: feature/tela-cadastro.
Fix: branches para correção de bugs. O padrão de nomenclatura é fix/ onde representa uma breve descrição do que está sendo corrigido nessa branch. Exemplo: fix/cor-errada-no-login.
Chore: branches para configuração. O padrão de nomenclatura é chore/ onde representa uma breve descrição do que está sendo configurado nessa branch. Exemplo: chore*/pipeline-ci*.
MRs dessas branches devem sempre ser abertos para develop.
Hotfix: é um padrão específico para "furar" o fluxo de desenvolvimento e aplicar uma correção diretamente em um ambiente mais alto (no caso do projeto, produção). Uma branch hotfix segue o padrão hotfix/ onde representa uma breve descrição do que está sendo corrigido nessa branch.
Devem ser abertos 2 MRs: um para main e um para develop.
Como posso criar uma branch?
Para garantir que o processo de desenvolvimento esteja sempre atualizado, lembre-se de executar o seguinte comando na branch dev antes de criar uma branch nova:
git pull origin dev
git checkout -b feature/<nomeDaBranch>
git push --set-upstream origin feature/<nomeDaBranch>
Commits
Salvando Localmente
Para garantir que apenas o código necessário para funcionamento da tarefa lembre-se de realizar o comando add
apenas nos arquivos essenciais para a tarefa:
git add <nomeDoArquivo>
git commit -m 'descrição da tarefa em português'
Caso tenha interesse, há um padrão de commits similar a nomenclatura de branches escolhida chamado conventional commits mas isso é apenas uma sugestão pra quem tiver interesse em conhecer.
Não hesite em realizar vários commits, assim podemos ter docuemntado e salvo vários estados do desenvolvimento
Salvando Remotamente
Depois de finalizar o desenvolvimento, envie todos os commits da sua máquina para o servidor remoto. Para isso depois de realizar as etapas de salvamento local, salve remotamente com o comando push
:
git push
Diagrama de Deploy
Diagrama de Componentes
Modelo da Arquitetura usada pelo Aplicativo
O modelo escolhido para ser utilizado na comunicação entre os componentes foi o modelo MVVM. A camada Model( Modelo ) não conhece a View( Camada de apresentação ) e vice-versa, na verdade a View conhece a ViewModel e se comunica com ela através do mecanismo de binding.
A View, atravéz do databinding, interage com a ViewModel notificando a ocorrência de eventos e o disparo de comandos. A ViewModel por sua vez, responde a esta notificação realizando alguma ação no modelo; seja obtendo alguma dado, atualizando ou inserindo informações no modelo.
-
View: A responsabilidade da View é definir a aparência ou estrutura que o usuário vê na tela;
-
ViewModel: A responsabilidade da ViewModel no contexto do MVVM, é disponibilizar para a View uma lógica de apresentação. A View Model não tem nenhum conhecimento específico sobre a view, ou como ela implementada, nem o seu tipo. A ViewModel implementa propriedades e comandos, para que a View possa preencher seus controles e notifica a mesma, caso haja alteração de estado; seja através de eventos ou notificação de alteração;
-
Model: o Model no MVVM, encapsula a lógica de negócios e os dados. O Modelo nada mais é do que o Modelo de domínio de uma aplicação, ou seja, as classes de negócio que serão utilizadas em uma determinada aplicação. O Modelo também contém os papéis e também a validação dos dados de acordo com o negócio, cuja aplicação em questão visa atender.
Arquitetura usada no Back-end
Optou-se por utilizar a arquitetura em camadas, pela sua facilidade e naturalidade de implementação, suportando bem o serviço que estamos implementando. Cada camada tem uma função, onde:
- Routes: Nossa camada de apresentação, lida com toda interface do usuário e lógicas de comunicação com navegadores.
- Services: Nossa camada de regras de negócios.
- Repositories: Nossa camada de persistência dos dados, faz as chamadas ao banco de dados utilizando os Models.
- Models: Nesta pasta estão todas as representações das tabelas do nosso banco de dados, mas de uma forma com que possamos trabalhar facilmente no código: Classes. Os dados são recuperados do banco e convertidos para as classes criadas.
Seguindo um fluxo que percorre a estrutura: Route > Service > Repository > Model.