Agile Comunicações Conhecimento Gestão Estratégica Governança Integração Partes Interessadas Processos e negócios Projeto Tecnologia

DevOps – Integrando os times para obter sucesso nos negócios

O artigo da semana discorre sobre uma abordagem ágil que integra equipes de desenvolvimento de softwares, operações e de apoio envolvidas e a adoção de processos automatizados para produção rápida e segura de aplicações e serviços. Isso mesmo, DevOps !!

Entendo o DevOps, como uma expansão das abordagens ágeis para gestão de projetos, pois o ágil integra todo o time de desenvolvimento junto com o time de negócio, já o DevOps traz a agilidade para as entregas e além de integrar negócio e desenvolvimento, ele também chama a responsabilidade para o time de teste e operação de forma a maximizar ainda mais o valor do negócio Como surgiu o DevOps?

O DevOps surgiu da necessidade de melhorar a agilidade das entregas no setor de Tecnologia da Informação. O DevOps foca em aperfeiçoamento da comunicação, colaboração e integração entre desenvolvedores de software e administradores da infra de Tecnologia da Informação. Modificando a antiga dinâmica, onde desenvolvedores e gerentes de infra eram vistos como silos isoladas livres de intercomunicação e cooperativismo.

Em 2009, uma tempestade de metodologias e pensamentos se formou: Agile, TOC – Theory of Constraints, Systems Thinking & Dynamics, Lean e outras metodologias para a gestão dos serviços de TI se juntaram, em uma série de seminários, conferências e palestras ao redor do mundo, até que, de repente, transformou-se na filosofia base por trás do DevOps.

O Agile abriu o caminho para o DevOps, desviando o caminho das metodologias de desenvolvimento de software modelo cascata e indo em direção a um ciclo contínuo de desenvolvimento. Entretanto, o Agile não incluía o lado da operação, o qual continuava utilizando o modelo cascata. Hoje, através da “filosofia” DevOps, funcionalidades, responsabilidades compartilhadas e a confiança entre as partes (Dev x Infra) são itens exaltados e promovidos.

A cultura estende o modelo de desenvolvimento Agile, de forma a promover a integração continua até a entrega. Para garantir entregas contínuas, o modelo encoraja automação da mudança, configurações e processos de lançamento. O que é DevOps? DevOps é o alinhamento do time de desenvolvimento com o time de operações, em relação à processos, ferramentas e responsabilidades, visando acelerar as entregas em produção com um elevado grau de qualidade.

Qual a vantagem em integrar as equipes de projetos e Operações?

Um conhecido problema dentro das organizações era a disputa entre equipe de desenvolvimento e Operação. Desenvolvedores querem lançar as aplicações no menor tempo possível, enquanto o time de operação precisa ter certeza absoluta de que a aplicação é estável e não vai gerar nenhum tipo de incidente.

Enquanto a equipe de desenvolvimento está sempre em busca de métodos mais ágeis e eficientes para desenvolver um software, o time de operações procura um jeito de gerenciar de forma mais eficaz a operação de Tecnologia da Informação. Ou seja, mesmo que sejam áreas diferentes, elas estão interligadas e o profissional DevOps é o responsável por integrá-las.

No DevOps, os profissionais das duas áreas precisam ter conhecimentos sobre ambas. Isso significa que o time de operação deve ter noções de programação e o desenvolvedor necessita de algum conhecimento sobre sistemas operacionais e demais aspectos de uma infraestrutura de Tecnologia da Informação. Os pilares do DevOps:

  • Integração Contínua: fácil transferência de conhecimento e experiências entre as áreas de Desenvolvimento, Operações e Apoio.
  • Implantação Contínua: liberação rápida e contínua de novas versões de software ou serviços
  • Feedback contínuo: feedbacks frequentes das equipes envolvidas em todas as fases do ciclo de vida do software ou serviço.

