Liderança em aplicativos hoje

O que é preciso para ser um líder de mercado? Em nosso cenário atual, fortemente competitivo, liderança em aplicativos é a chave. A web moderna e os aplicativos móveis são a nova face dos negócios e o fator principal na geração de receitas, sendo ...

Wednesday, 18 de September de 2013

DevOps: Entregas ágeis para obtenção de vantagem competitiva

Introdução

O que é preciso para ser um líder de mercado? Em nosso cenário atual, fortemente competitivo, liderança em aplicativos é a chave. A web moderna e os aplicativos móveis são a nova face dos negócios e o fator principal na geração de receitas, sendo a agilidade uma nova vantagem competitiva.

Mundo Ágil

Atualmente empresários do ramo de TI buscam oferecer aplicativos lucrativos e de alta qualidade no contexto de um mundo ágil. A era dos projetos maratona para lançar aplicativos monolíticos, em uma plataforma única, está dando lugar à estratégias que privilegiam dispositivos móveis (mobile-first), e lançamentos rápidos e iterativos de aplicativos versionados em múltiplas plataformas e dispositivos. O ciclo de vida das aplicações agora é caracterizado por uma complexidade, escala e velocidade nunca vistos.

 

Em meio a uma fusão, a NYSE Euronex1 trouxe um novo Diretor de Operações, que pediu a sua equipe que reduzisse o ciclo de desenvolvimento web de dois anos para um ciclo de produção iterativa de duas semanas. Eles adotaram métodos ágeis, uma nova plataforma de aplicações web e atingiram este objetivo, lançando 40 novas aplicações centrais para os negócios em 18 meses.     O Pintereset2 viu os acessos online de sua rede social serem alavancados em 5124%, para mais de 28 milhões de acessos por semana, durante seu segundo ano de negócio. Eles foram capazes de suportar o rápido crescimento através de automação, ferramentas ágeis e forte colaboração entre desenvolvedores e equipe de infrageis e forte colaboração entre desenvolvedores e equipe de infra. No Facebook3, lançamentos de aplicativos agora são realizados duas vezes ao dia. Enquanto poucas empresas gerenciam projetos da dimensão do Facebook – com seus 700 desenvolvedores, 1.5 GB de código binário e milhares de servidores atendendo a um bilhão de usuários – para a maioria das empresas a habilidade de gerenciamento rápido, lançamentos confiáveis e transparentes para os usuários é simplesmente vital para a competitividade nos negócios.    

Aplicativos em crise

Enquanto esses exemplos destacam o tipo de liderança que pode ser alcançada com a adoção bem sucedida de metodologias ágeis, a realidade para a maioria das organizações é bem diferente. De fato, a mudança para o ágil foi bem recebida pelos desenvolvedores, designados para tarefas de inovação e mudança, mas e quanto aos times de operações, que devem manter a alta disponibilidade, estabilidade e segurança dos aplicativos críticos para os negócios em produção?

O desenvolvimento ágil de iteração contínua, impõe novas demandas na operação, afim de possibilitar a entrega contínua, no qual pequenas mudanças são liberadas frequentemente e as aplicações devem ser testadas conforme a entrega. Isto tem gerado uma discrepância entre desenvolvimento e operações, levando a uma crise de atrasos e falhas de aplicativos. Em uma pesquisa4 recente com profissionais de desenvolvimento e operação, 50% admitiram atrasar as datas de lançamento de aplicativos.

Organizações que adotaram o desenvolvimento ágil, ainda contando com processos operacionais desconexos, estão fazendo a dolorosa descoberta de que o lucro ganho com o desenvolvimento ágil será diminuído sem uma metodologia de entregas ágeis para apoiá-los.

Falhas em aplicativos levam a brigas e discussões

Superando as diferenças entre Desenvolvimento e Operações

Recentemente, o DevOps surgiu como uma maneira de derrubar a parede invisível que tradicionalmente separa desenvolvimento e operações, e substituiu isso por um fluxo de trabalho colaborativo e automatizado. De acordo com uma pesquisa da Universidade Carnegie Mellon6, as principais causas de fracasso de aplicativos estão diretamente relacionadas à problemas que as equipes de desenvolvimento e operações devem resolver juntas - incluindo atualizações de software mal sucedidas , incapacidade de prever e lidar com demandas imprevistas, exaustão de recursos, erros de configuração, diagnóstico de falhas fracos para os erros da aplicação.

