O que é DevOps? Processo, origem e problemática!

Nesse meio de programação e tecnologia, tem se falado muito sobre DevOps. Você certamente já ouviu a expressão em algum lugar por aí. Mas, afinal, o que ela significa? Tem a ver com programação? Como se aprende?

Pois então, é exatamente esse o objetivo deste texto. Fazer um overview sobre o que envolve DevOps, porque suas práticas são úteis e como você pode se preparar por meio de cursos e leituras. Continue lendo. Tenho certeza que você não irá se arrepender!

Desmitificando DevOps

Em um primeiro momento, em função das suas iniciais, o termo nos remete a desenvolvimento, desenvolvedor, certo? Afinal, Dev é a abreviatura para Developer. Porém, DevOps vai bem mais longe. Há também o envolvimento de outros elementos e atividades comuns na área de TI. Talvez a dificuldade de compreensão exista por faltar uma tradução exata do termo, já que é uma prática, de certa forma, recente do mercado. Principalmente, no mercado brasileiro.

Enfim, nosso objetivo aqui é desvendar esse mistério! Por isso, vou te explicar o que entendo do assunto, tanto academicamente, quanto profissionalmente falando.

Mas então… O que significa DevOps?

Imagem mostra uma tatuagem com o escrito "DevOps" nos punhos de uma pessoa

DevOps é um conjunto de boas práticas que envolvem o desenvolvimento de soluções com aspectos operacionais e de infraestrutura. Resumidamente, é uma forma de pensar no desenvolvimento de um software, levando em conta toda a infraestrutura na qual o código estará alocado e as práticas que deverão ser utilizadas para manter a qualidade do produto com uma entrega rápida e eficaz. Por isso, a sigla:

  • Dev = Desenvolvimento
  • Ops = Operations (Infraestrutura e Sistemas)

Dentro de programação existem inúmeras metodologias que buscam a padronização do processo de codificação, para assim, facilitar o trabalho em equipes. Dessa forma, permitindo que times possam trabalhar em cima do mesmo código sem muitos problemas. Um dos exemplos é o Scrum, que define prazos e etapas (chamadas de sprints) para o desenvolvimento de um software.

Da mesma forma, a cultura DevOps preza pela utilização de uma série de mecanismos que auxiliem o processo de desenvolvimento de software. Para que assim, o desenvolvimento ocorra com o mínimo de interrupções ou problemas possíveis. Ao invés de atentar-se apenas à forma como o código é feito, as práticas de DevOps também buscam garantir a qualidade das entregas, o cumprimento de prazos, minimizar os riscos e possíveis falhas no deploy das aplicações em ambientes de produção.

Qual problema resolve?

Já falamos sobre isso aqui mesmo, no blog da Becode. No post sobre os conhecimentos essenciais que todo programador precisa ter, quando falamos sobre Infraestrutura e sistemas. Portanto, vou puxar o trecho do próprio artigo que, na minha opinião, explica de uma forma muito didática o porquê do DevOps existir e, principalmente, mostra claramente qual é o problema que o DevOps resolve!

Veja abaixo:

“Historicamente, a área de infraestrutura de TI e a área de desenvolvimento de software nunca se deram muito bem. Grosseiramente falando, o problema consistia no seguinte:

A área de desenvolvimento se preocupava apenas com o desenvolvimento da aplicação. Contudo, no momento que esta aplicação era entregue para a equipe responsável por colocar o software em produção, o software apresentava crashs e bugs ao reproduzir a aplicação no ambiente de produçãoEm outras palavras, durante o desenvolvimento, a aplicação funcionava (Dev); no ambiente de produção (Ops), não. Isto ocorre quando a área de desenvolvimento não cria a aplicação de acordo com a infraestrutura estabelecida naquela determinada organização. Em outras palavras, nesse caso, a área de infra e a área de desenvolvimento não são compatíveis e isso é um problema gigantesco!

A partir desse problema comum nas organizações, em 2009, surgiu o DevOps. Um profissional, uma equipe ou até uma nova cultura na empresa responsável por realizar a ligação entre a área de desenvolvimento (DEV) com a área de infraestrutura (OPS). Evitando, ou minimizando, os problemas citados acima.”

