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

arquitetura

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

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