Skip to content
This repository was archived by the owner on Nov 15, 2024. It is now read-only.

Repository files navigation

Fluxo DevOps do Projeto

1. Desenvolvimento e Versionamento de Código

  • GitHub:
    • Descrição: Os desenvolvedores colaboram no desenvolvimento de código utilizando repositórios GitHub separados para o frontend, backend e infraestrutura (DevOps).
    • Branches:
      • main: Branch principal usada para produção.
      • development_beta: Branch de desenvolvimento onde novas features e correções são feitas e testadas antes de serem mescladas na main.
    • Commits e Pull Requests:
      • Desenvolvedores fazem commits das alterações e abrem Pull Requests para revisão de código.
      • Revisões de código são feitas antes de mesclar as alterações nas branches principais.

2. Integração Contínua (CI)

  • Jenkins:
    • Descrição: Jenkins é usado para automatizar o processo de integração contínua, monitorando os repositórios GitHub para mudanças.
    • Pipeline de CI:
      • Checkout do Código:
        • Jenkins faz o checkout do código da branch relevante (ex.: development_beta).
      • Build:
        • Frontend: Utiliza npm ou pnpm para instalar dependências e compilar o código.
        • Backend: Utiliza Maven para construir o projeto Java.
      • Testes Automatizados:
        • Frontend: Cypress é usado para testes end-to-end.
        • Backend: JUnit é usado para testes unitários e de integração.
      • Análise de Qualidade:
        • ESLint: Verifica a qualidade do código JavaScript/TypeScript.
        • Prettier: Garante a formatação consistente do código.

3. Entrega Contínua (CD)

  • Docker & Docker Compose:
    • Descrição: Imagens Docker são construídas e gerenciadas para diferentes partes da aplicação, garantindo que todas as dependências e configurações estejam encapsuladas.
    • Pipeline de CD:
      • Construção de Imagens:
        • Jenkins constrói imagens Docker para o frontend e backend após a fase de build.
      • Deploy em Ambientes de Teste:
        • Docker Compose é usado para orquestrar múltiplos contêineres, criando um ambiente de teste que simula a produção.
        • Testes de Integração e E2E: Cypress executa testes end-to-end para garantir que a aplicação funciona corretamente.
      • Deploy em Produção:
        • Imagens Docker são implantadas no ambiente de produção após a aprovação.

4. Infraestrutura como Código (IaC)

  • Terraform:
    • Descrição: Terraform é usado para definir e provisionar a infraestrutura necessária, permitindo uma abordagem declarativa para a criação e gerenciamento de recursos.
    • Pipeline de IaC:
      • Definição de Infraestrutura:
        • Arquivos de configuração do Terraform definem recursos como máquinas virtuais, redes, balanceadores de carga, etc.
      • Provisionamento:
        • Jenkins aplica os scripts do Terraform para provisionar ou atualizar a infraestrutura.
      • Gerenciamento de Estado:
        • O estado da infraestrutura é versionado e armazenado para garantir consistência.

5. Entrega e Escalabilidade

  • NGINX:
    • Descrição: NGINX é configurado como proxy reverso e balanceador de carga, distribuindo o tráfego entre os serviços de frontend e backend.
    • Configuração de Proxy:
      • Roteamento de requisições:
        • /api: Direciona para o backend.
        • /: Direciona para o frontend.

6. Monitoramento e Logging

  • Ferramentas de Monitoramento (ex.: Prometheus, Grafana):
    • Descrição: Coletam e exibem métricas de desempenho e saúde dos serviços.
    • Alertas:
      • Configurados para notificar a equipe de DevOps sobre problemas críticos.
  • Logging (ex.: ELK Stack):
    • Descrição: Coleta, armazena e analisa logs de aplicação e sistema.
    • Análise de Logs:
      • Usada para identificar e resolver problemas.

Detalhamento dos Processos de DevOps

  1. Desenvolvimento e Versionamento de Código (GitHub):
    • O GitHub armazena o código-fonte e rastreia mudanças através de commits.
    • Pull requests são revisados e mesclados após aprovação.
    • Branches são usadas para gerenciar diferentes estágios de desenvolvimento (ex.: main, development_beta).
  2. Integração Contínua (CI) com Jenkins:
    • Jenkins monitora repositórios GitHub e dispara pipelines de CI.
    • Pipelines incluem etapas de checkout, build, testes automatizados e análise de qualidade.
  3. Entrega Contínua (CD) com Docker & Docker Compose:
    • Docker Compose orquestra contêineres para criar ambientes de teste e produção.
    • Testes de integração e E2E são executados para validar a aplicação.
    • Imagens Docker são implantadas em produção após aprovação.
  4. Infraestrutura como Código (IaC) com Terraform:
    • Terraform define a infraestrutura de maneira declarativa.
    • Jenkins aplica scripts do Terraform para provisionar e gerenciar recursos de infraestrutura.
    • O estado da infraestrutura é versionado para garantir consistência.
  5. Entrega e Escalabilidade com NGINX:
    • NGINX atua como proxy reverso, roteando tráfego entre frontend e backend.
    • Configurações de proxy são definidas para otimizar o desempenho e a escalabilidade.
  6. Monitoramento e Logging:
    • Ferramentas de monitoramento coletam métricas de desempenho.
    • Logs são armazenados e analisados para identificar e resolver problemas.
    • Alertas são configurados para notificar a equipe de DevOps sobre problemas críticos.

About

Configuration files and scripts for DevOps and QA automation

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages