Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • W Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Create a new issue
  • Jobs
  • Issue Boards
Collapse sidebar
  • Coopera RS
  • Wiki
  • Wiki
  • arquitetura

Last edited by Arthur Zanella Lovato Jun 20, 2025
Page history
This is an old version of this page. You can view the most recent version or browse the history.

arquitetura

Home Escopo e Cronograma Processo Design/Mockups Configuração Arquitetura Infra Código BD

O projeto Coopera RS adota uma arquitetura cliente-servidor, dividindo a solução em dois componentes principais:

  • Cliente (Front-end): Construído em React, responsável pela interface web e interação direta com o usuário.
  • Servidor (Back-end): Desenvolvido em Spring Boot, lidando com as regras de negócio, integrações e persistência de dados.

No diagrama, é possível observar que todo o ecossistema está executando dentro de contêineres Docker, provisionados em uma instância Amazon EC2 (AWS). Dessa forma, a aplicação front-end (React) e o back-end (Spring Boot) ficam encapsulados em contêineres separados, facilitando a escalabilidade e o isolamento de cada serviço.

A comunicação entre o front-end e o back-end acontece via requisições HTTP REST, seguindo o modelo tradicional de cliente-servidor. Quando o usuário acessa a aplicação web, as requisições são enviadas ao servidor Spring Boot, que processa as regras de negócio e interage com as bases de dados.

  • Integração com a AWS

Alguns serviços da Amazon Web Services (AWS) foram incorporados para dar suporte à aplicação:

  • Amazon S3: Utilizado para armazenar arquivos estáticos, imagens ou qualquer conteúdo que necessite de um bucket de alta disponibilidade e escalabilidade.
  • Amazon SES: Responsável pelo envio de e-mails transacionais, como confirmações de cadastro, notificações de compras ou recuperação de senha.
  • Pipeline de Integração Contínua (CI) e Implantação Contínua (CD)

O controle de versão e a automação de deploy são realizados via GitLab. O fluxo ocorre da seguinte forma:

  1. O desenvolvedor realiza um commit ou merge request no repositório do GitLab.
  2. Um GitLab Runner é acionado para executar testes e builds da aplicação.
  3. Caso seja aprovado, o runner gera as imagens Docker do front-end e do back-end.
  4. As imagens são enviadas para a instância EC2, onde são executadas como contêineres (ou atualizadas, em caso de uma nova versão).

Esse processo garante que todas as novas funcionalidades e correções sejam testadas antes de chegar ao ambiente de produção.

  • Padrão Arquitetural (Back-end)

Para a camada de serviços, foi adotada uma abordagem inspirada na Arquitetura Hexagonal, também conhecida como Ports and Adapters. Essa arquitetura visa separar o núcleo de regras de negócio (o “domínio”) das partes externas de comunicação (banco de dados, serviços externos, interface web etc.). Dessa forma, as “portas” são as interfaces que definem como o domínio se comunica com o resto do sistema, enquanto os “adaptadores” implementam essas portas em tecnologias específicas (ex.: repositórios para acesso ao PostgreSQL, controladores REST para expor endpoints etc.).

Essa estrutura modular facilita:

  • Manutenção: modificações em um adaptador (por exemplo, troca de banco de dados) podem ser feitas sem afetar diretamente o domínio.
  • Testabilidade: cada camada pode ser testada isoladamente, garantindo maior confiabilidade do sistema.
  • Evolução: novos serviços ou integrações podem ser adicionados sem grandes impactos no núcleo do projeto.

Diagrama de Deploy

image

Clone repository
  • API Backend
  • Escopo e Cronograma
  • Frontend
  • Processo
  • arquitetura
  • banco de dados
  • codigo
  • configuracao
  • design
    • mockups
  • Home
  • infraestrutura