Nas próximas páginas, nós vamos observar como Desenvolvedores e Administradores de sistemas podem trabalhar colaborativamente para adotar abordagens ágeis e trazer inovações para o mercado mais rapidamente.

Implementações emblemáticas

Estabeleça liderança com lançamentos antecipados, rápidos e iterativos.

Aqui está um cenário que muitas organizações experimentam com o lançamento de novos aplicativos. Conforme o novo aplicativo se aproxima de seu lançamento, os desenvolvedores terminam o código, realizam as checagens finais e lançam o código para a equipe de operações. Sem uma abordagem colaborativa ou um processo automatizado de entrega por parte dos desenvolvedores para os operadores, perde-se tempo gerando instruções manuais. Isto pode ser um processo doloroso, e desenvolvedores podem não visualizar tudo que o time de operações precisa saber. Ambientes inconsistentes entre desenvolvimento, homologação e produção acrescentam maior complexidade à situação.

O aplicativo pode ter pré-requisitos complexos como alterações na estrutura do banco de dados, mudanças de configurações, novas versões de bibliotecas – sendo necessário à equipe de infraestrutura lidar com tudo isso em uma sequência específica como parte do processo de deploy. Frequentemente eles são forçados a seguir um processo manual, que pode introduzir erros e atrasar o suave progresso de um aplicativo, do desenvolvimento, para homologação, até a produção. Sempre existe a possibilidade das instruções estarem incompletas, e o time de operações não saber quais questões perguntar aos desenvolvedores.

Colaboração entre Desenvolvedores e Operadores leva a sucesso de lançamentos.

Para levar os lançamentos do desenvolvimento e teste para a produção mais rapidamente, times de desenvolvimento e operações precisam de uma plataforma de aplicativo, onde aplicativos sejam empacotados com processos de instalação automatizado embutidos, para que possa haver uma transferência harmoniosa e eficiente de Desenvolvedores para Operadores, com menor risco de erros em processos de instalação que possam vir a prejudicar a qualidade, confiabilidade e performance do código.

Com a plataforma de aplicativos adequada, o desenvolvedor pode escrever scripts que incorporem todos os pré-requisitos necessários dos aplicativos e sejam anexados ao próprio código do aplicativo. Estes scripts são executados durante o desenvolvimento e testes enquanto novos testes de controle de qualidade são feitos. O resultado é um processo de implantação testado, que quando executados no lado de operações – assim como quando a aplicação é enviado para produção – chegam completos, com a configuração correta de bibliotecas e extensões.

Além disso, quando times de Desenvolvimento e Operações compartilham visibilidade em tempo real da performance de um aplicativo até a fase de produção, eles sabem imediatamente se seu comportamento é de alguma forma diferente do que era no ambiente de desenvolvimento e teste.

O desafio da rápida ascensão

Alinhar Desenvolvimento e Operações para juntos sustetarem as metas de negócios.

Uma vez lançado com sucesso um aplicativo líder o que é preciso para sustentá-lo? Seja o aplicativo focado no consumidor ou voltado para uso interno, manter o interesse do usuário requer uma experiência de uso positiva e consistente. Isto pode ser especialmente desafiador quando websites e aplicativos são confrontados com o que já foi denominado “efeito Oprah”, quando o tráfego chega as centenas de milhares ou milhões de acessos em um período de 24 horas, decorrente da forte divulgação na mídia de massa. O mesmo é verdadeiro para sites cujas empresas são impactadas por grandes noticiários, tráfego em épocas festivas ou qualquer tipo de aumento previsto ou não no volume de tráfego.

Observemos o caso da Netflix, que sofreu uma falha de serviço em 20127, que impediu os consumidores de contratar filmes online durante a conturbada época do feriado de Natal. A Netflix está entre os clientes de alto-padrão da Amazon, por seu serviço baseado em nuvem, possivelmente gerando o maior tráfego de dados da Amazon. Essa foi a segunda vez em seis meses que uma falha da Amazon (essa foi posteriormente atribuída a uma falha no balanceamento de carga) derrubou o serviço da Netflix, e sua reputação e lucros sofreram os efeitos.

Em um estudo da industria de alta tecnologia8, 89% dos consumidores começaram a fazer negócios com um concorrente após uma experiência negativa.

