Por que eu devo ler este artigo:DevOps não é apenas um dos termos mais citados no universo da computação dos dias de hoje. Tornou-se, desde já, um item essencial no currículo e no cotidiano de qualquer profissional de computação que trabalhe com desenvolvimento de software e deseje se manter atualizado e, principalmente, competitivo no mercado de trabalho.

Entretanto, acompanhar o mundo de DevOps não é tarefa fácil. As ferramentas, práticas e metodologias a ela associadas evoluem muito rapidamente, trazendo a cada semana um leque ainda maior de opções para atacar os desafios de desenvolvimento de software.

Com base nisso, este artigo tem por objetivo introduzir os principais aspectos deste novo mindset e, a partir de plataformas como Maven, Git, Redmine e Jenkins, demonstrar na prática o que e como fazer para aplicar os princípios de DevOps no nosso dia a dia.

A paternidade do termo DevOps é atribuída ao administrador de sistemas Patrick Debois que, incomodado ao experimentar os tradicionais conflitos entre desenvolvedores e administradores de sistemas, sentiu a necessidade de fazer algo para que este tipo de impasse fosse, enfim, solucionado.

Este movimento iniciou-se no ano de 2007 e, após alguns encontros de Debois com outros profissionais, como o desenvolvedor Andrew Shafer e o engenheiro de sistemas John Allspaw, culminou na organização de um evento para discutir especificamente esta questão dos desafios da integração entre as áreas de desenvolvimento e operações das empresas.

A ideia do evento era muito interessante, mas precisava de um título com boa sonoridade e que fosse curto o suficiente para facilitar sua disseminação através das redes sociais – principalmente o Twitter.

Partindo desses princípios, Debois teve a ideia de combinar as três primeiras letras das duas áreas, chegando no nome ‘DevOps Days’. O evento, muito bem aceito pela comunidade, foi bastante comentado no Twitter e o termo, DevOps, ganhou rapidamente uma expressiva popularidade. Desde então é o nome que representa este novo mindset dentro do universo da TI.

A partir disso, ao longo deste artigo cobriremos os principais aspectos ligados ao desenvolvimento de software em um projeto DevOps, analisando algumas ferramentas, plataformas e técnicas importantes para que se desenvolva código com qualidade e de forma gerenciada.

Para o leitor que quiser conferir a história completa a respeito do surgimento do DevOps, é só conferir a referência que deixamos na seção Links.

Mas o que é DevOps, afinal?

DevOps é o termo usado para representar um modelo de pensamento em que as áreas de desenvolvimento e operações se harmonizam no intuito de otimizar a construção e entrega de software. Trata-se de um paradigma cujo objetivo principal é eliminar os obstáculos historicamente enfrentados pelas empresas na entrega de sistemas, através de um fluxo mais equilibrado, sinérgico, entre todas as áreas ativas neste processo.

Não é, entretanto, algo que se pode chamar de novo. Assim como outros movimentos que surgem e rapidamente se popularizam na computação – como o próprio fenômeno da Internet das Coisas ou o advento das metodologias ágeis –, a popularização de DevOps tem provocado em alguns profissionais mais experientes o sentimento de que, a bem da verdade, não há nada nesta proposta que já não viesse sendo praticado por eles há anos.

De fato, toda esta glamourização pode parecer um exagero para alguns, pois indica um certo ineditismo. No entanto, há o lado positivo de toda a história: este rótulo de ‘pop-star’ que DevOps ganhou no mercado acaba atraindo uma grande parcela de pessoas que não está habituada a trabalhar em conformidade com os conceitos e as práticas sugeridas pelo movimento.

E isto, aliado a todo o arsenal de ferramentas que tornam possível a implementação da ideia, contribui indubitavelmente para uma transformação bastante positiva do nosso mercado.

O aspecto cultural

Uma implementação bem-sucedida da cultura DevOps em qualquer empresa passa, necessariamente, por uma mudança cultural. Embora esta não seja a perspectiva tonante do artigo, é importante termos em mente que todo reforço realizado na infraestrutura de uma empresa terá sido em vão caso seus colaboradores não incorporem a verdadeira mensagem que este novo paradigma busca transmitir.

Existem hoje, não raros, casos em que ferramentas de trabalho são empregadas de forma equivocada simplesmente pelo fato de que a empresa, ainda presa às suas antigas raízes, insiste em manter seu foco em valores errados.

