Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • S Sow Good Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 1
    • Issues 1
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • SOW GOOD
  • Sow Good Wiki
  • Wiki
  • arquitetura

Last edited by Lucas Tashan Porto Ramos Jun 21, 2023
Page history

arquitetura

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.

gitflow

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
Depois da execução desse comando é necessário oficialmente criar a Branch, para isso, execute o seguinte comando:
git checkout -b feature/<nomeDaBranch>
Assim que criar a branch, é necessário fazer um \`push\`para garantir que a mesma estará remota:
git push --set-upstream origin feature/<nomeDaBranch>
Pronto! Agora você já pode começar a programar na sua Branch.

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>
Depois de adicionar todos os arquivos que deseja salvar, execute o commando de commit com uma mensagem curta que represente o que foi trabalhado nesses arquivos adicionados:
git commit -m 'descrição da tarefa em português'
O padrão de commits é que as mensagens devem ser 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

Image

Diagrama de Componentes

Image

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.

Image

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.

Clone repository
  • AWS
  • Gerenciamento do Projeto
  • arquitetura
  • banco_dados
  • configuracao
  • Home
  • mockups
  • requisitos
  • sprints