Quando aplicações ganham força e não apresentam o desempenho esperado em um teste de carga, pode ser difícil de entender a fonte dos problemas de escalabilidade. Isso é particularmente verdadeiro em ambientes de silos onde times de Desenvolvimento e Operações não tem uma visão conjunta da performance do aplicativo. Trabalhando juntos, precisam entender: o que é preciso para escalar rapidamente um aplicativo para atender picos de demanda, como a performance pode ser otimizada em todos os estágios do ciclo de solicitação/resposta, e caso ocorra, o que está causando lentidão no aplicativo depois de ser colocado em produção.

Colaboração entre Desenvolvimento e Operações afim suportar a escalabilidade.

Para oferecer o melhor serviço possível aos consumidores durante os picos de tráfego, os esforços dos DevOps devem estar alinhados com este objetivo e apoiados por uma plataforma de aplicativos comum que ofereça tolerância às falhas e escalabilidade sob demanda.

  • Comece pensando nos requisitos de infraestrutura e do aplicativo para que seja auto escalável, tanto localmente quanto na nuvem. Garanta que a infraestrutura seja flexível para aguentar cargas variadas mantendo alta disponibilidade.
  • Equipar desenvolvedores com ferramentas para criar aplicativos do zero, atendendo as demandas de nosso atual mundo social, global e móvel. Por exemplo, criar suporte para paralelização de tarefas, evitando gargalos durante o processo de crescimento da aplicação, bem como otimizar a performance em todo o ciclo solicitação/resposta HTTP.
  • Possibilita aos times de Desenvolvimento e Operação visibilidade compartilhada da performance do aplicativo em produção, com monitoramento automatizado e recursos de gerenciamento embutidos. Com o acesso a dashboards compartilhados, ambos os times se beneficiam do monitoramento e alertas em tempo real, podendo assim responder rapidamente a problemas de performance.
  • O Monitoramento contínuo ajuda os times de Desenvolvimento e Operações a identificar tendências de uso, compreendendo melhor o comportamento do aplicativo com o tempo, beneficiando o desenvolvimento iterativo.
  • No desenvolvimento ágil, a métrica desejada para um aplicativo pode ser especificada como parte do pacote de instalação antes de sua transição para o time operacional. Uma plataforma de aplicativos deve suportar a integração com ferramentas de monitoramento conjunto, para que a métrica possa ser vista através dos painéis existentes e através de consoles de gerenciamento no ambiente de TI.
  • Recuperação de aplicação de forma transparente ajuda a garantir alta disponibilidade de aplicações web e mobile.

Saúde e Longevidade de Aplicativos

Equilibrando a necessidade de velocidade e qualidade com segurança

Enquanto desenvolvedores recebem a tarefa de promover o desenvolvimento rápido e iterativo de aplicativos de alta qualidade, o time de operações ainda precisa manter um nível de controle em nome da estabilidade e segurança dos aplicativos no ambiente de produção. Ainda, um estudo recente mostrou que 60 a 80% dos custos de desenvolvimento de software são de retrabalho, e até 50% dos aplicativos liberados para produção sofrem retrocesso posteriormente. A recompensa de um time é o risco de outro, levando a conflitos e acusações quando as coisas dão errado. Um objetivo dos DevOps é equilibrar o conflito entre risco e recompensa e ajudar esses times a colaborarem em resolução de problemas pela saúde e longevidade do aplicativo.

 Fonte: IBM9

Não é incomum que um problema surja no aplicativo meses depois de seu lançamento. E se um aplicativo começa a falhar repentina e inexplicavelmente, mas o desenvolvedor original já avançou para um outro projeto e o ambiente original de desenvolvimento e teste já foi reorganizado? O atual desenvolvedor deve primeiro recriar o ambiente e então tentar replicar o problema. Sem a visibilidade do ambiente de produção, o desenvolvedor pode não saber se está lidando com um problema de configuração ou de código. Reconstruir o ambiente de desenvolvimento e tentar replicar o erro pode levar dias ou semanas e desencadear custos excessivos no projeto enquanto prejudica o calendário de lançamento.