Um caso clássico, com o qual muitos leitores poderão, inclusive, se identificar, é a prática de revisão de código. Existem, atualmente, ferramentas que geram sessões de revisão a cada submissão de código no repositório. O objetivo é garantir que nada seja versionado sem conhecimento e, mais importante ainda, discussão e consenso em torno de sua relevância e validade.

No entanto, principalmente devido a uma má gestão de projetos, o que acaba acontecendo é que os colaboradores, sempre com prazos bastante apertados, negligenciam este processo e apenas analisam rapidamente o código-fonte.

Assim, a prática em si perde exatamente a sua principal função, e o impacto na qualidade final do produto/serviço, a médio e longo prazos, tende a ser bastante negativo.

O maior desafio de DevOps nos dias atuais é, portanto, equilibrar a marcha em que tecnologia e pessoas evoluem. Praticá-la com qualidade passa, necessariamente, por revisar todas as práticas adotadas no ambiente em que nos acostumamos a trabalhar e, sem exceções de papéis ou departamentos, empenharmo-nos para torná-las melhores, mais enxutas, mais eficientes.

Ademais, a atmosfera precisa ser uma só, e toda a empresa deve – bem como seus clientes, indiretamente – respirar o mesmo ar de mudança que este paradigma propõe.

Automatização de processos

Além da cultura, existe outro aspecto essencial para que DevOps seja bem-sucedido: a automatização. Mas, afinal de contas, o que devemos automatizar? E, se temos que fazê-lo, quando é o melhor momento?

Em DevOps, tanto Desenvolvimento quanto Operações acabam se beneficiando largamente quando seus processos vitais passam a ser controlados por software.

Em resumo, devemos tornar automático tudo aquilo cuja natureza é repetitiva e que, portanto, estaria bastante sujeita a erros quando executadas manualmente, por seres humanos.

Logo, cada empresa deve observar o que, dentro de seus processos habituais de desenvolvimento e TI, tem essas características e, em seguida, redesenhá-los de forma a usufruir de ferramentas e plataformas que executem tudo com maior precisão e velocidade, melhor qualidade e, ainda, menor custo. Algumas atividades que normalmente acabam se tornando francas candidatas a um processo de automatização são:

  • Compilação e empacotamento de código;
  • Geração de build a partir de submissões de código-fonte;
  • Análise e gestão de qualidade (débito técnico, métricas em geral);
  • Execução de suítes de testes de regressão a cada submissão de código;
  • Implantação agendada de ‘entregáveis’ (versões do produto/serviço).

Caso paremos para observar todo o movimento DevOps, constataremos que esta é a frente que mais evoluiu. A quantidade e a diversidade de tecnologias que surgem a cada semana são muito grandes, e acompanhar esta evolução acaba se tornando um grande desafio.

Entretanto, é muito importante que não se confunda a parte pelo todo, pois DevOps não é e nunca será sinônimo de automatização. Esta é, sem dúvida, essencial para aquela, mas não a define por si só.

Postura DevOps?

Sem uma mudança cultural, como já discutimos há pouco, não há DevOps. É indiscutível que as questões técnicas são muito importantes (e serão elas os ingredientes a compor todo o artigo), mas antes de entrarmos definitivamente nesse movimento, dedicaremos algumas palavras finais ao que denominaremos de ‘postura DevOps’.

É fundamental que todo o arsenal tecnológico disponível no mercado trabalhe a nosso favor, e isto só ocorrerá caso seus usuários usufruam dele com responsabilidade e, principalmente, consciência de seu papel dentro da equipe.

Este último ponto, o da consciência, ainda é uma barreira a ser vencida no mercado corporativo ‘convencional’, enquanto em start-ups normalmente não chega nem a ser identificada.

Transparência e naturalidade ao lidar com adversidades dentro de um projeto de software são, a partir de DevOps, premissas que não devem, jamais, ser negligenciadas.

Nesta nova filosofia de trabalho, é importante que as pessoas entendam que, no cotidiano de desenvolvimento de software, o espírito a ser cultivado é o de uma constante busca por colaboração, progresso coletivo, em que culpa ou mérito transcenda o indivíduo.

‘Quebrar’ builds, equivocar-se em algum trecho de código ou expor fragilidades individuais devem ser coisas absolutamente naturais em qualquer equipe DevOps, pois o objetivo comum de todos tem de ser apenas uma entrega ágil e com qualidade assegurada ao cliente. Ideologicamente, ao atingir um ponto ótimo de maturidade no processo, o próprio cliente passaria a abraçar a causa e, assim, tornar-se um colab ...

Quer ler esse conteúdo completo? Tenha acesso completo