Pipelines de CI/CD com GitHub Actions, Docker, Kubernetes e monitoramento
Um recorte prático dos pontos de DevOps que mais caem em prova: a automação de build e testes com GitHub Actions, a diferença entre imagem e contêiner no Docker, o papel do Kubernetes e como Grafana e New Relic se diferenciam no monitoramento.
Engenharia de Software · 5 DevOps e Integração Contínua · Atualizado em
Em provas de Engenharia de Software e de DevOps, o tema aparece quase sempre pelo mesmo caminho: o código sai do repositório, passa por build e testes automatizados, vira um artefato e chega ao ambiente de produção. Os conceitos são simples, mas as bancas adoram trocar termos parecidos. Veja os quatro pontos que mais exigem atenção.
Integração e entrega com GitHub Actions
No GitHub Actions, a automação é descrita em arquivos de configuração dentro do próprio repositório. Cada fluxo automatizado é chamado de workflow, e ele é composto por partes que se encaixam em sequência:
- Evento: o gatilho que inicia o workflow, como um push ou a abertura de um pull request.
- Job: um conjunto de passos executado em uma mesma máquina.
- Step: cada comando ou ação individual dentro de um job.
- Runner: a máquina que executa os jobs.
A grande confusão em prova está nos três estágios do processo. Compare:
- Integração contínua (CI): a cada alteração no código, o sistema compila e roda os testes automaticamente.
- Entrega contínua: o artefato fica sempre pronto para ir a produção, mas a publicação ainda pode depender de uma aprovação humana.
- Implantação contínua: cada mudança que passa pelos testes vai para produção sem intervenção manual.
🧠 Memorize: integração junta e testa; entrega deixa pronto; implantação põe no ar sozinha.
📌 Cai muito: o princípio é construir o artefato uma única vez e promover esse mesmo artefato pelos ambientes. Não se recompila o código para cada fase.
Docker: imagem, contêiner e Dockerfile
O Docker organiza três conceitos que as bancas costumam misturar:
- Dockerfile: a receita, em formato declarativo, que descreve como montar a imagem.
- Imagem: um pacote em camadas, somente leitura, com tudo o que a aplicação precisa para rodar.
- Contêiner: uma instância em execução de uma imagem.
⚠️ Pegadinha: a imagem não é alterada quando o contêiner roda. Para atualizar, troca-se o contêiner por outro, criado a partir de uma imagem nova. Dados que precisam sobreviver ficam em volumes ou em bancos externos, e não na camada do contêiner.
Outro ponto recorrente: a imagem costuma ser construída sobre uma camada base mínima, que não traz o kernel. O kernel é o do sistema hospedeiro, o que explica por que contêineres são sempre ligados à família de sistema operacional do host.
Kubernetes: orquestração de contêineres
O Docker cria e executa contêineres em uma máquina. O Kubernetes resolve o problema de manter muitos contêineres funcionando em um cluster. Os conceitos que mais caem são:
- Pod: a menor unidade implantável, com um ou mais contêineres que compartilham rede e armazenamento.
- Deployment: declara quantas réplicas devem existir e qual versão da imagem deve rodar. Atualizações são feitas de forma gradual, em um processo chamado *rolling update*.
- Service: oferece um endereço estável para acessar os pods, já que os pods são criados e destruídos o tempo todo e seus IPs mudam.
- Autorrecuperação e escalonamento: se um pod falha, ele é recriado; se a carga aumenta, o número de réplicas pode crescer.
📌 Cai muito: o Kubernetes orquestra. Ele não cria a imagem, que continua sendo gerada no processo de build, e sim decide onde e quantos contêineres rodam.
Monitoramento e observabilidade: Grafana e New Relic
Observabilidade se apoia em três tipos de dado: métricas, logs e traces. As duas ferramentas mais cobradas têm papéis diferentes:
- Grafana: foco em painéis (dashboards) e visualização. Ele consulta dados de diversas fontes e também dispara alertas, mas depende de outras ferramentas para coletar e armazenar as métricas.
- New Relic: plataforma de observabilidade em nuvem, que reúne coleta, análise e visualização. Usa agentes instalados na aplicação e oferece monitoramento de desempenho, como o APM.
🧠 Memorize: Grafana é painel sobre dados de várias fontes; New Relic é plataforma integrada que coleta e analisa.
⚠️ Pegadinha: não trate as duas como concorrentes diretos em tudo. Muitas equipes usam o Grafana para montar painéis sobre dados que chegam de outras fontes, inclusive de plataformas como o New Relic.
Continue estudando
Este recorte mostra apenas alguns pontos do tema. A aula completa, os mapas mentais e os flashcards com repetição espaçada sobre pipelines, contêineres, orquestração e monitoramento estão no plano do MemorizeCards. Veja os planos ou explore o catálogo.
Perguntas frequentes
Qual a diferença entre integração contínua, entrega contínua e implantação contínua?
A integração contínua faz build e testes automaticamente a cada mudança no código. A entrega contínua deixa o artefato sempre pronto para produção, mas a publicação ainda pode exigir aprovação. Na implantação contínua, toda mudança aprovada nos testes vai para produção sem intervenção manual.
Imagem Docker e contêiner são a mesma coisa?
Não. A imagem é o pacote somente leitura criado a partir do Dockerfile, e o contêiner é uma instância em execução dessa imagem. Por isso, a atualização troca o contêiner por outro criado de uma imagem nova, sem alterar a imagem nem o contêiner em execução.
Qual o papel do Kubernetes em relação ao Docker?
O Docker cria e executa contêineres, enquanto o Kubernetes orquestra muitos contêineres em um cluster. Ele decide quantas réplicas existem, onde cada uma roda, substitui pods que falham e gerencia atualizações graduais.