You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Nov 15, 2024. It is now read-only.
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
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).
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.
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.
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.
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.
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