Para alcançar esses objetivos a prática Devops recomenda ações como:

  • Pessoas integradas: Apoiar e prover pensamentos que integrem as pessoas, que façam com que partilhem suas histórias e se desenvolva a empatia entre elas para um trabalho conjunto eficaz e duradouro.
  • Foco no projeto: Crie uma atmosfera livre de culpa, com o objetivo em comum: o projeto. Profissionais devem defender o projeto e não suas áreas de atuação. É preciso romper tradições e fazer com que as equipes tenham um comportamento colaborativo, construtivo e de respeito mútuo.
  • Reuniões conjuntas: em vez de promover discussões isoladas com a equipe de desenvolvimento, operações ou apoio, sempre integre pelo menos um profissional de cada área nas discussões dos setores para que tenham entendimento dos objetivos a serem alcançados, recursos e demanda previstos, requisitos necessários, problemas já enfrentados e riscos envolvidos sob uma mesma ótica.
  • Negócio Just-in-Time: Fornecimento de aplicações e serviços que promovam um desenvolvimento do negócio com qualidade e otimização do uso de recursos humano, tempo, tecnológicos e/ou financeiros.
  • Infraestrutura para negócio: garantir continuamente a infraestrutura com foco no negócio. Implantar mecanismos que permitam a área de operações atenderem as expectativas do negócio e ainda sim manter sua confiabilidade.
  • Desenvolvimento Ágil: o desenvolvimento do software deve seguir uma das metodologias ágeis para entregas rápidas e contínuas. ( SCRUM, XP, …)
  • Ambientes de Desenvolvimento, Homologação e Produção: que haja pelo menos esses três ambientes e que sejam idênticos para evitar que uma versão de software seja testada em um ambiente e executada em produção em outro e assim surjam problemas não previstos.
  • Padronização nas configurações: para garantia de que os ambientes sejam idênticos e contenham apenas mudanças homologadas, é preciso implementar um gerenciamento de configuração para que qualquer mudança inserida manualmente nos servidores e não através de uma gerência de configurações seja automaticamente desfeita.
  • Provisionamento dinâmico dos ambientes: os ambientes devem ser criados sempre que necessários em processos automatizados para garantia de que estejam sempre disponíveis. A equipe de desenvolvimento deve receber a infraestrutura necessária para seu trabalho sem necessidade de intervenção da equipe de operações. Ferramentas de automação deverão criar servidores, instalar serviços, configurá-los e testá-los. Novos servidores poderão ser criados temporariamente para ações específicas ou para escalonamento da solução.
  • Infraestrutura como um código: as configurações e scripts de execução para instalação de serviços devem ser versionados no mesmo repositório e da mesma forma que o código da aplicação para que possam ser disponibilizados, auditados e evoluídos juntos.
  • Liberdade para Deploy: a equipe de desenvolvimento deve ser autônoma para realização de deploy nos ambientes, até produção sem necessidade de processos burocráticos e interferência da área de operações.
  • Integração contínua: Ferramentas devem orquestrar todo o processo envolvido na entrega de nova versão da aplicação que inclui a criação dos ambientes caso necessário, deploys dos códigos juntamente as configurações da infra, testes automatizados, possibilidade de reversão e auditoria.
  • Gestão de incidentes: Para que a infraestrutura seja ágil é determinante que haja estratégias para gestão de incidentes bem definidas, políticas de roll back, backups e ferramentas de monitoração pró-ativas.

Por mais que DevOps seja flexível e fácil de você adotar na sua empresa, existe alguns conceitos que temos que seguir.

Eles se resumem em: Cultura, Automação, Medição e Compartilhamento

  • Cultura: DevOps (o nome) é uma abreviação para desenvolvimento e operações. É como juntar desenvolvedores e operações, fazendo-os interagir, se comunicar. É a colaboração entre as equipes.
  • Automação: remove todos os obstáculos que impedem como os desenvolvedores vão entregar recursos incríveis. Assim que você começar a automatizar, cuidado para não enlouquecer querendo automatizar tudo. Não é bem por ai, um bom ponto para começar o processo automático de um processo contínuo. Ele deve construir seu software e executar o teste de unidade em cada commit, em seguida, notificar uma equipe de sucesso ou Falha.
  • Medição: Você não pode tomar decisões na base do chute com o seu software e infra-estrutura. É por isso que a medição é tão importante. Antes, eu disse que DevOps é sobre como melhorar a eficiência do desenvolvimento. Portanto, você precisa saber o que está acontecendo, como seu pipeline está executando e como sua infra-estrutura está se comportando. Há um monte de soluções de monitoramento no mercado para diferentes camadas da pilha de tecnologia. O tempo para pesquisar uma opção que é melhor para você vai compensar numa forma de recuperação de problemas mais rápido. Isso pode ajuda-lo a passar de reativo para proativo.

Compartilhamento em DevOps significa que você deve estar compartilhando os problemas e soluções que você está trabalhando em toda a sua empresa. Quando você enfrenta desafios, você deve conversar com diferentes departamentos e pessoas em sua empresa. E você deve compartilhar suas soluções com os mesmos grupos para todos os que concordam em uma solução compartilhada e impede que outras equipes para re-inventem a roda. Considere a compartilhamento como um facilitador para uma colaboração e transparência.

Conclusão

É importante conhecer esta abordagem e aumentar ainda mais sua capacidade de gestão desde a concepção do projeto até sua operação, seja mensurando benefícios ou garantindo valor ao negócio. Ressalto também que valores como Feedbacks contínuo e trabalho de forma integrada cada vez mais crescente nas organizações. Saber gerir projetos e operações em diversos cenários e ainda e orquestrar de forma equilibrada é o que fará de você um grande gestor.

Flávio Costa on InstagramFlávio Costa on LinkedinFlávio Costa on Twitter
Flávio Costa
Gerente de Projetos na Hexagon
Gerente de projetos com mais de 15 anos de experiência desde desenvolvimento de software, gestão de portfólios, programas e projetos, liderança e formação de equipes. Possui as principais certificações gestão de projetos como: PMP (Project Management Professional) pelo PMI, PRINCE2 Practitioner, PRINCE2 Agile e MoP (Management of Portfolio) pela Axelos, Agile Scrum pela Exin entre diversas outras.

Gerenciou grandes projetos e programas de implantação de sistemas nos segmentos de comércio, varejo, engenharia, segurança pública, informações geográficas e setor público sempre com foco no relacionamento interpessoal e gestão de mudança com alto valor estratégico. Sempre engajado e comprometido em construir e liderar equipes para atingir as metas corporativas e entregar valores e benefícios a organização e cliente.

Atualmente é: Gerente de Projetos na Hexagon, Gerente de Portfólio no PMI-SP, Professor em gestão de projetos pelo SiteCampus e Colunista nos portais TI Livre e Projetos e TI.

Deixe uma resposta