DEV Community

Cover image for DevOps, como começar? ...e por que?
Kleber Bonassi
Kleber Bonassi

Posted on

1

DevOps, como começar? ...e por que?

Talvez a pergunta inicial seria: "Por que eu, um engenheiro de software (ou desenvolvedor, ou backend, ou frontend, ou QA, ou etc...) devo conhecer DevOps?" e uma possível resposta direta seria algo como: "porque você que desenvolve deveria saber como entregar e cuidar de seu desenvolvimento em produção, faz parte do ciclo", o chamado deploy e onde entra o QA que coloquei na pergunta acima? Ora, o QA entra principalmente em contribuir com a automação de testes na esteira de CI/CD, além de que conhecimento e como dizem, canja de galinha, não faz mal a ninguém.

DevOps é uma cultura que deve ser difundida no time todo, mas também na comunidade, na tribo e até mesmo na sua empresa como um todo.

Como regra geral, pelo que vejo no mercado, grandes corporações e com a TI bem estruturada, por vezes, tem times especializados em DevOps/SRE, o que na minha opinião é super saudável, pois em teoria, estas pessoas são o oráculo sobre este assunto. Computação é uma área tão grande que temos especialistas em áreas diversas, mas o time de desenvolvimento precisa ter ao menos o conhecimento básico sobre este tema. Tenho a mesma opinião sobre QA/Testes, mas ainda vou escrever um artigo sobre isto.

Resumindo de forma bem simples DevOps é a junção de Desenvolvimento e Operações então podemos entender ainda de forma simplificada, como desenvolver, colocar em produção, acompanhar (não só no deploy, mas por toda a vida útil da aplicação, através da observabilidade) e ajustar o leme do navio para manter a aplicação no ar e saudável para que comporte atender as requisições necessárias. Tudo isso com automatizações.

Pra termos uma ideia do tamanho e importância do assunto, algumas bigtechs, com times de altíssima performance, fazem milhares de deploys por dia, dando uma grandeza de deploys a cada alguns segundos!!! Agora te pergunto: como isso seria possível, sem automação, sem a cultura DevOps?? Bem, a história nos mostra que não seria possível sem DevOps. E pra que isso tudo? Pra entregar antes e frequentemente, desta forma permitindo entregas estratégicas quanto ao mercado, trazendo velocidade das empresas perante seus concorrentes.

Com a grande notoriedade da arquitetura de microsserviços, mais ainda que DevOps se faz necessário.

Pra colocar a cultura DevOps, a filosofia DevOps, em prática, é necessário conhecimento e ferramentas. No mercado existem várias ferramentas semelhantes ou que fazem parte do trabalho comum entre elas. O objetivo deste artigo é trazer pra você leitor, um caminho das pedras bem inicial, te guiando no que é importante aprender, buscar conhecimento, pra entrar no mundo do DevOps e claro, com o passar do tempo, com a experiência adquirida, você deve se aperfeiçoar, buscar outras ferramentas complementares e ainda experimentar outras ferramentas semelhantes a estas que indicarei, pra então, com o seu julgo, entender quais fazem mais sentido pra sua realidade do dia-a-dia. O fato é que entendendo a importância e conhecendo algumas das principais ferramentas, você terá o conhecimento básico e necessário que você, desenvolvedor, precisa ter.

Image description

Então vamos lá:

  • GNU/Linux: Com mais de 30 anos de existência, o GNU/Linux está mais do que comprovado sobre sua segurança, competência, qualidade e sendo um software livre e de código fonte aberto e em geral sem um licenciamento pago, é mandatário para fazer funcionar a principal peça da arquitetura de microsserviços, o próprio microsserviço. Entender a estrutura de diretórios do sistema operacional, entender sobre o agendamento de tarefas, entre outras coisas que é importante aprender sobre o sistema operacional, se faz necessário. Portanto ter conhecimento em GNU/Linux é algo essencial. Vale uma leitura deste outro link pra que você, dê uma chance de aprendizado deste grande sistema operacional. Caso você não possa ou não queira substituir o GNU/Linux como seu sistema operacional padrão no seu computador, crie uma máquina virtual, para poder estuda-lo.

  • Bash: O Bash é um dos possíveis shells (linha de comando) para o GNU/Linux, existem outros, mas o Bash é o shell padrão de muitas distribuições GNU/Linux. É importante saber sobre o shell, para necessidades tais como, cópia de arquivos, criação de diretórios, verificar o conteúdo de arquivos, logs, iniciar e parar serviços (daemons), entre outras tantas funcionalidades que o shell nos oferece. O fato é que o shell é o console para que você possa interagir com o sistema operacional GNU/Linux.

  • Docker: Mais uma vez falando de microsserviços, a utilização de containers também é algo essencial e eu diria que talvez é a grande sacada pra poder funcionar este tipo de arquitetura, e o Docker é a ferramenta mais utilizada para a construção de containers, saber Docker é fundamental para o DevOps.

  • Kubernetes: O Kubernetes é um orquestrador de containers desenvolvido pela Google e com o uso dele, temos a possibilidade escalar nossas aplicações de forma automatizada, aumentando a disponibilidade da aplicação quando necessário e diminuindo-a quando possível, permitindo o balanceamento de carga da aplicação, entre diversas outras funcionalidades que o Kubernetes nos trás. E você pode aprender tudo isso diretamente do seu computador pessoal, com o uso de "distribuições" Kubernetes, tais como o K3s, MiniKube, Kind, MicroK8s, entre outros.

  • Git: O Git é desde alguns anos atrás o principal versionador de código. Existem as ferramentas muito utilizadas que fazem o versionamento e trazem mais algumas features interessantes, como o Github, Gitlab, Bitbucket, é importante conhece-las, mas antes de tudo é importante conhecer o Git mesmo, portanto, baixe-o, instale-o em seu computador e estude-o, principalmente as funcionalidades mais triviais.

  • Ansible: O Ansible, uma ferramenta desenvolvida pela Redhat, que nos permite gerenciar o ciclo de vida das aplicações, desde o provisionamento até o deploy, automatizando tarefas como criação de usuários, backup, provisionamento de ambientes (dev, hml e prd), gerenciamento de servidores, etc. Enfim, também é uma ferramenta importante para o DevOps.

  • Jenkins: Jenkins é a ferramenta responsável por automatizar toda a cadeia de integração contínua e entrega contínua, o CI/CD. Com ele podemos definir esteiras que automatizam todo o processo de CI/CD, ou seja, desde o ponto que o desenvolvedor termina o desenvolvimento até o deploy deste desenvolvimento, passando por etapas como compilação, testes automatizados, verificações estáticas, entre outras automatizações que ele nos permite.

Enfim, existem tantas outras ferramentas que depois que você estiver adaptado a estas apresentadas, deve conhecer também, tais como Terraform, Vagrant, Podman, Grafana, Splunk, Prometheus, Jaeger Kibana, etc, a lista é longa, mas comece pelas apresentadas, tenha foco inicialmente nestas pois não adianta querem abraçar o mundo de uma única vez, estas já lhe darão o empurrão inicial para este conhecimento.

That's all folks!

Do your career a big favor. Join DEV. (The website you're on right now)

It takes one minute, it's free, and is worth it for your career.

Get started

Community matters

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Dive into an ocean of knowledge with this thought-provoking post, revered deeply within the supportive DEV Community. Developers of all levels are welcome to join and enhance our collective intelligence.

Saying a simple "thank you" can brighten someone's day. Share your gratitude in the comments below!

On DEV, sharing ideas eases our path and fortifies our community connections. Found this helpful? Sending a quick thanks to the author can be profoundly valued.

Okay