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
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • 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
    • 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
  • Plataforma de Marketing e Sales Analytics
  • Wiki
  • Wiki
  • Infraestrutura

Last edited by Gabriel Grellert Spiandorello Jun 05, 2025
Page history
This is an old version of this page. You can view the most recent version or browse the history.

Infraestrutura

Home Escopo e Cronograma Git Workflow Design e Mockups Configuração Arquitetura Infraestrutura BD Gerência

Infraestrutura AWS

No processo de deploy descrito no diagrama, o backend (APIs) e o banco de dados (PostgreSQL) são configurados em containers Docker executados em uma instância EC2. As imagens Docker desses serviços são buildadas a partir dos repositórios GitLab (revforce-api e revforce-front) por meio de um GitLab Runner também em container. Após cada build de backend, a EC2 puxa a imagem mais recente do Amazon ECR e inicia o container das APIs, garantindo que a versão em produção esteja sempre atualizada. Para o frontend, o fluxo de deploy faz com que, a cada push no repositório revforce-front, o GitLab Runner gere os arquivos estáticos e transfira tudo para um bucket Amazon S3, permitindo que o site seja servido diretamente de um storage estático. Esse conjunto de serviços automatiza completamente o ciclo de CI/CD: do commit no GitLab até a aplicação em produção, contemplando banco, APIs e front-end.


Diagrama de Deploy

diagrama_deploy_revforce


Componentes e Benefícios

A seguir, cada bloco do diagrama é explicado de forma resumida, com o propósito e o motivo de uso:

EC2 Instance

  • O que é: Máquina virtual Linux hospedada na AWS.
  • Para que serve:
    • Executar o Docker, que por sua vez roda todos os containers (Postgres, RevForce APIs e GitLab Runner).
    • Centralizar o pipeline de CI/CD sem necessidade de múltiplos servidores.
  • Benefícios:
    • Custos controlados (tudo em uma instância).
    • Simplicidade de gerenciamento: basta acesso SSH/Console para inspecionar logs e containers.

Docker

  • O que é: Plataforma de contenção de aplicações (containers).
  • Para que serve:
    • Isolar cada serviço (banco, APIs, runner) em ambientes independentes e facilmente recriáveis.
    • Garantir que todos rodem na mesma versão, sem conflitos de dependências.
  • Benefícios:
    • Portabilidade (mesmo container dev → prod).
    • Reprodutibilidade: se precisar recriar, basta puxar a imagem correta.

Postgres (Container Docker)

  • O que é: Serviço de banco de dados relacional.
  • Para que serve:
    • Armazenar tabelas, esquemas, usuários, dados do RevForce.
    • Receber conexões do container de APIs (RevForce APIs).
  • Benefícios:
    • Dados armazenados no Database Volume (EBS), garantindo persistência mesmo que o container seja parado ou recriado.
    • Facilidade de upgrade ou rollback simplesmente trocando a imagem Docker.

RevForce APIs (Container Docker)

  • O que é: Back-end do sistema empacotado em imagem Docker.
  • Para que serve:
    • Processar requisições do front-end e de consumidores externos.
    • Realizar CRUD no banco Postgres e aplicar regras de negócio.
  • Benefícios:
    • Deploy atômico: o GitLab Runner builda e faz push da imagem ao ECR, e a EC2 “puxa” a versão mais nova para produção.

GitLab Runner (Container Docker)

  • O que é: Executor de pipelines CI/CD do GitLab, registrado junto aos repositórios.
  • Para que serve:
    1. Escutar eventos (push/merge) nos repositórios revforce-front e revforce-api.
    2. Executar estágios definidos em .gitlab-ci.yml:
      • revforce-front: build do front-end e sincronização com S3.
      • revforce-api: testes, build de imagem Docker e push para ECR.
  • Benefícios:
    • Automação total do ciclo de deploy: commit → build → deploy.
    • Não há necessidade de runners externos: tudo roda dentro da mesma EC2.

EBS – Database Volume

  • O que é: Volume anexado à EC2.
  • Para que serve:
    • Persistir o diretório de dados do PostgreSQL.
    • Garantir durabilidade: mesmo que o container Postgres seja recriado, os dados permanecem.
  • Benefícios:
    • Snapshot fácil para backup.
    • Redimensionamento de volume sem interrupção.

EBS – Root Volume

  • O que é: Volume de bloco principal que contém o sistema operacional da EC2.
  • Para que serve:
    • Armazenar arquivos de sistema, configurações, dependências e logs do container das APIs.
    • Espaço onde o Docker armazena camadas e volumes ligados a serviços diversos (exceto o banco, que tem volume específico).
  • Benefícios:
    • Manutenção simplificada: tudo no Linux (atualizações, backups, logs).
    • Permite persistir arquivos de configuração sem poluir o volume do container.

Amazon S3

  • O que é: Serviço de armazenamento de objetos (arquivos) escalável e altamente disponível.
  • Para que serve:
    • Hospedar arquivos estáticos do front-end (HTML, CSS, JavaScript, imagens).
    • Servir diretamente ao usuário final sem necessidade de servidor Web tradicional.
  • Benefícios:
    • Custo muito baixo para hospedagem estática.
    • Alta performance / baixa latência.
    • Facilidade de versionamento e políticas de expiração.

Amazon ECR (Elastic Container Registry)

  • O que é: Registro privado de imagens Docker gerenciado pela AWS.
  • Para que serve:
    • Armazenar as imagens do revforce-api geradas pelo GitLab Runner.
  • Benefícios:
    • Integração nativa com EC2 e IAM Roles, sem necessidade de credenciais estáticas.
    • Segurança e escaneamento de vulnerabilidades.
    • Alta disponibilidade e baixa latência para pull de imagens em produção.

GitLab – Repositórios

  • revforce-front
    • Contém código-fonte do front-end.
    • Define pipeline de build → deploy (upload para S3).
  • revforce-api
    • Contém código-fonte do back-end.
    • Define pipeline de testes → build Docker → push para ECR.

Benefícios dos repositórios no GitLab:

  • Versionamento completo do código.
  • Configuração central de CI/CD (arquivo .gitlab-ci.yml).
  • Controle de acesso e revisão de código (Merge Requests, Revisões, Labels).

Conclusão

A infraestrutura apresentada otimiza o ciclo de desenvolvimento e deploy do RevForce ao:

  1. Centralizar todo o CI/CD em um único GitLab Runner dentro da EC2.
  2. Garantir persistência de dados via EBS (Database e Root).
  3. Escalar o front-end de forma simples e econômica diretamente no S3.
  4. Versionar e distribuir o back-end como imagem Docker pelo ECR.
  5. Reduzir custos operacionais ao não manter múltiplos servidores separados, concentrando tudo em uma única instância com containers.

Com essa arquitetura, bastam alguns comandos no GitLab (push em branches específicas) para que toda a stack (frontend + backend + banco) seja automaticamente atualizada em produção, garantindo agilidade e confiabilidade no fluxo de deploy contínuo.

Clone repository
  • Arquitetura
  • Banco de Dados
  • Configuração
  • Design e Mockups
  • Escopo e Cronograma
  • Gerência
  • Git Workflow
  • Infraestrutura
  • Home