Acho que agora, contextualizando a situação talvez tenha ficado um pouco mais claro, certo?

Yes, DevOps is a Big Deal!

Gif de uma pessoa se intitulando "a Big Deal"

Lendo o tópico anterior, de forma isolada e sem a devida reflexão, pode até parecer que DevOps é a solução para um problema pequeno.

Contudo, antes de tirarmos conclusões precipitadas, pense comigo: o que é um bug para uma multinacional, um banco ou qualquer aplicação usada em larga escala, seja por pequenas, médias ou grandes empresas? Basicamente, o bug, um crash ou qualquer falha pode representar milhões de “dinheiros” indo ralo a abaixo.

Você sabe quanto o Facebook perde quando o seu sistema fica fora do ar por 5 minutos? Bem, obviamente não, nem eu! Eu não tenho os valores exatos, mas pense comigo: o Facebook é, junto com o Google, a maior plataforma para empresas anunciarem seus produtos na web. A cada minuto, milhões de anúncios são veiculados no mundo todo. As empresas pagam o Facebook para realizar esses anúncios.

Portanto, se a plataforma está fora do ar, o Facebook não veicula anúncios e, por consequência, fica sem $$$. Esse foi o exemplo do Facebook, mas é aplicável a qualquer sistema. Claro, os motivos e preocupações mudam, bem como, as proporções.

Resumo da história

As empresas, para se manter relevantes no cenário econômico, precisam estar em constante evolução e Desenvolvimento (DEV). Mas, ao mesmo tempo, precisam se certificar que a infraestrutura e os sistemas (OPS) estão devidamente preparados para receber as novidades da equipe de desenvolvimento. As áreas precisam ser compatíveis. Caso contrário, todo o investimento em desenvolvimento pode acabar sendo um tiro no pé.

DevOps é um cargo?

Bom, já sabemos que DevOps é uma cultura. Na sua essência, não surgiu como um cargo. Mas também sabemos que por ser recente, ainda está ganhando espaço no mercado e modelando seus formatos. É uma prática que especifica algumas diretrizes que precisam ser seguidas para se alcançar o sucesso esperado.

Mas já é possível encontrar no mercado de trabalho vagas para ‘Consultor DevOps’, por exemplo. Ou seja, pode não ser ainda – oficialmente – um cargo, mas está no caminho.

Como fazer parte disso?

Imagem ilustra um cartaz que representa alguém fazendo parte do mundo DevOps

Pelo menos na maioria dos casos, empresas que utilizam DevOps acabam por integrar o máximo possível seus times de desenvolvimento e operações. Ao invés de ter um time que especifica o software e outro que programa, esses times são unificados, visando a criação de um ciclo ideal de projetos.

Esse ciclo permite uma entrega rápida, mesmo nas alterações, automatizando processos e melhorando a colaboração entre equipes. Além de prover maior segurança e estabilidade. Já que os times de testes e qualidade também podem (e devem) ser integrados nessa forma de trabalhar.

Uma prática comum a empresas que utilizam DevOps é fazer entregas de atualizações constantes e pequenas. O aplicativo Todoist é um exemplo disso. Com inúmeros upgrades semanalmente, a ideia é entregar inovação e valor mais rápido e constantemente aos seus clientes.

Com isso, o risco de problemas nas implementações diminui, porque fica fácil perceber quando houve um erro, já que pouca coisa muda entre uma atualização e outra. Não existe um tempo padrão para lançar atualizações, mas é consenso que empresas com pensamento DevOps tem um processo de atualização muito mais rápido do que empresas de desenvolvimento tradicionais.

O processo DevOps

Bom, para entender bem toda essa questão que envolve a cultura de DevOps, nada melhor que visualizar o processo como um todo, certo?

É muito comum encontrarmos o símbolo do infinito sendo utilizado para representar o processo DevOps, pois, como falamos antes, as etapas são interligadas e as entregas são contínuas, a fim de garantir estabilidade. Então vamos a ele!

Assim, é possível vermos a convergência entre as partes e entender melhor como elas se encaixam. Toda codificação, testes e lançamento de builds fazem parte do campo de Desenvolvimento. Já o deploy, operação e monitoramento são itens de operações.

