Foto de Barn Images na Unsplash

5 ferramentas de DevOps que você precisa conhecer em 2023

Descubra as principais ferramentas de DevOps para usar em cada etapa do ciclo de vida de DevOps.

DevOps from Zero!💻
8 min readJan 19, 2023

--

Para quem está por dentro do mercado de tecnologia, DevOps, Cloud, desenvolvimento de software, sabe o imenso número de ferramentas que existem disponíveis no mercado. Se quiser ficar mais pirado ainda, basta olhar o landscape da CNCF (Cloud Native Computing Foundation), onde está mapeado por tópicos, as mais variadas ferramentas e tecnologias. Hoje a ideia é mostrar algumas das principais ferramentas usadas no mercado, e deixar alguns conceitos e alternativas, que podem agregar ainda mais no seu conhecimento. Já encorajando você… não perde tempo hein, se deu match com determinada ferramenta, corre pro seu #homelab💻e começa a criar e estudar, bora seguir a jornada de DevOps em 2023. 🚀🚀🚀

O contexto de DevOps

DevOps refere-se à integração das equipes de desenvolvimento (Dev) e operações (Ops) dentro de uma empresa. Abrange cultura, processos e as filosofias de uma organização. Não menos importante do que a cultura, as ferramentas de DevOps, facilitam os pilares de DevOps, como colaboração, automação e entregas contínuas, onde permite que todo o processo de desenvolvimento seja mais rápido e consistente. A ideia do artigo é explorar 5 ferramentas, que você pode começar a testar e assim garantir mais flexibilidade, e eficiência na suas entregas dentro do ciclo de DevOps.

Ferramentas de DevOps

Para que possamos ter uma ideia por tópicos, precisamos entender primeiramente, como estão classificadas as ferramentas dentro do ciclo de DevOps, e para isso, separei conforme o modelo abaixo. As ferramentas dentro DevOps, auxiliam em todo o ciclo de desenvolvimento de um aplicativo, até a etapa de deploy e monitoramento, com foco na automação e colaboração nas atividades dentro dos time de (Dev) e (Ops).

  • Ferramentas de Controle de Versão:. são as ferramentas usadas para versionamento de software e aplicativos, denominadas como (VCS). Basicamente essas ferramentas fazem todo o gerenciamento do workflow do código de software, como rastreio de quaisquer alterações. Hoje em dia existem ferramentas que fazem esse processo de gerenciamento entre times, com múltiplos recursos disponíveis, e bem usados no mercado de tecnologia, com o GitHub.
  • Ferramentas de Gerenciamento de Containers:. No contexto do desenvolvimento de software, um container é um aplicativo ou software empacotado em um ambiente portátil. Eles contêm as bibliotecas, estruturas e quaisquer dependências relacionadas à um aplicativo. Com o uso de containers, obtemos a execução de aplicativos em vários ambientes, independentemente do sistema operacional (SO) que está sendo utilizado.
  • Ferramentas de Gestão de Configuração:. são as ferramentas que garantem a configuração do processo de monitorar, e manter a funcionalidade de um sistema. Dentro de DevOps, existem muitas ferramentas que ajudam a garantir, que as configurações estejam sendo aplicadas de forma consistente, dentro do esperado.
  • Ferramentas de Infraestrutura como Código:. são as ferramentas com o propósito de provisionar recursos e serviços, em provedores de nuvem como (AWS, Azure, GCP), e outros produtos como (Kubernetes, DataDog, GitLab), No contexto de DevOps, a abordagem de (IaC) é muito utilizada, pois facilita o processo de criação e manutenção de infraestruturas complexas, sendo possível o versionamento, alteração e destruição dos recursos de forma gerenciada e consistente.
  • Ferramentas de CI/CD:. (Continuous Integration), é a prática de integrar as alterações de código com a maior regularidade possível. (CI) é um pré-requisito para entrega contínua (CD). Tradicionalmente, o processo de (CI) começa quando as alterações de código são confirmadas em um sistema de controle de origem (Git, Mercurial ou Subversion) e termina com um artefato testado pronto para ser consumido por um sistema de (CD).

1. Ferramenta de DevOps para Controle de Versão

GitHub é uma plataforma completa de gerenciamento de repositórios Git para colaboração e controle de versão. O GitHub permite que você (e outras pessoas) trabalhem juntos em projetos de TI. Voltado para o mercado (DevOps), o GitHub é disparado uma das ferramentas mais utilizadas por profissionais da área, comunidades, projetos open-source e abriga uma infinidade de projetos de divesos tamanhos e empresas ao redor do mundo. O GitHub foi comprado pela Microsoft e tem recebido muitas melhorias, entre elas Actions, Copilot, Pages e outras features.

