Contact Us
DevOps: o que é e porque é tão importante?
Tempo de leitura: 6 minutos

DevOps: o que é e porque é tão importante?

por Daniel Silva

DevOps é uma palavra que ouvimos cada vez mais. Mas por que motivo? É só algo do momento? Qual é a utilidade? É um título? É uma cultura? Vamos alinhar estes conceitos! DevOps é a contração de duas palavras: Development e Operations. Há muita divergência sobre o que é na realidade DevOps e, na verdade, pode representar uma cultura, um título/posição, uma metodologia, um conjunto de ferramentas. Há ainda quem diga que é uma palavra que está na moda só para descrever algo que já se fazia antes.

DevOps o que é

Pessoalmente, considero que é uma junção dos quatro primeiros pontos. Neste artigo vou explicar o que é DevOps e como implementar.

Cultura

Utilizar/implementar práticas DevOps implica uma adaptação na forma de trabalhar, pensar e agir. Pode quase ser visto como um ritual ou, neste caso, uma cultura construída com base em AGILE, teoria de sistemas, empatia, responsabilidade e colaboração.

Título/posição

Existe efetivamente procura para posições de DevOps. Por norma, esta procura é para integrar equipas dedicadas a ajudar as diferentes equipas/áreas em todos os processos que vão desde o desenvolvimento, à manutenção, entrega ou comunicação, recorrendo às mais variadas ferramentas e metodologias. Estas equipas são importantes porque criam rigor e forçam as boas práticas, elevando assim a qualidade do produto final. Além disto, permitem que cada equipa se foque no seu objetivo, sem terem de se preocupar em como é que vão automatizar processos.

Metodologia

Como o nome indica, metodologia é a aplicação de métodos. DevOps baseia-se muito na aplicação de métodos. Métodos para automatizar processos, auxiliar as equipas, monitorização, geração de infraestrutura, entre outras coisas. Tal metodologia em DevOps tem ainda como objetivo integrar o trabalho de desenvolvimento de software com as suas operações, promovendo assim uma cultura de colaboração e responsabilidade partilhada entre equipas.

Do desenvolvimento à implementação do software, DevOps tem como finalidade promover a eficiência em todo o processo. Assim, as equipas podem melhorar a qualidade do seu código, fazer com o que a solução chegue mais rapidamente ao mercado e, consequentemente, envolver toda a equipa para um melhor planeamento da aplicação no futuro. Na sua génese, a metodologia de DevOps está assente em quatro princípios:

  • Automação do ciclo de vida de desenvolvimento de software
  • Colaboração e comunicação
  • Melhoria contínua e minimização do desperdício de tempo
  • Foco nas necessidades do utilizador, com ciclos de feedback curtos

Conjunto de ferramentas

Ao longo do tempo têm surgido cada vez mais ferramentas e bibliotecas para auxiliar na aplicação destas metodologias. Alguns exemplos são as pipelines, containers, Kubernetes, Terraform entre muitos outros.

Por que razão não é só uma nova palavra para definir algo que já se fazia?

Quem defende este ponto normalmente diz que “sempre houve estratégias de desenvolvimento e integração”. Nota que risquei a parte das estratégias porque normalmente é desta parte que se esquecem. E mesmo em casos em que há estratégias, estas muitas vezes não são práticas – são manuais, o que faz com que sejam propícias a erros. É aqui que entra o DevOps!

Mas afinal, o que é que faz um DevOps Engineer?

Quando alguém da minha área, seja developer, gestor de projeto, chefe de equipa, etc. me pergunta o que é que eu faço como DevOps Engineer, respondo sempre com a seguinte pergunta: “Como é que a tua equipa lida com passagens a produção?”.

Muitas vezes ficam confusos e não percebem porque é que respondi com uma pergunta que em nada responde à deles. Mas esta pergunta é feita por uma simples razão: um dos grandes cenários em que DevOps cria (bastante) impacto é na redução do esforço/trabalho necessário nas passagens a produção. Isto faz com que seja um excelente ponto de entrada para explicar/demonstrar porque é que DevOps está “tão na moda”.

Um cenário prático que reflete a realidade

Várias vezes, a resposta à minha pergunta é algo deste género:

“Agendamos a passagem a uma determinada data. Quem está responsável pela passagem nesse dia compila o código, corre os testes, prepara as configurações, publica o código, aplica as configurações e faz uns testes para garantir que está tudo operacional”.

A minha reação costuma ser mais ou menos assim:

Barak Obama Giphy
Fonte: Giphy

E quando pergunto quanto tempo demoram estas passagens, a resposta é que costuma depender da complexidade da aplicação/componente. Mas, se tudo correr bem e ninguém se enganar em nenhuma configuração, até é pouco tempo… um par de Horas.

Novamente, a minha reação:

gato giphy
Fonte: Giphy

Este processo é custoso em vários sentidos:

  • O processo de compilar o código e correr os testes pode demorar bastante tempo, e normalmente corre na máquina de quem vai fazer a publicação, o que pode tornar a mesma inutilizável durante este período
  • Essa pessoa (muitas vezes até envolve mais que uma pessoa) tem que fazer uma compilação de configurações a alterar e apontar tudo para que o possa fazer depois de publicar
  • A probabilidade de haver uma falha/esquecimento de configurações é diretamente proporcional à quantidade e complexidade das mesmas, o que vai implicar mais tarde fazer um despiste em caso de erro;
  • Terá de haver alguém (seja quem fez o levantamento ou outra pessoa) a aplicar as alterações necessárias, o que consome ainda mais tempo a essa pessoa e a todo o processo.

