Skip to main content

Overview

Harness

Documentação Oficial

A Google e o ServiceNOW são os principais investidores na Harness. Muitas empresas como o banco C6, Localiza, 3M, Ebay, Nike, Vodafone, Nvidia e até a Nasa utilizam esta ferramenta.

Na verdade Harness é uma plataforma que envolve muito mais do que o CI CD que seria o buid e o push de um artefato. A idéia da ferramenta é criar um ciclo de DevOps que abstraia toda a esteira incluindo:

  • Governância
  • Auditoria
  • Segurança
  • SRE
  • Desenvolvimento
  • Qualidade

O Harness possui várias features que você pode ou não utilizar crescendo dentro da plataforma caso necessário.

É possível fazer tudo o que o Harness oferece utilizando ferramentas open source e aplicando dentro dos pipelines em diferentes estágios. Porém nem todas as empresas possuem pessoas capacitadas e verba para desenvolver e manter um pipeline enorme que poderia existir. As vezes a empresa até possuí mas prefere terceirizar e evitar tantos treinamentos no onboard dos novos colaborador sendo que a rotatividade no mercado de TI é muito grande.

O foco principal é na experiência do desenvolvedor, para que ele consiga entregar o mais rápido possível o trabalho e evitando toda a burocracia do processo.

Para facilitar essa dinâmica até templates prontos com pipelines existe para que o desenvolvedor utilize e evite muitas configurações podendo já iniciar seu código de forma rápida.

Dentro da plataforma do Harness você terá um repositório de código que é o projeto Gitness. Este é open source e pode ser deployado para ter o seu próprio repositório git caso deseje, assim como Gitlab, porém menos pesado.

Licenças

Como a licensa muda é bom conferir a documentação oficial.

Não é open source mas possui uma conta free para pequenos projetos e estudo. Crie sua conta para estudar.

Developer é o grupo de pessoas que contribuem com o desenvolvimento, deploy, segurança, otimização do código. Cada developer criado na sua conta terá acesso diretamente aos módulos principais do Harness.

Os módulos são integrais ao fluxo de trabalho diário de um desenvolvedor. Cada módulo (CODE, CI, FF, SEI, IDP) requer uma licença de desenvolvimento separada para cada usuário.

Avisando que não fica muito barato não!

Módulos

Como mensionado acima, não é necessário iniciar utilizando todos os módulos, podendo crescer caso necessário.

Abaixo alguns módulos que vale a pena comentar, mas existem outros.

Continuos Delivery e GitOps

Projetado para automatizar e gerenciar o processo de entrega de software, desde o desenvolvimento até a produção.

  • Pipelines visuais e configuráveis para facilitar a automação.
  • Deploy em diversas infraestruturas como Kubernetes, VMs e serviços oferecidos pelas principais clouds.
  • Integração com Terraform e Ansible.
  • Rollback automatizado em caso de falhas na implantação.
  • Fluxo de aprovação configuráveis para garantir que somente código revisado chegue na produção.
  • Gerenciamento de releases com visibilidade sobre o que esta sendo implantado em cada ambiente.
  • Integração com as principais ferramentas de monitoramento e log como Prometheus, Splunk, etc.
  • Coleta de métricas para avaliação continua das aplicações.
  • No caso de GitOps rastreabilidade das mudanças.
  • Reconciliação contínua para comparar o estado atual com o estado desejado.
  • Fácil reversão de commits para estados anteriores e histórico completo das mudanças para auditoria.

Continuos Integration (CI)

Oferece uma série de recursos para otimizar o processo de integração contínua em um ambiente de desenvolvimento de software.

  • Automação de build e testes.
  • Integração com repositórios de código como GitHub, GitLab e Bitbucket, permitindo a detecção automática de mudanças e a execução de pipelines de CI.
  • Otimização do uso de recursos e velocidade em grande escala de builds e testes.
  • Integração com várias ferramentas do mundo DevOps incluindo as da própria Harness.
  • Interface gráfica para configuração e gerenciamento de pipelines facilitando criação e manutenção.