O GitHub ajuda no gerenciamento de projetos focado em colaboração, e nas melhores práticas de desenvolvimento de software/produto, pois, possui um portfólio gigantesco de features e componentes como as Actions que lhes permite conectar e entregar software de forma mais rápida e assertiva, focando em todas as etapas do ciclo de desenvolvimento até o ponto de deploy do aplicativo. O GitHub também ajuda a organizar melhor seus projetos/documentações, é muito usado pela comunidade e com baixa curva de aprendizado, visto que, sua documentação é direta ao ponto, bem exemplificada e possui muito conteúdo pela web.

Conceitos

  • Branch: é usada para trabalhar com diferentes versões de um repositório ao mesmo tempo.
  • Pull request: é uma sugestão de melhoria, propondo que suas alterações sejam mescladas com a branch main.
  • Issues: é uma ferramenta de rastreamento integrada ao repositório do GitHub para correção de problemas.
  • GitHub Actions: conecta todas as ferramentas para automatizar as etapas do fluxo de CI/CD.
  • Commits: no GitHub as alterações no código são chamadas de commits.
  • Repository: usado para armazenar um projeto de desenvolvimento contendo arquivos (HTML, CSS, Java).
  • Git: é um sistema de controle de versão distribuído gratuito e de código aberto para projetos de TI.
  • Gists: uma feature fornecida pelo GitHub para que você possa compartilhar trechos curtos de código.
  • Readme.md: arquivo usado para documentação do projeto/repositório no GitHub.

Alternativas

2. Ferramenta de DevOps para Gerenciamento de Containers

Kubernetes é um orquestrador de containers, ele faz o gerenciamento completo de PODs dentro do cluster. Podemos dizer que é hoje de longe, uma das principais ferramentas dentro do contexto de (DevOps), (IaC), (GitOps), pois podemos conectar e integrar o Kubernetes com muitas APIs e ferramentas Cloud Native.

O Kubernetes ajuda na automação de maneira semelhante à infraestrutura tradicional como ferramentas de código, mas tem a vantagem de trabalhar com contêineres que são mais resistentes a desvios de configuração do que máquinas virtuais ou físicas. O Kubernetes usa arquivos no formato ".YML", ele também funciona de forma declarativa, e você pode usá-lo em muitos cenários para implantação de aplicativos e infraestruturas.

Conceitos

  • POD: menor unidade do Kubernetes onde estão armazenados os containers.
  • ETCD: O etcd é um datastore chave-valor distribuído que o k8s utiliza para armazenar as especificações.
  • Container Runtime: é o ambiente de execução de contêineres necessário para o funcionamento do k8s.
  • kubectl: um dos comandos que mais usamos no dia a dia com Kubernetes.
  • kubelet: funciona como se fosse um agente que roda dentro de cada worker do Kubernetes.
  • kubeadm: esse comando faz o ingresso do Kubernetes dentro de um cluster.

Alternativas

3. Ferramenta de DevOps para Gestão de Configuração

Ansible é uma ferramenta de automação utilizada para gerência de configuração, deploy de aplicações, e provisionamento de infraestrutura. É extremamente utlizado em ambientes com centenas de servidores. A comunicação é feita através do protocolo SSH , sem a necessidade de agentes instalados nos hosts remotos. Use o Ansible para instalar softwares, automatizar tarefas rotineiras, provisionar infraestrutura, melhorar a segurança dos ativos, aplicar patching em sistemas e compartilhar automação em seu projeto/trabalho/estudos.

Basicamente, o Ansible ajuda a manter todo o gerenciamento de configuração da sua infraestrutura de forma simples e consistente. O gerenciamento de configuração é o processo usado para manter sistemas computacionais, servidores e softwares em um estado desejado, consistentemente. É uma forma de se certificar de que o sistema funciona como o esperado, enquanto as mudanças são feitas. Tradicionalmente, isso é feito de forma manual ou por meio de scripts personalizados criados por administradores de sistemas. Quando o Ansible é usado como uma ferramenta de gerenciamento de configuração, ele ajuda a armazenar e auxiliar na manutenção do estado atual dos sistemas.

Conceitos

  • Ad-hoc: é um comando fornecido pelo Ansible para gerenciamento de configuração através da CLI.
  • Playbooks: é um conjunto de tasks ou tarefas descritas no formato YML.
  • Roles: é uma estrutura de diretórios organizada de forma lógica para utilização em projetos complexos.
  • inventory file: arquivo utilizado para gerenciamento dos hosts do Ansible.
  • ansible.cfg: principal arquivo de configuração do Ansible.
  • modules: são os métodos escritos em Python para realizar tarefas de automação em ad-hocs, playbooks.