O que une tudo são os releases e o planejamento. Nessas fases, a integração das ferramentas citadas e dos processos gerenciais acontece. A cada release é necessário realizar o deploy e os passos adicionais e, após ser definido o monitoramento do que foi implementado, retorna-se ao planejamento em conjunto com os desenvolvedores.

Dessa forma, o projeto tende a estar sempre em movimento, sendo planejado, codificado, testado, lançado, implementado e monitorado. Então, baseado nos dados coletados, planeja-se novamente o que deve ser feito e o processo continua.

Boas práticas, ferramentas e players

Existem alguns itens básicos para a aplicação efetiva desse conceito, entre eles, podemos citar:

  • Microsserviços
  • Integração Contínua
  • Infraestrutura em Cloud
  • Logs
  • Automação

Todos os itens citados acima são considerados boas práticas da cultura DevOps. Além disso, a área também conta com diversas ferramentas auxiliares e grandes players da área, como o sistema Linux. Aliás, se você gostou do artigo até agora e quer fazer parte disso, o meu primeiro conselho para você é: aprenda Linux! Sendo assim, não deixe de conferir o nosso curso para iniciantes em sistemas Linux!

Além do Linux, também podemos citar diversas ferramentas usadas para automação e, claro, o uso de soluções Cloud Computing. Tecnologia extremamente essencial e usada para práticas DevOps.

Se esse último tópico pareceu confuso, não se desespere! Em breve, iremos criar um post específico sobre esse assunto. Nesse artigo, pretendemos detalhar e trazer mais informações sobre cada uma dessas tecnologias, técnicas, práticas e ferramentas citadas acima. Então, não se preocupe.

Pronto para aderir ao movimento DevOps?

Você deve ter notado que é bem difícil esgotar esse assunto, ele é bem extenso e rende horas e mais horas de estudos, discussões, descobertas e o que mais você quiser. O mais importante é se dedicar e aprender cada vez mais sobre o assunto!

Evidentemente, é um assunto destinado para o público mais experiente na área de desenvolvimento e infraestrutura de TI. Então, se você é novo na área e está dando os seus primeiros passos, recomendamos que você comece por conteúdos, digamos, mais “light”. Procure primeiro aprender e ganhar experiência. Se você tiver interesse, dê uma olhada em nossos cursos voltados para iniciantes na TI.

Caso você já seja um profissional experiente no mercado e quer começar a desbravar esse movimento, a nossa recomendação é:

  • Estude bastante sobre Linux, Cloud Computing e Desenvolvimento. Sempre tentando conectar as peças do quebra-cabeça e entendo como essas áreas interagem entre si no mundo DevOps.
  • Após isso, procure também compreender e estudar sobre agile, microsserviços, integração contínua e os processos de automação da área. Inclusive, teremos um artigo exclusivo sobre isso.

No mais, queremos saber o que você achou do artigo! Poste nos comentários abaixo quais são as suas curiosidades e dúvidas sobre esse assunto. Podemos descobrir mais coisas juntos!

Mesmo para quem já está na TI há mais tempo, tem sempre algo novo para se aprender. Hoje foi um pouco de DevOps! Se você já tem experiências nessa área, compartilhe com a gente nos comentários, vai ser muito interessante termos outros relatos sobre o dia-a-dia de um profissional inserido nessa cultura.

Enfim, esperamos que esse post tenha ajudado a esclarecer o misterioso termo DevOps! Abraços e até a próxima!

 

Curso Online de Linux Essentials da Becode

Written by Leonello de Leone

Estudante de Ciência da Computação pela UFRGS. Iniciou como estagiário da área de Suporte e hoje atua como Desenvolvedor Web na TargetTrust e Becode. Possui conhecimentos em Angular 4+, Node.js, jQuery, PHP, JavaScript e por aí vai. Entusiasta das áreas de Machine Learning, Inteligência Artificial e Desenvolvimento de Jogos. Ranzinza nas horas vagas.

Back-end vs Front-end vs Full-Stack: qual é a melhor escolha? | Becode

Back-end vs Front-end vs Full-Stack: qual é a melhor escolha?

[Plano de Estudos] O Guia do Programador Iniciante | Becode

(Plano de Estudos) O Guia do Programador Iniciante!