Feature Flags (FF)

  • Ajuda a controlar os lançamentos para usuário ou grupos de usuários específicos.
  • Segmentação baseada em atributos como localização, versão do app, tipo de usuário, etc.
  • Deploy canário e blue green.
  • Testes para comparar diferentes versões de uma funcionalidade e determinar qual delas oferece melhor desempenho e aceitação.
  • Rollbacks ou desativar alguma funcionalidade em caso de feedback negativo.
  • Monitoramento do impacto das novas funcionalidades através de métricas integradas e relatórios podendo ajudar em decisões futuras.

Infrastructure as Code Management

O módulo permite que você defina, gere e gerencie sua infraestrutura usando código, o que promove uma abordagem mais consistente e replicável para a gestão da infraestrutura. Você pode usar ferramentas como Terraform, Ansible, ou CloudFormation para definir a infraestrutura desejada.

  • Fornece visibilidade sobre o estado da sua infraestrutura e os resultados das implementações de IaC com dashboards e relatórios em tempo real.
  • Verificação de segurança da infraestrutura, garantindo que as configurações estejam de acordo com as políticas de segurança e melhores práticas da sua organização.
  • Se integra com o Continuous Delivery, permitindo combinar a gestão da infraestrutura com pipelines de entrega contínua ajudando a garantir que a infraestrutura esteja sempre alinhada com o código de aplicação.
  • Ajuda a monitorar e otimizar o uso dos recursos e os custos associados à infraestrutura, ajudando a manter o orçamento sob controle.

Chaos Engineering

Vltado para melhorar a resiliência e a confiabilidade dos sistemas através da introdução controlada de falhas e anomalias

  • Simulação de falhas e problemas em ambientes de produção ou testes para verificar como o sistema responde a condições adversas.
  • Facilita a criação e execução de experimentos de caos de forma controlada, onde você pode definir quais partes do sistema serão impactadas e quais falhas serão introduzidas.
  • Se integra com pipelines de CI/CD, permitindo que você adicione testes de caos como parte do processo de entrega contínua.
  • Monitoramento e analisar o impacto dos experimentos de caos. Você pode visualizar o comportamento do sistema durante e após a execução dos testes, o que ajuda a entender a eficácia das estratégias de resiliência implementadas.
  • Permite automatizar e agendar experimentos de caos para que eles ocorram regularmente ou em momentos específicos para que o sistema seja testado de forma contínua e que a resiliência seja constantemente verificada.
  • Fornece relatórios detalhados e insights sobre o impacto dos experimentos de caos.
  • Se integra com outras ferramentas e plataformas.

Service Reliability Management

Foca em garantir a confiabilidade e o desempenho dos serviços em ambientes de produção.

  • Oferece recursos para monitorar a saúde e o desempenho dos serviços em tempo real. Isso inclui a coleta e análise de métricas, logs e traces para identificar e diagnosticar problemas rapidamente.
  • Permite definir e monitorar Acordos de Nível de Serviço (SLAs) e Objetivos de Nível de Serviço (SLOs). Você pode configurar metas de desempenho e disponibilidade, e o módulo ajuda a garantir que esses objetivos sejam atendidos.
  • Alertas e notificações para informar as equipes sobre problemas críticos ou eventos que possam impactar a confiabilidade dos serviços.
  • Facilita a análise e o gerenciamento de incidentes. Fornece ferramentas para documentar, investigar e resolver problemas, além de oferecer insights sobre a causa raiz e as medidas corretivas.
  • Integra com mecanismos de automação para resolver problemas comuns ou recorrentes de forma automática, reduzindo a necessidade de intervenção manual e acelerando a recuperação.
  • Dashboards e relatórios detalhados sobre o desempenho dos serviços e o estado de confiabilidade.
  • Melhoria Contínua: Ajuda a identificar áreas para melhorias contínuas na confiabilidade dos serviços, através da análise de dados históricos e do desempenho dos serviços ao longo do tempo.

Reflexão

Muitas ferramentas open source em conjunto atendem perfeitamente o que o Harness se propõe, mas chega um momento que a complexidade se torna tão alta que muitas empresas possuem procuram uma solução as a service para dar ao desenvolvedor mais facilidades ou resolvem desenvolver sua própria plataforma de desenvolvimento com um time de platform engineer.

O desenvolvedor espera fazer um commit no código, abrir um pull request e ter esse código entregue com qualidade, governância, segurança, testes tudo integrado.

Usando ou não usando esta ferramenta lembre disso: Para DevOps o desenvolvedor é o cliente! De uma forma ou de outra temos que focar na experiência do desenvolvedor.