Alternativas

4. Ferramenta de DevOps para Provisionamento de (IaC)

Terraform é uma ferramenta de Infrastructure as Code (IaC), utilizada para provisionamento de infraestrutura em diversos providers, como (AWS, Azure, Google Cloud, Kubernetes, GitLab) e outros. Essa abordagem de (IaC) vem sendo muito empregada pelo mercado para você manter sua infraestrutura via código, sendo gerenciada e mantida através do Git. Sua infraestrutura é escrita via Terraform usando uma linguagem de configuração declarativa conhecida como HashiCorp Configuration Language ou HCL.

O Terraform ajuda você a manter a infraestrutura de rede de forma segura e eficiente, pois ele consegue gerenciar o estado da mesma, ou seja, ele entende o que você esta aplicando e quando pretender destruir, ele também saberá o que remover. O Terraform é capaz de determinar o que mudou e criar planos de execução incrementais que podem ser aplicados no seu ambiente. O Terraform é desenvolvido e mantido pela empresa Hashicorp. Ele é gratuito com código fonte aberto, e você pode efetuar contribuições na comunidade através do GitHub.

Conceitos

  • providers: é o bloco onde você declara qual é o seu produto/Cloud para provisionamento da infraestrutura.
  • resources: é o bloco onde você declara um ou mais objetos/recuros da infraestrutura, VPC, EC2, RDS, ELB.
  • tfstate: arquivo usado pelo Terraform para gerenciamento do estado da infraestrutura.
  • modules: é o bloco usado para tratar os módulos (organização, menos complexibilidade e menos repetição de código).

Alternativas

5. Ferramenta de DevOps para (CI/CD)

GitLab é uma das principais ferramentas de DevOps hoje no mercado de TI, isso devido a toda gama de serviços oferecida, indo desde a parte de pipeline de (CI/CD) até recursos avançados de segurança.

O GitLab ajuda na entrega completa de uma esteira de (CI/CD) para um ambiente de (DevOps), seja para desenvolvimento de software/produtos quanto para desenvolvimento de infraestrutura/serviços. Tendo o GitLab implantado no seu ambinente você poderá fazer deploys mais assertivos e de forma mais veloz prezando sempre pela segurança. Outro insight legal da ferramenta é que ela fornece a integração com diversas ferramentas de (DevOps) como (Kubernetes, Terraform, AWS).

Conceitos

  • Pipelines: dentro do GitLab um pipeline é toda a esteira que envolve o processo de (CI/CD) do software/produto.
  • Milestones: uma forma de rastrear problemas para atingir uma meta maior do projeto
  • Merge Requests: são sugestões de melhorias que você cria para um determinado projeto/código.
  • Projects: é a forma de você organizar seu projeto com issues, merge requests, pipelines de CI/CD.
  • Continuous Delivery (CD): é uma prática na qual as alterações de código são implantadas automaticamente.
  • Continuous integration (CI): é a prática de integrar alterações de código com a maior regularidade possível.

Alternativas

Finalizando

As ferramentas citadas nesse post, são extremamente exigidas pelo mercado de tecnologia (DevOps), com altíssimo crescimento ao longos dos últimos anos, e com forte adoção da comunidade dentro do GitHub. Sugiro fortemente, que você se mantenha estudando e aprimorando às suas habilidades sobre DevOps, Cloud e automação. Como estamos por dentro do assunto agora, um dos principais pilares do DevOps é a colaboração, ou seja, no momento de escolha de uma ferramenta de DevOps, priorize a comunicação e a colaboração dentro da empresa e não apenas no seu time.

Começar por ferramentas open-source pode ser um excelente caminho de adoção do DevOps, eu optei por deixar ferramentas alternativas, justamente para promover o seu interesse em buscar mais soluções, as vezes determinada ferramenta não atende bem seus requisitos de projeto/infraestrutura. No próprio GitHub, existem MUITOS projetos legais para começar. Se esta postagem foi útil, clique no botão de palmas 👏 abaixo, algumas vezes, para mostrar seu apoio ao autor, e se sentiu falta de algo, complementos são muito bem vindos. TMJ! :)

--

--

DevOps from Zero!💻

SRE/DevOps Engineer| Lifelong learner | Medium Creator | AWS/Azure certified☁️ | Hashicorp Ambassador | Containers | Tech | Community | Coffee