Então, o que é a implementação contínua, por que ela é interessante e que problemas ela ajuda a resolver?
Para muitas organizações, existe uma dicotomia entre o desejo do negócio e as equipes de desenvolvimento para produzir software que trabalhe mais rápido e com mais frequência, e a responsabilidade da equipe de operações para gerenciar a infraestrutura da organização de maneira oposta ao risco para garantir a continuidade dos negócios. Infelizmente, esta dicotomia muitas vezes resulta em um atraso significativo de quando uma equipe de desenvolvimento “termina” um pedaço da funcionalidade para quando ela pode ser implantada para a produção. Contudo, o atraso é muitas vezes necessário para garantir que a mudança possa ser implantada de forma segura, não resultando em perda de disponibilidade deste sistema. Este atraso é devido ao rigor e ao processo necessários para reduzir os riscos, pois o processo de implementação, muitas vezes, compreende muitas etapas manuais que foram feitas pouquíssimas vezes antes. Portanto, para muitas organizações, as implementações são feitas, muitas vezes, durante semanas, são vistas como muito arriscadas e, muitas vezes, falham.
A implementação contínua é o processo de implementação de todas as mudanças de software para um ambiente, esteja ele em desenvolvimento, em fase de teste, de pré-produção ou de produção. É semelhante à forma que muitas pessoas usam a integração contínua para desenvolver cada mudança. Esta abordagem significa que sempre que uma mudança é registrada, o processo de implementação contínua também garante que a mudança possa ser implementada com êxito. Portanto, são removidas apenas as etapas manuais e de risco da fase de implementação. Mas quando a implementação em produção é iniciada, na verdade, é uma coisa comum, corriqueira, que não é mais arriscada do que a compilação de um pedaço de código-fonte, ao invés de uma coisa nova que está sendo feita pela primeira vez.
Isso proporciona muitos benefícios para uma organização:
- O tempo de inatividade é reduzido e mais atualizações são realizadas, o que resulta em melhor produtividade e aumento no valor de software;
- A empresa tem acesso mais cedo às mudanças de software, o que melhora o retorno sobre o investimento em desenvolvimento de software;
- As equipes de teste gastam menos tempo configurando ambientes e implantando software;
- São encontrados defeitos de regressão mais cedo, o que faz levar menos tempo e custar menos para consertar.
Caso isso esteja soando um pouco rebuscado, uma outra maneira de pensar sobre a implementação contínua é que ela é uma progressão lógica das abordagens existentes. No começo dos anos 2000, algumas práticas se tornaram comuns: compilação contínua, como o produzido pela maioria das IDEs (o código é compilado quando o arquivo é salvo) e integração contínua (o código é desenvolvido, e um conjunto de testes de unidade é executado quando ele estiver marcado para controle de fonte). Cada uma dessas práticas melhora a produtividade. Assim como a compilação contínua melhora a produtividade individual e a integração contínua melhora a produtividade de uma equipe de desenvolvimento, a implementação contínua é a progressão natural que melhora a produtividade de uma organização, automatizando e reduzindo os riscos de lançamentos. Pequenas mudanças podem ser facilmente implantadas e é possível obter valor do software mais cedo e com maior frequência.
Figura 1. Valor da compilação, integração e implementação contínuas.
A implementação contínua pode proporcionar muitos benefícios eficientes, mas o seu sucesso depende de alguns desafios únicos. O restante deste artigo trata isso com mais profundidade e explica como a solução IBM Rational ALM supera as dificuldades para tornar prática a implementação contínua.
Desafios na configuração da implementação contínua
Existem vários desafios associados à criação de um ambiente de implementação contínua.
Projetando e comunicando a implementação
Comunicar e projetar a implementação requer, muitas vezes, pessoas de várias disciplinas (arquitetos de software, engenheiros de implantação, operações, administradores de bancos de dados, gerentes de projeto e assim por diante), bem como diferentes departamentos e, muitas vezes, de vários locais, para se comunicar. A colaboração necessária é complexa e precisa da participação de muitas pessoas. Muitas vezes, informações importantes são perdidas ou nunca são gravadas, o que pode levar a falhas nas implantações. Além disso, a falta de uma forma consistente e completa de descrever a implementação inibe a capacidade das pessoas para a visualização e a razão sobre a implementação, reduzindo, assim, a probabilidade de que os problemas não funcionais (tais como desempenho, escalabilidade e backup) sejam pontuados mais cedo.
Em uma abordagem de implementação contínua, este risco é um pouco reduzido pela intenção de implementar regularmente. No entanto, nesta situação, surge um outro risco. E se o seu ambiente de implementação contínua for diferente da produção e não seja possível reutilizar o script? (Um cenário muito provável.) Então, embora você obtenha muitos benefícios por meio do desenvolvimento, o seu script de produção poderia facilmente ter defeitos, especialmente se a implementação for descrita de uma forma ad hoc . Assim, existem dois desafios significativos:
- Como definir os elementos-chave de uma implementação de uma forma que ela possa ser usada para descrever como o aplicativo é implementado em muitos ambientes diferentes;
- Como conseguir, de forma eficiente, que todos os interessados colaborem com o plano de implementação para maximizar a qualidade e reduzir o risco e o tempo envolvidos.
Automatizando o processo de implementação
A implementação hoje é muito mais complicada do que costumava ser, e a maioria dos aplicativos requer configuração de middleware (criação de origens de dados em um servidor de aplicativos ou a configuração de uma fila de mensagens). Esta espécie de configuração automatizada é potencialmente complexa. Em geral, ela requer qualificações especializadas e é uma das razões pelas quais muitas organizações possuem automação mínima para implementar aplicativos.
Afinal, como diz o ditado, se fosse fácil, todo mundo faria.
Administração de artefatos implementáveis
Finalmente, um desafio comum é o controle dos artefatos a serem implantados. Existem duas abordagens óbvias, mas ambas têm falhas:
- Primeiro, é possível colocar cada release em um local designado no sistema de arquivos. Isso é muito simples, no entanto, este método pode ser bastante inseguro, e ele faz pouco para garantir que os arquivos testados sejam os mesmos que você implementa na produção (o que poderia facilmente ter sido modificado ou substituído). Portanto, se você precisa provar que o que testou é o que foi implantado, este método é insatisfatório;
- A segunda opção é usar o seu sistema de controle de origem para gerenciar os arquivos. Isso pode, pelo menos, fornecer o controle que você precisa. No entanto, isso também requer que você forneça acesso à equipe de implementação para cada projeto em cada repositório de controle de fonte, e este aspecto pode se tornar incontrolável mesmo em uma organização de médio porte.
Nenhuma abordagem pode ajudar a responder perguntas sobre as dependências dos aplicativos uns para os outros, para outros componentes e para abrir as bibliotecas de código.
Embora esses desafios sejam significativos, não configurar uma implementação contínua proporciona desafios ainda maiores:
- Leva mais tempo para implementar o software e, portanto, para obter valor a partir dele;
- Os negócios incorrem o aumento do risco quando um novo software é implantado, e isso pode diminuir a produtividade e as vendas, e até mesmo ser prejudicial à sua reputação e marca, bem como à lealdade do cliente;
- Os custos podem aumentar se você deixar de atender aos requisitos não funcionais.
Como ele trabalha com a solução IBM Rational ALM?
Esta seção descreve como três ferramentas de software IBM Rational se combinam para satisfazer os desafios descritos na seção anterior.
- IBM ® Rational® Software Architect
Uma ferramenta de modelagem que pode ser usada para descrever e colaborar em topologias de implementação, bem como gerar scripts de implementação; - IBM ® Rational® Automation Framework
Um mecanismo de automação de implementação que também fornece bibliotecas para tarefas de automação comuns; - IBM ® Rational® Asset Manager
Um repositório controlado por artefatos implementáveis e por topologias de infraestrutura padrão; - IBM ® Rational® Quality Manager
Um ambiente de gerenciamento de teste baseado na web para o planejamento colaborativo de teste, controle de fluxo de trabalho, rastreamento e relatórios de métricas.
Implementando e projetando a implementação automatizada
O primeiro desafio é desenvolver os scripts automatizados de implementação que podem ser usados durante o desenvolvimento e teste, e também em produção. Isso apresenta dois desafios:
- O primeiro é para comunicar como o aplicativo deve ser implantado e como o middleware deve ser configurado;
- O segundo desafio é como fazer com que um script ou um conjunto de scripts ofereça suporte a todos os ambientes, enquanto continua a ter a confiança de que todos os scripts implementarão o aplicativo com êxito.
O Rational Software Architect fornece a capacidade de descrever topologias de implementação em forma gráfica. Isto também ajuda a verificar se a topologia descrita está consistente, se faz sentido e não está faltando nada necessário, portanto, ajuda a reduzir erros dispendiosos no futuro. Depois de serem criados, os desenvolvedores podem colaborar nestas topologias na web, compartilhá-las com as partes interessadas e permitir que as pessoas comentem sobre elas e participem de revisões formais.
O Rational Software Architect ajuda a resolver o segundo desafio, fornecendo a capacidade de definir uma implementação física e lógica de topologias. Isso permite que uma topologia lógica descreva os aspectos importantes de como o aplicativo deve ser implementado em vários ambientes lógicos e, em seguida, impõe quaisquer restrições ao modelo lógico quando ele for mapeado para a infraestrutura real.
Figura 2. Exemplo de topologia lógica de implementação de Java Enterprise Edition (JEE).
Este método reduz os riscos de implementação para a produção, porque é usado o modelo para gerar o script para todos os ambientes, e será testado total e completamente ao longo do desenvolvimento.
Apesar de os scripts para ambientes diferentes poderem variar, o Rational Software Architect ajuda a garantir que os scripts implementem corretamente o aplicativo, porque os scripts são gerados a partir de topologias físicas, e isso garante que as topologias físicas satisfaçam todos os requisitos da topologia lógica. Assim, um script para um novo ambiente pode ser gerado facilmente, com um elevado grau de confiança de que ele funcionará já na primeira vez.
Figura 3. Topologia lógica para a infraestrutura.
Depois de ter definido como o aplicativo será implementado no middleware, é possível analisar o modelo para uma possível automação, combinar os elementos na topologia com relação aos scripts conhecidos para alcançar essa parte da implementação. Isso oferece suporte à implantação e configuração da maioria dos middleware IBM e das alternativas mais comuns. Essa abordagem reduz significativamente o esforço de configuração de uma nova implementação automatizada, além de reduzir os riscos de implementação em ambientes diferentes.
A topologia se torna o artefato-chave. Implementar em um ambiente diferente é uma simples questão de mapeamento de como os componentes de vários aplicativos (EAR, WAR, e os arquivos DLL, definições de fila e assim por diante) devem ser implementados ao novo ambiente e, em seguida, gerar o script para automatizar o trabalho. Portanto, isso exige muito menos esforço manual e as ferramentas reduzem o risco, verificando se você mapeou o aplicativo corretamente.
No contexto de uma implementação contínua, você terá uma topologia lógica para descrever os elementos-chave do aplicativo e, em seguida, uma topologia para cada ambiente muito diferente, que descreve como o aplicativo deve ser implementado para aquele ambiente. Cada uma daquelas topologias será usada para gerar um script de implementação para uso no processo de implantação contínua.
Entregando uma mudança
Após ter gerado um script de implementação, é necessário incorporá-lo ao ambiente de desenvolvimento, de modo que todas as mudanças sejam implementadas continuamente. Isto significa que a equipe de teste economiza muito tempo, porque não precisa configurar ambientes de teste (tempo que muitas vezes é estimado em 20 a 30% do esforço de teste). Mesmo assim, os scripts de implementação são usados e depurados, e o aplicativo é sempre potencialmente implantável para a produção.
A maneira mais fácil de configurar isso é modificar o script de desenvolvimento contínua existente para armazenar os artefatos implementáveis para um repositório de ativos e, em seguida, para solicitar uma implementação com os ativos a partir do repositório. A solicitação de implementação usará o script gerado anteriormente a partir do Rational Software Architect e implementará o aplicativo para um teste-alvo (ou alvos diversos).
Figura 4. Mecanismo de integração contínua solicitando uma implementação contínua.
Em seguida, configure o IBM® Rational® Quality Manager para monitorar os desenvolvimentos de implementação contínua. Em uma implementação bem-sucedida, ele executará o seu software de testes de regressão e desbloqueará todos os testes que já haviam falhado para cada correção que foi entregue em sua versão mais recente. Esta abordagem significa que cada vez que um desenvolvedor faz uma mudança, a implementação contínua também verifica se o aplicativo pode ser implantado e se todos os testes de regressão passam. Portanto, neste ambiente, uma simples mudança on-line poderia deixar a criação pronta para implementar a produção em questão de minutos.
Figura 5. Criações de implementação de monitoramento do Rational Quality Manager.
Uma das questões ou preocupações que as pessoas muitas vezes trazem à tona, ao pensar sobre essa ideia, é a quantidade de hardware que possa ser necessário. No entanto, existe uma solução simples e rentável: a nuvem (consulte Recursos para obter um link para a opção IBM SmartCloud Enterprise). O script de implementação inicia a uma imagem, implanta o aplicativo a ela, executa os testes funcionais e desliga a imagem. Com esta abordagem, as organizações podem lidar com períodos de desenvolvimento quando há muitas mudanças (no final de uma iteração, por exemplo), minimizando, ainda, os custos quando menos mudanças estão sendo feitas e menos hardware é necessário.
As equipes também precisam de um ambiente para teste exploratório regular o desenvolvimento de novos scripts de testes automatizados. Isto pode ser conseguido por meio da configuração de ambientes de rolamento, em que é implantada uma compilação diária e que valha a pena ser mantida por vários dias. Ou é possível permitir que a equipe de teste solicite criações on demand e, em seguida, implemente-as tanto para hardware de teste reservados por meio dos testes de laboratório de gerenciamento de recursos Rational Quality Manager ou para uma nuvem, da mesma forma que os trabalhos de implementação contínua. Esta abordagem pode reduzir os custos de hardware e permitir uma economia de tempo de desenvolvimento devido à configuração de teste reduzida, feedback mais rápido e menores riscos de implantações de produção.
Figura 6. Implementação do Rational Automation Framework para diversos ambientes.
Controlando criações e fazendo a promoção por meio de ambientes para produção
Para muitas organizações, o controle dos ativos implantáveis?(quem mudou o quê, quando e porque, e se é uma mudança aprovada) é muitas vezes crítico. Seja por causa da importância desses aplicativos implementados para o seu negócio, ou seja, por causa da necessidade de demonstrar o cumprimento dos mandatos de outras organizações.
Sendo assim, como a IBM pode ajudar a controlar os artefatos implementáveis?
O ITIL sugere o uso de uma “biblioteca de mídia definitiva” para gerenciar artefatos implementáveis ao longo do processo de desenvolvimento e para disponibilizá-los para implantação em produção. Na abordagem do Rational ALM, defendemos o armazenamento dos arquivos implementáveis como ativos no Rational Asset Manager e usando o ciclo de vida de ativos e revisões de controle. Isto fornece um repositório centralizado de todos os artefatos que foram liberados para a produção, bem como todos os artefatos que poderiam ser liberados. Isso também significa que todos os processos de implementação são guiados a partir do mesmo repositório centralizado, por isso, eles são o mesmo, exceto se os ativos implementados para a produção já tiverem passado por mais revisões e aprovações. E isso significa que os ativos estão bem firmes, portanto, que eles podem chegar a um estado implementável apenas passando pelos vários estágios de aprovação que estão, normalmente, relacionadas às etapas de teste:
- Identificado;
- Em desenvolvimento;
- Passado aos testes de unidade;
- Passado aos testes de sistema;
- Passado ao teste de aceitação do usuário;
- Em estágio;
- Em produção.
Figura 7. Ciclo de vida de revisão de ativo do Rational Asset Manager.
Outro recurso no qual o Rational Asset Manager ajuda é o armazenamento de topologias de implementação padrão para uso por equipes de desenvolvimento. Usando esse recurso, a equipe de operações pode definir configurações “padrão” para as equipes de desenvolvimento. Isso resulta em implantações que estão de acordo com uma configuração padrão de middleware. A consistência torna as implementações mais simples e menos onerosas de serem gerenciadas por todo o ciclo de vida de desenvolvimento de software.
As capturas de tela na Figura 8 mostram como um arquiteto de aplicativo pesquisa as topologias aprovadas no Rational Asset Manager a partir do Rational Software Architect.
Figura 8. Procuras por topologias aprovadas.
Resumo
Este artigo descreveu os três principais desafios da configuração da implementação contínua: projeto, automação e controle. Em seguida, mostrou como é possível usar o software IBM Rational ALM com a nuvem:
- Para aumentar a colaboração no projeto de implementação, que melhora a qualidade e a comunicação entre as diversas partes interessadas;
- Para usar os projetos de implementação a fim de criar scripts de implementação automaticamente para o desenvolvimento, teste e produção;
- Para estender as práticas padrão de integração contínua para fornecer uma prática controlada, madura e contínua de implementação que reduza os custos e o risco de fazer uma mudança na produção, bem como para melhorar a velocidade de implantação de mudanças.
Esperamos que este artigo também consiga transmitir como o uso das ferramentas do Rational, em combinação com a nuvem, torna esta abordagem prática e com custo reduzido para ser configurada. Logo, é possível desfrutar rapidamente das vantagens da técnica para reduzir os testes e o esforço de implementação, melhorar o controle e diminuir os riscos de implementação para a produção.
Recursos
Aprender
- Livro relacionado: Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation, de autoria de Jez Humble and David Farley (Addison-Wesley Signature Series, 2010)
- Referências neste artigo:
- Visite área do software Rational no developerWorks para obter recursos técnicos e boas práticas para os produtos do Rational Software Delivery Platform.
- Fique por dentro dos eventos técnicos e Webcasts do developerWorks com foco em uma variedade de produtos da IBM e tópicos do segmento de mercado de TI.
- Participe de um briefing ao vivo e gratuito do developerWorks para se atualizar rapidamente sobre produtos e ferramentas IBM, bem como tendências do segmento de mercado de TI.
- Acompanhe as Demos on demand do developerWorks, variando de demos de instalação e configuração de produtos para iniciantes a funcionalidades avançadas para desenvolvedores experientes.
- Melhore suas qualificações. Consulte o arquivo Treinamento e certificação do Rational que inclui muitos tipos de cursos em uma ampla variedade de tópicos. É possível realizar alguns deles em qualquer local, a qualquer momento, e muitos dos cursos para iniciantes são gratuitos.
Obter produtos e tecnologias
- Faça download de uma versão de avaliação gratuita do software Rational.
- Avalie outros produtos de software da IBM da forma que melhor lhe convier: faça o download da versão de avaliação, experimente-a on-line, use-a em um ambiente de nuvem ou passe algumas horas no SOA Sandbox aprendendo a implementar Arquitetura Orientada a Serviços de forma eficiente.
Discutir
- Participe dos fóruns do software Rational para fazer perguntas e participar de discussões.
- Classifique ou revise o software Rational. É rápido e fácil. Realmente.
- Compartilhe seu conhecimento e ajude outros a usar o software Rational, escrevendo um artigo para o developerWorks. Descubra quais são as características de um bom artigo do developerWorks e como realizá-lo.
- Siga o software Rational no Facebook, Twitter (@ibmrational) e no YouTubee adicione seus comentários e solicitações.
- Faça e responda perguntas, e aumente seus conhecimentos participando dos fóruns do Rational, cafésée de wikis.
- Obtenha liderança em pensamento social. Participe da comunidade Rational para compartilhar seu conhecimento em software Rational e ficar conectado a seus colegas.
***
Sobre o autor: Steve mora em Twickham, Londres, com sua esposa e filha. Ele trabalha como consultor técnico do IBM Rational desde 2000, no qual é mestre certificado em scrum, com especialidade em entrega ágil de projetos, modelagem e engenharia baseada em padrões. Ele escreveu vários artigos que abrangem os recursos mais recentes do Rational Software Architect 7.5 e 8, bem como artigos que discutem o desenvolvimento de Lean e várias extensões para o Rational Software Architect, Rational RequisitePro e Rational Team Concert. Quando não está trabalhando, ele gosta de passar o tempo com sua família e estudando, ensinando e praticando Tai Chi.