Publicação

Devops na Prática

foto de
Fernando Palma CONTEÚDO EM DESTAQUE

Caros colegas,

após primeiras experiências de uso de algumas práticas do #DevOps para a gestão de serviços de TI, compartilho neste artigo algumas reflexões e diretrizes. 

O que é DevOps?

Se fosse "abrasileirada" a expressão DevOps seria mais ou menos assim: DesOps (isso mesmo, só mudaria uma letra, de "v" para "s"). Isso porquê Dev vem de Development (Desenvolvimento) e "Ops" de Operations (Operações).  

Trata-se de uma prática de mercado baseada em agilidade. Aliás, não só baseada como também considerada como uma extensão das metodologias ágeis, que - além das particularidades comuns ao SCRUM e XP - tem como principal característica juntar em uma só as equipes de #Desenvolvimento de Sistemas com Operações (#Infraestrutura).

Este é o fundamento central da boa prática DevOps, e por este motivo é considerada por muitos não apenas uma prática inovadora, mas uma cultura de transformação.

Princípios do DevOps

E se o DevOps é mesmo uma Cultura de transformação, estes são os princípios desta cultura:

Quebra de silos departamentais

 Sabe aquele jogo desagradável entre departamentos, onde cada um quer "garantir o seu"? Sabe quando as coisas não andam pra frente justamente porque cada um tem suas regras e prioridades?

 Muita gente já prometeu acabar com isso, não é verdade? A exemplo da #ITIL, do #COBIT#BPM(N), ou mesmo aqueles gurus de gestão que surgiram nos passados mais distantes como re-engenharia (vixi!!) e gestão por qualidade total. O fato é que nem todo mundo que tentou, conseguiu fazer "sarar essa doença" da gestão funcional dentro departamento de TI. Daí veio o DevOps e....

 Colaboração

Daí veio o DevOps e radicalizou. Promoveu uma boa prática para o trabalho do departamento de TI onde não há separação entre as atividades dos dois departamentos. 

Produtividade

Esse passou a ser um dos grandes lemas do desenvolvimento e manutenção de sistemas segundo os autores do DevOps: produtividade com foco no cliente é mais importante do que qualquer critério interno departamental (há não ser que o critério esteja alinhado com as premissas de agilidade e foco nas necessidades do negócio). 

Compartilhamento de responsabilidades

Polêmica e sem precedentes, a princípio pareceu uma ideia estranha. Mas aos poucos, as  empresas foram arriscando experimentar a atitude radical e notaram um incrível ganho em capacidade de tratar grandes volumes de alterações em versões de sistemas e ao mesmo tempo  atender a prazos curtos (quase um milagre da engenharia de software!*). Tudo graças a  uma  inovação  simples (nem tanto!) e eficaz: em vez da antiga cultura de jogar liberações de código "por cima da parede" entre os setores, opta-se por um trabalho colaborativo em uma unica equipe, onde todos compartilham as mesmas responsabilidades. 

* Aliás... #Desenvolvimento de software deixou de ser uma engenharia há muito tempo, não é mesmo??  (me sentindo velho...)

Automação

 
Como já é comum em práticas e métodos ágeis contemporâneos para desenvolvimento de sistemas, DevOps adota automação como palavra de ordem. Isso abrange:
  • Worflows automatizados
  • Testes automatizados
  • Infraestrutura automatizada
  • Todos os tipos de ferramentas possíveis

E tudo mais que puder ser automatizado para viabilização das práticas. 

 Ôô Fernando, Alow!! Esse Artigo Não Era Para Tratar de DevOps Na Prática !?

Verdade! Não vou me empolgar muito, vamos cortar teoria por aqui!

Mas quem tiver interesse em saber um pouquinho mais sobre o tema não precisa se sentir injustiçado. Dá uma passada aqui: #DevOps. :)

Conhecendo o Modelo do DevOps

Peço que passeie rapidamente os seus olhos pela imagem a seguir e em seguida iremos juntos "devorar" os pedacinhos dela...


Este é o Ciclo de Vida DevOps (DevOps Lifecycle) !

Essa expressão "ciclo de vida" me lembra alguma coisa...

Os 04 círculos verdes representam fases que estão descritas a seguir. Os 06 títulos no circulo exterior (em azul) tratam-se de um desdobramento, e serão explorados dentro destas 04 fases, certo? 

Steer: "estabelecer o Direcionamento", mais pode ser traduzido também para "planejar". 

Abrange:
  • Estabelecer metas de negócios
  • Planejar continuamente as diretrizes do negócio
  • Rapidamente colher feedbacks
  • Realizar ajustes

O DevOps prega que as abordagens tradicionais para estabelecer e dirigir as necessidades do negócio são demasiadamente lentas para acompanhar a velocidade do próprio (do negócio).

É como se você estivesse andando em uma bicicleta em que o pneu da frente gira mais rápido do que o de trás (dá pra imaginar o que acontece né?).

Portanto, o mais importante é que nesta fase, você - como gestor de TI - tenha instrumentos para planejar e replanejar rapidamente as necessidades em curtos períodos de tempo. Para quem já usou o SCRUM, isso não parece estranho.

Develop and Test : Desenvolver e Testar

Aqui as palavras de ordem são: desenvolvimento colaborativo e testes contínuos. 

