Documento técnico de negócios
Tenha como alvo
as lacunas entre o
desenvolvimento
e as operações
Foco nos desafios principais para
dar início à sua jornada de DevOps
Como tudo em TI, conseguir de
fato uma iniciativa de DevOps
bem-sucedida é mais fácil falar
do que fazer.
De acordo com o Gartner, “As relações entre Desenvolvimento
e Operações são geralmente vistas como pobres, com algumas
até mesmo consideradas maléficas”.1 Essa linguagem está muito
errada. Entretanto, a sua situação não é tão terrível, e as equipes de
desenvolvimento e operações pelo menos conversam no cafezinho.
Contudo, é verdade que, na maioria das organizações de TI, essas
duas equipes são entidades separadas, e a tendência recente para
uma colaboração mais próxima entre elas, normalmente conhecida
como “DevOps”, indica uma conscientização geral por parte da TI de
que as coisas seriam melhores se as equipes de desenvolvimento de
aplicativos trabalhassem juntas de maneira mais harmoniosa.
Mas, como tudo em TI, conseguir de fato uma iniciativa de DevOps
bem-sucedida é mais fácil falar do que fazer. Parte do desafio é que
DevOps ainda está mal-definido – é mais um conjunto de princípios
do que resultados pretendidos. Todos nós concordamos que a
melhor colaboração seria uma coisa boa, mas, com qual finalidade?
Ter a capacidade de articular seu objetivo para adotar uma iniciativa
de DevOps é a primeira etapa. Isso permitirá que você foque e priorize
seus esforços para que possa colher os melhores benefícios. Para
muitos, a meta final e a agilidade completa, reduzindo o tipo de ciclo
geral desde a concepção até a entrega do resultado final nas mãos de
seus usuários. Para alcançar esse objetivo, os líderes de TI precisam
empregar todos os esforços e observar as desconexões específicas
que fazem com que a separação entre as equipes cause prejuízos.
Desenvolvemos este documento técnico para ajudá-lo a utilizar
uma abordagem direcionada para lidar com DevOps. Com base na
ampla experiência da HP em ajudar as organizações de TI a operar
de maneira mais eficiente, identificamos sete desconexões comuns
que podem ser convertidas em ações para unificar essas funções
tradicionalmente em silos. Enfocando esses desafios específicos,
você pode transformar o relacionamento potencialmente maléfico
que o Gartner menciona em colaboração eficiente que aumenta a
velocidade geral de sua organização.
Figura 1
Como você descreveria as relações entre suas
organizações de Desenvolvimento de aplicativos e Operações de TI?
Muito colaborativa
3
Colaborativa
34
Não colaborativa
47
Bastante não colaborativa
9
Maléfica
7
0
10
20
30
40
50
Porcentagem de entrevistados
3
1. A discrepância de velocidade
Possivelmente, a desconexão mais significativa hoje entre
desenvolvimento e operações é que os dois grupos têm perspectivas
muito diferentes sobre mudanças e com qual rapidez elas devem ser
introduzidas. Essa diferença aumentou nos últimos anos devido ao
surgimento das metodologias de desenvolvimento Agile voltadas
para o que o Manifesto Agile chama de “entrega antecipada e
contínua de softwares de valor”.
As equipes de desenvolvimento estão trabalhando em conjunto com
as partes interessadas de negócios para rapidamente proporcionar
a mudança necessária para se aproveitar as vantagens das novas
oportunidades e dar uma resposta às ameaças da concorrência.
Por outro lado, as equipes de operações se esforçam para controlar
as mudanças com bastante força porque elas veem isso como um
risco de baixo desempenho, paralisações e vulnerabilidades de
segurança. Conforme o desenvolvimento cria funções com mais
rapidez, a equipe de operações tem receio de que as práticas de
testes tradicionais de que dependem para reduzir esses riscos sejam
comprometidas em nome da velocidade.
A reconciliação desses diferentes pontos de vista é talvez o maior
desafio para DevOps porque isso requer não só uma mudança
de processo, mas também uma mudança cultural. Para superar
essa dificuldade, a equipe de operações deve ter a certeza de que
alterações bem rápidas não comprometerão sua missão. Dessa
forma, a qualidade se torna a primeira e mais crucial ponte entre
os dois grupos. E a forma de construir essa ponte é por meio de
uma abordagem sistemática dos testes automatizados que começa
no ponto em que a mudança é introduzida – check-in do código
pelo desenvolvedor. Com a automatização e a execução desses
testes como parte de sua estratégia de integração contínua, você
pode adotar uma prática de testes quase ininterruptos, reduzindo
bastante o ciclo de feedback para os desenvolvedores e o que
permite que defeitos sejam identificados e corrigidos assim que
forem introduzidos.
Um regime de testes contínuos pode incorporar um amplo
espectro de testes: construção, verificação, regressão, funcional,
desempenho, segurança e aceitação. Um processo rigoroso e
automatizado que verifica progressivamente cada dimensão da
qualidade garantirá à equipe de operações que a velocidade e a
qualidade podem coexistir.
Figura 2
O desenvolvimento Agile acelera a criação de novos recursos, mas a vantagem será perdida se esses recursos tiverem um gargalo no processo de liberação.
Entrega ágil
Operações de TI
Recursos e alterações
de código
4
2. Medições e incentivos diferentes
igualam comportamentos diferentes
Uma mudança direta, porém fundamental, que pode causar um
grande impacto ao modo como desenvolvimento e operações
efetivamente trabalham juntos é examinar novamente como
os dois grupos são medidos. Operar como organizações em
silos há décadas, significa que a maioria das organizações de
desenvolvimento e operações introduziu medidas que otimizam sua
parte do quebra-cabeça, mas não necessariamente funcionam bem
para se alcançar o objetivo comercial completo.
As equipes de desenvolvimento têm uma tradição de longa data de
serem medidas com base no “triângulo de ferro” de custo, tempo
e escopo. A outra dimensão da qualidade é que, frequentemente,
ela recebe pouca atenção (esse é o principal motivo do desânimo
da equipe de operações). As equipes de operações, como gerentes
dos processos comerciais que mantêm os fluxos de receitas fluindo,
enfocam e são medidas pela estabilidade e disponibilidade dos
sistemas.
Embora essas abordagens veneráveis possam fazer sentido
isoladamente, elas são limitadas quando o assunto é o cenário
geral. E como os dois grupos são medidos com base em coisas
muito diferentes, seu comportamento parecerá mais competição
do que cooperação. Ao alinhar métricas, você pode reduzir o atrito e
estimular as equipes a seguirem juntas na mesma direção.
Considere a definição de métricas de desempenho alinhadas entre
grupos que adotam uma visão holística. Os exemplos incluem
tempo de ciclo, porcentagem de lançamentos com êxito na primeira
tentativa e porcentagem de defeitos encontrados na produção.
E se for possível, use um painel para criar uma visão única entre
funções de TI, de forma que os gerentes de TI possam definir os
principais indicadores de desempenho (KPIs) em nível comercial e
propagá-los para desenvolvimento e operações, colocando as duas
equipes no mesmo patamar com uma visão de mundo compartilhada
e dando a elas métricas e incentivos mútuos.
3. Uma parede opaca entre organizações
Além do alinhamento de medidas e incentivos, as equipes de
desenvolvimento e operações se beneficiarão com a maior
percepção das prioridades, dos processos e do progresso entre
elas. Saber em que a outra equipe está trabalhando, como as coisas
estão fluindo e quando elas estarão prontas, elimina surpresas e
confusão, o que contribui para a eficiência geral.
Eliminar as barreiras organizacionais e gerar colaboração de
DevOps pode começar com algo tão simples quanto equipes de
Agile, convidando representantes de operações em sessões de
planejamento de sprint e demonstrações de fim de sprint. As
sessões de treinamento compartilhadas sobre os processos e os
pontos problemáticos comuns entre as equipes fornecem uma
apreciação maior dos desafios corriqueiros e percepção de como
cada equipe pode tornar a vida mais fácil para a outra.
Uma visão comum e integrada sobre o estado do desenvolvimento
auxiliará na transparência e funcionará para conectar funções de TI.
Isso permite que todas as partes interessadas vejam abertamente o
progresso e coisas como: qualidade, níveis de defeito e taxas fixas.
A equipe de operações estará bastante interessada nisso, visto
que com isso eles assumirão a responsabilidade pelos aplicativos.
A colaboração e a visibilidade completas também significam
uma entrega mais tranquila quando chegar a hora de a equipe de
operações efetuar as alterações.
Na outra direção, a equipe de operações deverá ter ferramentas
que se integrem ao ambiente de desenvolvimento. Por exemplo, a
equipe de suporte deve estar preparada para facilmente encaminhar
os problemas de produção de volta à equipe de desenvolvimento
para que eles possam ser rapidamente priorizados em relação a
outros itens no backlog. Isso ajuda a garantir que o desenvolvimento
trabalhe nos itens de prioridade mais alta para a empresa,
independentemente de sua origem.
Por fim, para turbinar a proposta de compartilhamento de ideias
e solução de problemas que alimenta o progresso diário, equipes
maiores ou distribuídas terão enormes benefícios com o que há de
mais recente em ferramentas de colaboração de estilo de mídia
social, que estruturam as conversas em torno de itens de trabalho
específicos. Isso resulta em discussões com foco, voltadas para o
contexto, que reúne as pessoas certas para abordar uma questão ou
problema, independentemente da afiliação ou da localidade de sua
equipe.
5
4. Requisitos funcionais versus
requisitos não funcionais
5. Ambientes diferentes,
abordagens diferentes
Outra diferença cultural importante é o fato de que os
desenvolvedores têm a tendência de adotar requisitos funcionais,
ou o que os usuários corporativos querem que os aplicativos façam,
ao passo que a equipe de operações está mais preocupada com os
requisitos não funcionais ou ao modo como os aplicativos funcionam
e se comportam quando ativos.
Na maioria das organizações, conforme uma mudança é
implementada, ela é propagada em uma série de ambientes, como
desenvolvimento, teste, preparação e produção. Cada um desses
ambientes serve para uma finalidade diferente e um conjunto
diferente de partes interessadas. Eles são geralmente gerenciados
de formas diferentes, com o uso de recursos diferentes, usualmente
mantidos por pessoas também diferentes. Seu processo de
implantação normalmente consiste em um conjunto de etapas
manuais executadas por várias pessoas em posse de listas de
verificações intermináveis, que geralmente estão desatualizadas
ou apresentam erros. Essa abordagem consagrada não é nada
ágil e aumenta as chances de erros. De fato, ela colabora bastante
para muitos dos problemas enfrentados entre as equipes de
desenvolvimento e operações e é fonte de repetições insistentes
como “o build tem falhas” ou “funciona na minha máquina”.
Se você perguntar a um desenvolvedor sobre os requisitos de um
novo recurso de caixa eletrônico, a resposta poderá ser “Ele precisa
acessar o histórico de cada cliente que usa nosso caixa eletrônico;
identificar, com base no saldo da conta do cliente e outros fatores,
os serviços bancários que o cliente não tem, mas poderia estar
interessado em ter; e exibir uma tela promocional no caixa
eletrônico enquanto a transação do cliente está sendo processada.
Se você perguntar a um engenheiro de operações sobre os requisitos
do mesmo recurso, ele poderá responder “O serviço deve ser
executado em um quarto do tempo médio de transação do caixa
eletrônico, sem exceder a largura de banda disponível e oferecer
suporte a até 10.000 clientes que acessam os caixas eletrônicos
simultaneamente.”
Preso à sua própria definição dos requisitos, o desenvolvimento
pode fornecer uma tela de apresentação bonita e elegante que
também consuma muita largura de banda e trave a transação do
caixa eletrônico. Ou a equipe de operações pode insistir em que
o aplicativo está funcionando bem porque está sendo executado
dentro dos parâmetros de velocidade e largura de banda, embora
nenhum dos clientes esteja respondendo às promoções de vendas
cruzadas na tela do caixa eletrônico.
A adoção de uma visão mais ampla é novamente a solução para
solucionar essa desconexão. Como aprenderam os desenvolvedores
especializados, a concepção do desenvolvimento deve ser expandida
para englobar não só os requisitos funcionais, mas também os
não funcionais, como desempenho e segurança. Isso significa criar
aplicativos fáceis de aprimorar e fáceis de implantar, monitorar e
reparar. Essas coisas podem não ser tão estimulantes do ponto de
vista do desenvolvimento, mas são absolutamente cruciais do ponto
de vista das operações. Os analistas na verdade estimam que, para
um aplicativo com vida útil de 15 anos, mais de 90% do custo total
de propriedade está associado ao build inicial – na execução, na
manutenção e no aprimoramento do aplicativo. Isso torna o
conceito de criado para executar uma obrigação comercial real.
Essa é uma área pronta para automação. A automação permite que
as equipes eliminem essas liberações manuais, reduzam erros e
reduzam os tempos de liberação gerais. Fundamental para isso é
a noção de portabilidade de aplicativos, um recurso que permite
que as equipes movam aplicativos de um ambiente para outro
perfeitamente. A portabilidade é conseguida por meio de modelos
de aplicativos com foco no ambiente, os quais são compartilhados
entre desenvolvimento, teste e operações. Como todos implantam
da mesma forma usando os mesmos recursos, o resultado é
consistente, com implantações precisas sempre nos vários
ambientes do ciclo de vida.
6. Pouco ou nenhum compartilhamento
de recursos
Uma das fontes mais notórias de esforço redundante é a
“propriedade” dos ativos. Com seu histórico de organizações em
silos, as equipes de desenvolvimento e operações criam e depois
parecem acumular comunicações, resoluções, scripts de teste,
informações de uso e vários outros recursos que poderiam ser
compartilhados e reutilizados para eliminar a duplicação de esforço
e eliminar inconsistências no ciclo de vida do aplicativo. Em inúmeras
organizações de TI, o compartilhamento não ocorre ou é uma questão
secundária, principalmente porque os benefícios potenciais não são
reconhecidos. Aqui estão alguns exemplos de onde a reutilização e o
compartilhamento de recursos pode aliviar a carga:
• Crie pacotes automaticamente com os scripts de teste criados
no desenvolvimento e envie-os às equipes de operações para
monitoramento de produção, de modo que a equipe de operações
não precise recriar seus próprios scripts
• Importe dados de uso de produção para criar cenários de teste
mais precisos e realistas
• Converta sessões reais do usuário automaticamente de produção
em scripts de desempenho
• Utilize uma base de conhecimento compartilhada de perguntas,
defeitos e soluções de problemas, para que você não reinvente a
roda para problemas recorrentes
6
7. Trabalhe junto, mas elimine as
dependências
HP e os três pilares de DevOps
A estreita colaboração entre desenvolvimento e operações é uma
coisa boa, mas às vezes DevOps pode significar simplesmente
um não ficar no caminho do outro. A redução de dependências
pode ajudar ambas as equipes a trabalharem juntas, eliminando
liberações e a necessidade de aguardar a outra equipe concluir suas
tarefas.
• Qualidade: a chave do relacionamento de DevOps e um prérequisito para mudanças rápidas
Comece identificando as dependências principais entre as equipes
que resultam em latência ou perda de tempo e trabalhe para
remover ou automatizar essas partes do processo. Por exemplo,
permita que as equipes de desenvolvimento gerenciem seus
próprios ambientes, usando um recurso de gerenciamento de
laboratório automatizado. A equipe de operações está envolvida
com a configuração inicial, mas os próprios desenvolvedores e
testadores estão livres para fornecer e cancelar o fornecimento
desses ambientes sob demanda. Isso resulta em velocidade e
flexibilidade para as equipes de desenvolvimento e libera a equipe
de operações para outras tarefas.
A abordagem da HP para DevOps se concentra em três pilares sólidos:
• Automação: para diminuir os tempos de liberação, eliminar
liberações manuais e reduzir erros
• Colaboração: metas comuns, visibilidade 360 graus e
compartilhamento de recursos para unificar silos de TI tradicionais
Aplicando esses elementos principais, você pode superar o maior
obstáculo na implementação de DevOps: alterar a concepção
tradicional de suas equipes. Oferecemos suporte à nossa abordagem
com um conjunto abrangente de recursos integrados que podem
superar a base para a integração de suas equipes.
“Catalysts Signal the Growth of DevOps”, pesquisa do Gartner, fevereiro de 2012.
1
Princípios por trás do Manifesto Agile.
2
Figura 3
A abordagem DevOps da HP
1
Teste de desenvolvimento com automação
de gerenciamento de laboratório
Fornecimento
de ambientes de
desenvolvimento
e teste
2
Implantação automatizada
em desenvolvimento e operações
Monitorar
Implantar
aplicativo
de teste
Execução
de casos
de teste
Resultados
do teste
Fornecer e
implantar
para
preparação
Fornecer e
implantar
para
produção
Padrões de produção, instantâneos e imagens para
desenvolvimento e teste
3
Gerenciamento, colaboração e segurança para o ciclo de vida completo
A HP pode ajudá-lo a unificar suas funções de desenvolvimento e
operações para eliminar lacunas críticas em processos tradicionais.
7
Conecte-se
hp.com/go/getconnected
Compartilhe com colegas
Veja as tendências de tecnologia,
os alertas de suporte e as soluções da HP.
© Copyright 2012 Hewlett-Packard Development Company, L.P. As informações contidas neste documento estão sujeitas a alterações sem aviso.
As únicas garantias para produtos e serviços da HP são as estabelecidas nas declarações de garantia expressa que acompanham tais produtos e
serviços. Nada aqui contido deve ser interpretado como constituindo uma garantia adicional. A HP não será responsável por omissões, erros técnicos ou
erros editoriais contidos neste documento.
4AA4-2696PTL, criado em agosto de 2012
Download

Tenha como alvo as lacunas entre o desenvolvimento e as