Enquanto isso, o time de operações está sob constante pressão para manter os compromissos de SLA do aplicativo. Eles precisam ter a capacidade de auditar e ter controle de acesso que mostrem exatamente que mudanças foram feitas na produção do sistema, quando e por quem. Operadores são familiarizados com a necessidade de documentar as respostas para perguntas como:

  • Como é concedido, controlado e monitorado o acesso ao sistema?
  • Onde está o histórico detalhado dos patches de segurança?
  • Como é garantida a segurança em aplicações em versão no fim da vida útil?
  • Qual o método atual de controle de versão?

Colaboração entre Desenvolvedores e Operações gera aplicativos saudáveis.

Uma abordagem DevOps requer uma plataforma de aplicativos que possa fornecer a ambos visibilidade compartilhada do comportamento do aplicativo em ambientes de produção, e apoio a um fluxo de trabalho colaborativo no processo de troubleshooting a fim de reduzir o tempo de resolução de problemas.

Na arquitetura de servidores atual, baseada em nuvem, mudanças de configuração estão entre as causas principais de erros em aplicativos, portanto, a habilidade em detectar automaticamente mudanças não-autorizadas na configuração do servidor poupam tempo e eliminam a necessidade dos passos manuais de eliminação de problemas.

Quando uma trilha de auditoria é parte da plataforma de aplicativos, o time de operações pode ter uma visão clara das mudanças essenciais nas configurações do sistema de produção. Isso permite visualizar quem mudou quais configurações e quando, para que o time de operações esteja melhor preparado para prevenir problemas como mudanças de configuração fora de sincronia.

Permissões específicas no aplicativo podem dar aos desenvolvedores o acesso que precisam para depurar a informação – mas de maneira controlada. Quando os desenvolvedores podem ver um histórico detalhado da execução do código, podem resolver problemas do aplicativo mais rapidamente. Se tal problema não puder ser resolvido rapidamente, o recurso de retornar à versão operante mais recente significará que o time de Operações pode manter a alta disponibilidade.

Além disso, empresas que promovem tecnologias de código aberto precisam estar preparadas para quando a comunidade de código aberto começar o processo de fim de vida para uma ferramenta em particular ou parte de um pacote de software. É importante escolher fornecedores que possam oferecer atualizações automáticas, reparos imediatos e suporte estendido, mesmo para versões fora de suporte.

Adote o modelo DevOps para obetenção de vantagem competitiva

Estabeleça liderança com lançamentos iterativos, antecipados e rápidos.

Alinhar Desenvolvimento e Operações para juntos sustetaremas metas de negócios.

Mantenha a saúde e a longevidade de seus aplicativos.

As atenções estão voltadas para TI e sua habilidade de manter o ritmo das demandas do negócio. Nos já vimos o quão importante é alinhar entregas ágeis com desenvolvimento ágil. Para alcançar a liderança em aplicativos, organizações estão aprendendo a adotar processos no modelo DevOps de modo holístico, ajudando seus times de desenvolvimento e operações a colaborar efetivamente com o apoio as suas contrapartes no negócio, entrando no caminho para alcançar a liderança de mercado.

Toda empresa quer um ambiente de implantação de alta velocidade no qual entregue aplicações de alta qualidade. A chave é evitar negociatas de velocidade por qualidade que possam minar esse objetivo.

Uma plataforma adequada para aplicativos web e aplicativos móveis vai facilitar lançamentos mais rápidos de aplicativos de alta qualidade, ao mesmo tempo em que oferece segurança real contra problemas de aplicativos que possam emergir em nosso mundo social, global e móvel.

Com ferramentas de software, trabalho em equipe e as melhores práticas possíveis, que promovam a colaboração DevOps por todo o ciclo do aplicativo, as equipes de desenvolvimento e operações podem atacar diretamente as causas de atrasos e falhas em aplicativos – juntos. O time de operações pode contribuir com uma entrega ágil e os desenvolvedores podem aproveitar melhor o tempo e energia em inovação.

Na página seguinte, veremos como o Zend Server pode ajudar organizações a adotar o modelo DevOps e colaborar efetivamente para lançar pequenas atualizações de maneira rápida e frequente, medindo e respondendo às necessidades imediatas e de longo prazo, alinhadas aos objetivos do negócio, usando esse conhecimento para alcançar a liderança de mercado.

Sobre o Zend®Server

A plataforma de aplicativos móveis e da web da próxima geração.