Abrange: 
  • Envolvidos trabalhando de forma integrada
  • Plataformas e padrões comuns no momento de desenvolver e entregar software
  • Desenvolvedores devem colaborar mutuamente via integração contínua, de forma a unificar as diversas alterações feitas na base de código
  • Utilização de testes funcionais e verificações em código
  • Realização de testes de integração e regressivos
  • Verificações perante requisitos definidos na fase anterior

Testar continuamente, não custa esclarecer, significa iniciar os testes o mais cedo possível, o que resulta em redução de custos, ciclos de teste encurtado, e - o melhor - incremento de feedbacks positivos.

Deploy: Implantação 

Como se era de esperar, o DevOps considera aqui a automação como condição para a prática ágil. Ferramentas precisam trabalhar com releases e versões de implantação incluindo "tudo o que tem direito": integração, rastreamento de alterações, "merges" e afins. 

Operate: Operar

A entrega (teoricamente) foi feita. Mas...a cultura de agilidade continua impregnada, assim como nas outras fases. O importante é que a operação seja monitorada e, quanto antes, necessidades sejam detectadas para restartar o ciclo. 

Abrange: 
  • Monitoramento contínuo: dados e métricas devem ser monitorados constantemente, de forma a detectar o mais rápido possível algo que está fora do esperado.
  • Feedback contínuo do cliente: feedbacks  de clientes são buscados continuamente e com agilidade. Em métodos ágeis, a equipe que desenvolve não teme mudanças e está preparada para implementá-las contanto que agregue valor ao negócio.

O DevOps recomenda a utilização de ferramentas de monitoramento que permitam detectar ao máximo o comportamento do cliente e pontos de melhoria / ajustes necessários.  

O ciclo de feedback contínuoé um componente essencial das práticas DevOps, pois permite um certo incremento da sensibilidade da equipe perante as necessidades dos Clientes. 

07 Dicas Para Adoção do DevOps

Dica 01 - Trate a Adoção Como um Projeto

Você já sabe, mas não custa lembrar: adote um planejamento que inclua pessoas, recursos, processos, enfim, o essencial para o funcionamento das práticas.

Lembre-se que práticas ágeis funcionam com base em automação, portanto verifique se possui as ferramentas adequadas ou precisa contratá-las. Dê uma olhada nas soluções de mercado para:
  • Automação de mainframe
  • Ferramentas de gestão de Middleware / Middleware -centric
  • Ferramentas de deployment
  • Gerenciamento de Ambiente de Testes
  • Ferramentas de Testes de integração, testes funcionais, de stress e segurança
  • Ferramentas de Testes de Dados
  • Automação da produção e agendamento
  • Otimização da capacidade
  • Gestão de disponibilidade

Dica  02 - Faça Uma Avaliação da Situação Atual

Agilidade não significa que deve-se dispensar esta etapa. Avalie em que nível de capacidade está perante às necessidades atuais do negócio. 

Dica 03 - Identifique Gargalos no Pipeline de Entregas

Na gestão de releases, é comum encontrarmos dificuldades como: 
  • Retrabalho em excesso devido a bugs que só são detectados em produção.  
  • Desenvolvimento de funcionalidades que não são utilizadas pelo cliente, posteriormente (alguns chamam este fenômeno de over-production, eu chamo de dinheiro no lixo.).
  • Sobrecarga desnecessária de idas e vindas entre ambientes (versões, versões, versões...)

Conhecendo quais são e onde estão as suas dificuldades, será mais fácil mapear onde deseja chegar com o DevOps. Ou até justificar o uso dele.

Dica 04 - Seu Maior Desafio é a Mudança Cultural

Encorporar práticas DevOps da noite pro dia em um departamento "careta", burocrático e altamente funcional, pode se tornar tão difícil quanto promover uma parada gay durante um culto religioso cristão. Você vai precisar de certo tempo para modernizar a mente das pessoas, aos poucos. Que tal uma cultura orientada a processos como primeiro passo?

Tampouco é aconselhável a adoção das práticas antes de um bom ciclo de treinamentos e conscientização que façam "cair a ficha das pessoas" de que elas estarão trabalhando em uma mesma equipe dali em diante.  

Dica 05 -  Sobre os Processos

Serão enxutos e práticos, mas existirão. Não ignore o fato de que precisará de uma formalidade adequada, mesmo que se trate de uma formalidade de "aparência moderna" (vá pedindo logo pro setor de suprimentos muitos bloquinhos de sticks...). De nada adiantará as pessoas colaborarem rapidamente se não fizerem as coisas certas. 

Dica 06 - Gerenciamento de Mudanças

Sem dúvida, um processo que precisará estar perfeitamente entendido pela equipe. Profissionais e partes envolvidas precisam estar capacitados neste que é o coração de um sistema de trabalho baseado em DevOps. 

O processo deve abranger o básico, como avaliações de impacto, definições de fluxo de trabalho pré configurados, prioridades, planejamento de configuração e implantação, além de procedimentos de revisão.  

Dica 07 - Testes, TDD e Equipe da Qualidade

Assim como já ocorre em outros métodos ágeis, orientação a testes é uma premissa para a agilidade. Departamentos com pouca maturidade em processos de testes de software e TDD, podem sentir dificuldades em ser ágeis, por mais que tentem seguir o ciclo de boas práticas do DevOps. 

Comentários