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

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

devops-integrando-os-times-para-obter-sucesso-nos-negocios

 

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 chete 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.

Clique aqui e veja uma aula sobre formação Scrum Study com o professor Frederico Aranha – faça esta aula gratuitamente e aprenda mais!

Cursos Online Site Campus


#
Fale com o Site Campus

Tags: , , , ,