E não nos podemos esquecer de que estamos a falar de uma passagem para o ambiente de produção. Significa isto que (a não ser que haja algo de muito errado no processo da equipa, mas isso é outro tema), para isto ir para produção, estas configurações já tiveram que ser feitas em pelo menos outro ambiente! Se considerarmos que muitas equipas utilizam 3 ambientes: Desenvolvimento, Qualidade e Produção, estamos a triplicar o tempo necessário.

No caso anterior, se considerarmos o cenário otimista (um par de horas), significa que quem for fazer a passagem entre ambientes vai gastar no total 3x2horas = 6 horas, e isto se tudo correr bem!

Como é que DevOps é útil neste caso

Existem várias vertentes que podem ser melhoradas. E o melhor disto tudo é que as melhorias podem ser graduais e adaptativas. Significa isto que podemos começar por pegar nos pontos que são mais demorados e ir melhorando.

O objetivo final é tentar automatizar o máximo para que a intervenção seja mínima e a probabilidade de erro seja reduzida ao máximo. Assim sendo, o nosso objetivo é ter uma pipeline que faça todo este processo: compilar o código, correr os testes, gerar o artefacto, publicar o artefacto nos diferentes ambientes, assim como as configurações necessárias.

Pipelines

De uma forma muito simplificada, uma pipeline permite-nos executar um fluxo definido por nós. Indo por partes:

  • Poderíamos começar por definir a compilação e execução dos testes e, se tudo estiver em conformidade, gerar o artefacto no final. Assim bastava-nos descarregar o mesmo e publicar para cada ambiente. Isto já permitia compilar e executar os testes fora da máquina do developer, libertando-o assim para continuar a trabalhar
  • De seguida, evoluíamos o nosso fluxo para poder publicar para diferentes ambientes, sem termos que descarregar o artefacto e fazê-lo manualmente
  • Relativamente às configurações, poderíamos utilizar ferramentas de automação tais como Terraform, Ansible, Puppet, etc. consoante as necessidades para definir as configurações e integrar as mesmas na nossa pipeline

Ainda que tudo isto tenha uma curva de aprendizagem gradual e o setup inicial seja demorado, o tempo que se ganha daí para a frente é incalculável.

A minha experiência

Quando comecei a trabalhar como DevOps Engineer, tudo era novo e era um mundo com imensas possibilidades e diferentes ferramentas que permitiam atingir o mesmo objetivo. A equipa que integrei tinha um padrão muito semelhante ao que descrevi: os processos eram maioritariamente manuais, as configurações não eram centralizadas, era preciso juntar diferentes pessoas/equipas para analisar o que era preciso alterar e muito mais. Inicialmente acompanhei passagens que para o ambiente de produção demoravam 2 ou 3 horas.

Atualmente temos mais equipas e mais projetos, no entanto as nossas passagens (para três ambientes demoram cerca de 15 minutos), e normalmente existem apenas 2 intervenientes: quem está responsável pela passagem, e uma segunda pessoa que faz uma revisão para confirmar se está tudo bem e aprova a passagem para o ambiente de produção.

Conclusão

Existem diversas partes/áreas em que DevOps causa um grande impacto. O exemplo que te trouxe hoje é um dos que considero dos mais impactantes e fáceis de explicar para mostrar a diferença entre empresas/equipas com e sem práticas de DevOps.

Pessoalmente, é bastante gratificante e satisfatório automatizar os processos onde sei que as equipas têm mais dificuldades ou perdem mais tempo, pois sei que estou a tirar-lhes carga de cima, estamos a reduzir a probabilidade de erro, e todos ganhamos com isso.

Como disse inicialmente, não acho que seja apenas um nome para definir algo que já se fazia. Acredito que, cada vez mais, existe a necessidade de seguir estas boas práticas e automatizar o máximo possível, pois os resultados são facilmente visíveis.

Mas também é importante termos em conta que isto é um processo constante e evolutivo. A indústria está a evoluir a uma velocidade estonteante e há cada vez mais ferramentas, tecnologias e técnicas para resolver os problemas.

Sabe mais sobre DevOps no webinar on-demand “DevOps Azure: da cultura à prática

Tags:

Leave a comment

Comments are closed.

Comments

  1. … [Trackback]

    […] Read More to that Topic: careers.xpand-it.com/blog/devops-o-que-e-e-porque-e-tao-importante/ […]

  2. … [Trackback]

    […] Read More on that Topic: careers.xpand-it.com/blog/devops-o-que-e-e-porque-e-tao-importante/ […]

  3. … [Trackback]

    […] Info to that Topic: careers.xpand-it.com/blog/devops-o-que-e-e-porque-e-tao-importante/ […]

  4. … [Trackback]

    […] Information to that Topic: careers.xpand-it.com/blog/devops-o-que-e-e-porque-e-tao-importante/ […]

  5. … [Trackback]

    […] Find More Information here on that Topic: careers.xpand-it.com/blog/devops-o-que-e-e-porque-e-tao-importante/ […]

  6. … [Trackback]

    […] Find More Info here to that Topic: careers.xpand-it.com/blog/devops-o-que-e-e-porque-e-tao-importante/ […]