quarta-feira, 13 de junho de 2018

DevOps



A tecnologia e uma fonte inesgotável de palavras técnicas (buzzwords) para referenciar ferramentas e metodologias. Uma muito comentada no momentos e DevOps.

Mas o que é DevOps ?

Como é um termo novo, não existe um definição consensual do que é, mesmo assim já podemos ter uma grande percepção do que significa a partir de diversos insights obtidos de cases que fizeram ou estão fazendo sua implementação.

Derivada da junção entre Desenvolvedor e Operações, DevOps antes de tudo não é uma ferramenta, ou conjunto delas, nem tampouco é um departamento especifico da organização, subordinado ou não a equipe de tecnologia da informação (TI). DevOps é uma grande mudança cultural na organização. Basicamente uma transformação comportamental que envolve maneiras de integrar equipes, agilizar, otimizar e automatizar parte dos processos das empresas. Apear do termo ter sido criado na área de tecnologia a intenção de integração e otimização do fluxo de trabalho se estende aos demais departamentos da empresa.

Antes a metodologia utilizada para tratar situações problemas era focada na divisão da tarefa em três grandes ciclos: governança, desenvolvimento e operações (Application Lifecycle Management - ALM). O movimento DevOps tem como objetivo acabar com o distanciamento entres os times, incentivando a colaboração entre eles. A intenção não é eliminar as diferenças dos setores e sim criar "pontes" para um melhor funcionamento entre a eles. 

Na cultura DevOps o compartilhamento de responsabilidades é um fundamento básico no relacionamento das equipes. Tanto a equipe de desenvolvimento quanto a de operações tem consciência do seu papel e do impacto que pode causar no outro. Todas as fases do projeto: os levantamentos, desenvolvimentos, testes e entrada em produção (deploy) são acompanhadas por todos. Existe a preocupação com a qualidade da entrega final. Esse processo tente a trazer melhorias em todos os processos a médio, longo prazo. Perceber a "dor" do outro, seja seu colega de equipe ou principalmente o cliente final, faz com que aumente o esmero na execução de atividades. 

Por vezes, para facilitar esse processo as equipes trabalham no mesmo espaço físico, no entanto é um erro chamar uma equipe de DevOps. Cada equipe tem seu papel e DevOps é uma cultura de trabalho,

Confunde-se DevOps com a simples criação de scripts e automatização de processos e entregas. Apesar de criar scripts ser uma ferramenta de DevOps é somente um pequeno pedaço da cultura a ser modificada. A preocupação com a qualidade e rapidez das entregas é maior que a simples criação de automações. Não podemos resumir DevOps a simples ferramentas, na verdade refletir é na troca da maneira de pensar (mindset) os processos da empresa.

Principais Benefícios

DevOps traz benefícios de otimização de tempo e esforços propondo ciclos menores de desenvolvimento, trabalho colaborativo e quebra de paradigmas entre as áreas envolvidas.
  • Integração e diminuição de tempo nos projetos - Trabalhar com DevOps também traz vantagens como integração a tendências como Cloud (inclusive as nuvens híbridas), PaaS, SaaS e IaaS, que, em conjunto, diminuem consideravelmente os custos operacionais e facilitam bastante à rotina da empresa;
  • Otimização de processos e recursos - Remodelar a forma de trabalho dos setores envolvidos traz ainda benefícios no que se refere a reuso de software, redução nos esforços de entrega e flexibilidade para ter respostas mais rápidas;
  • Monitoramento - Com a ajuda de ferramentas de automação e dashboards descomplicados, ela também acompanha mais facilmente as métricas e resultados desta implantação, executa deploys automáticos ou mais fáceis, desafoga equipes e as auxiliam a “errar menos” e a ter uma comunicação mais fluída;
  • Maior capacitação - Com a realização de treinamentos por consultorias especializadas, a empresa consegue ainda qualificar e preparar melhor seus times. Ela consegue elevar a qualidade dos trabalhos em colaboração e auxilia as equipes a serem mais receptivas à mudança cultural e a enxergar valor nesta medida;
  • Facilidade em intervenção proativa - Com a cultura DevOps, há integração dos grupos e facilidade em adaptar algum problema encontrado durante o projeto à melhor solução. Uma vez que pelos testes e entregas intermediárias já se consegue detectar possíveis falhas ou necessidades de adequação;
  • Lançamento regular e frequente de novas funcionalidades - Através da integração de todas as tecnologias e linguagens da equipe de TI, e a integração da TI com os outros setores da empresa, a DevOps torna mais inteligente o desenvolvimento de software. As práticas que são implantadas possibilitam um aumento na frequência de deployment, reduzem o tempo gasto nas mudanças, o volume de falhas durante estas mudanças e o tempo de reparo quando uma falha ocorre;
  • Automatização de atividades - as tarefas repetitivas e manuais são todas automatizadas e os processos se tornam mais claros, aumentando a entrega de novas aplicações, testes de qualidade, novas funcionalidades e a manutenção do sistema;
  • Capacidade aprimorada de pesquisa e inovação - Ao promover uma cultura de alta confiança entre os membros da equipe e o compartilhamento de riscos, os colaboradores são continuamente encorajados a buscarem soluções para aprimorar os produtos e/ou serviços oferecidos pela empresa, de modo a atender às necessidades dos clientes.

Ferramentas

O DevOps prioriza a colaboração e a integração continua, além da busca por ferramentas que promovam uma certa vantagem para a automação da configuração da infraestrutura para o desenvolvimento, em uma perspectiva de ciclo de vida do produto. Controle de versão e a automação do código para deployments são duas das ferramentas mais impactantes e comuns para o DevOps.

Contudo, há diversas outras ferramentas que podem e devem ser utilizadas, como a configuration management, ticketing systems, monitoramento e provisionamento. Independente de preferencias segue abaixo algumas indicações:
  • Git, Subversion e Mercurial - Em termos de desenvolvimento, o Git é a alternativa mais usada pela facilidade em controlar as versões das aplicações. O Subversion e o Mercurial são as opções mais conhecidas e melhor avaliadas pelos profissionais de TI. Para complementar o conjunto de ferramentas, um bom sistema de tickets para documentar os pedidos internos de correção e otimização, por exemplo, deve garantir excelentes resultados;
  • Scrum e Kanban são as metodologias mais indicadas para a implementação da cultura DevOps, pois apresenta boa aderência aos diferentes formatos de processos existentes nas organizações;
  • Container Cloud OpenShift - Se adapta a uma grande variedade de linguagens de programação e tipos de bancos de dados (veja mais);
  • Data Center Virtual OpenStack - Permite o gerenciamento de todo um Data Center por meio de uma API (Application Programming Interface). Isso facilita muito o trabalho dos envolvidos no processo (veja mais).

Marcelo Miranda
Dir. Comercial e Projetos