No mundo ágil de hoje, o Zend Server oferece as ferramentas, processos e infraestrutura que os times de desenvolvimento e operações precisam para um fluxo de trabalho automatizado e colaborativo. Com o Zend Server, é possível evitar atrasos e falhas comuns em aplicativos, melhorando seu sucesso. Alguns pontos de destaque:

  • Automatização do processo de implantação, do desenvolvimento e teste à produção, reduzindo o potencial de erro humano e acelerando os lançamentos.
  • Visibilidade do ambiente de produção para desenvolvedores, sem perda de controle das operações realizadas, mantendo a estabilidade e segurança do aplicativo.
  • Funcionalidades de diagnósticos, provê detalhamento da sequência de execução do código, economizando tempo dos desenvolvedores evitando o processo manual passo a passo de reprodução do ambiente de testes original e replicação de erros.
  • Monitoramento em tempo real com alerta proativo e bloqueio de alterações de configuração não autorizadas.
  • Troubleshooting avançado, com auditoria de rastreamento que captura todas as alterações de configuração pelo sistema de produção (que configurações foram alteradas, por quem e quando).
  • Dashboards de métricas de desempenho oferecem observação a longo prazo e a habilidade de prever proativamente e gerenciar a performance em mudanças de carga esperadas ou não.
  • Rollback automatizado e seguro de aplicativos à versões anteriores quando preciso.
  • Recuperação de aplicação de forma transparente para garantir alta disponibilidade todo o tempo.
  • Arquitetura de API que suporta a fácil integração da Plataforma de Aplicativos Zend Server com ferramentas familiares, como por exemplo: Hudson e Jenkins para integração contínua, Chef e Puppet para distribuição, Nagios para monitoramento, etc.
  • Infraestrutura de aplicativo que se flexibiliza para lidar com cargas variáveis, incorporando ou integrando tecnologias padrão de auto-escalabilidade.
  • Escalabilidade confiável in-loco assim como em ambientes de nuvem públicos, privados ou híbridos, funcionando no Amazon WebServices, VMware, Red Hat, RightScale, IBM Smart Cloud e outros softwares de gerenciamento e infraestrutura em nuvem. A nuvem de desenvolvedor Zend oferece uma oportunidade sem riscos de experimentar o Zend Server na nuvem para desenvolvimento.
Sobre a Zend Technologies

Zend é parceira dos negócios, para a distribuição de aplicativos modernos através de dispositivos móveis e nuvens. A Zend ajudou a estabelecer a linguagem PHP, que hoje funciona em mais de um terço da web. Seu principal produto, o Zend Server, é a plataforma de aplicações líder para desenvolvimento, deploy e gerenciamento de aplicativos críticos. As soluções Zend são empregadas em mais de 400.000 companhias, incluindo a NYSE Euronext, BNP Paribas, Bell Helicopter, France Telecom e outras marcas líderes pelo mundo.

Saiba mais em www.zend.com

 

Leia aqui o whitepaper original em inglês.

Referências

1 - NYSE Euronext fortalece o mundo do câmbio com Zend http://static.zend.com/topics/NYSE-Euronext-CS-0512-R1-EN.pdf 2 - GigaOm, http://gigaom.com/2012/09/07/pinterest-to-startups-devops-is-hard-but-do-it-anyway/ 3 - Zkybase.org, http://zkybase.org/blog/2012/12/02/pushing-twice-daily-our-conversation-with-facebooks-chuck-rossi/ 4 - Channel Insider.com, http://www.channelinsider.com/c/a/News/DevOps-Crisis-Starts-to-Spiral-Out-of-Control-729127/ 5 - Pesquisa ITSM, http://www.serena.com/solutions/itsm/itsm-trends-infographic.html 6 - Universidade Carnegie Mellon , “Causes of Failure in Web Applications” (Motivos de falhas em aplicativos da web), Soila Pertet and Priya Narasimhan. http://repository.cmu.edu/cgi/viewcontent.cgi?article=1047&context=pdl 7 - Slashgear.com, http://www.slashgear.com/amazon-sorry-for-netflix-downtime-heres-what-we-got-wrong-01262685/ 8 - Oracle, http://www.oracle.com/us/products/applications/cust-exp-impact-report-epss-1560493.pdf 9 - IBM, http://www-01.ibm.com/software/rational/devops/ 

Compartilhe esta página