Neste artigo, serão apresentados os conceitos do movimento DevOps, bem como ferramentas identificadas como colaborativas com a cultura, focando no desenvolvimento de aplicações na plataforma Java.
Entregar software em ambientes de produção é um processo que tem se tornado cada vez mais complicado nas empresas de Tecnologia da Informação (TI).
Ciclos longos de testes e divisões entre as equipes de desenvolvimento e de operações são alguns dos fatores que contribuem para o aumento da complexidade das entregas do software.
A equipe de desenvolvimento é composta normalmente por profissionais que desenvolvem as aplicações, como programadores, analistas de sistema e arquitetos de software, dentre outros, que focam seu trabalho no desenvolvimento de software com base nos requisitos que o analista de negócios mapeou junto ao cliente.
Com os papéis relacionados à manutenção, a equipe de operações é responsável por manter os sistemas funcionando, e é composta geralmente pelos administradores de sistema (sysadmins). São eles que fazem os deploys e os rollbacks das aplicações da equipe de desenvolvimento, enquanto que a equipe de operações mantém o ambiente de produção o mais estável possível.
Por muito tempo, as grandes empresas tiveram a comodidade de colocar em produção poucas atualizações de seus principais softwares após o lançamento. Ainda é comum que sistemas de alta importância recebam menos que uma ou duas grandes atualizações. Porém, a pressão sobre TI para entregar mais inovação, com intervalos de tempo cada vez menores, para o negócio, vem mudando esse cenário.
Essa pressão sobre TI é gerada pela rapidez com que o negócio do produto muda. Cada vez que o cliente necessita de uma alteração no software para atender novas demandas do mercado, os desenvolvedores iniciam um ciclo que tem por objetivo modificar e entregar o software novamente ao cliente.
É nesse contexto que surge essa pressão, pois se este processo que envolve o novo pedido até a entrega das mudanças levar muito tempo, novas demandas surgirão, causando acúmulo e estresse.
Gerentes de TI já percebem essa tensão entre as equipes encarregadas de mudar o negócio (desenvolvimento) e aquelas responsáveis por mantê-lo funcionando (operações), e isso pode ser verificado na maioria das organizações, que sofrem deste mesmo problema. A equipe de desenvolvimento quer colocar suas aplicações em funcionamento o mais rápido possível, no entanto, os sysadmins querem ter certeza de que a aplicação está estável o suficiente para entrar em produção sem gerar incidentes.
Mediante este cenário, surgiu o DevOps (Development + Operations), movimento cultural e profissional que está buscando quebrar essas barreiras. Com o foco em automação, colaboração, compartilhamento de ferramentas e de conhecimento, tem sido apontado por muitos como a maneira das duas áreas passarem a trabalhar juntas, de forma eficiente e harmônica, para beneficiar o negócio e trazer maior produtividade. Faz parte do trabalho de desenvolvimento e operações estarem alinhados e colaborarem um com o outro.
A adoção do movimento DevOps está sendo impulsionada por fatores como o desenvolvimento por meio de metodologias ágeis, aumento da velocidade das mudanças e a virtualização da infraestrutura.
Empresas inovadoras, como Facebook e Google (que possuem produtos em constante desenvolvimento, e por resultado disso, com constantes incrementos), entregam múltiplos releases de seus sistemas em um único dia, com um elevado grau de qualidade.
Empresas tradicionais, por outro lado, que não possuem uma infraestrutura ágil adequada para fazer o processo de forma contínua, utilizam de métodos manuais como, por exemplo, deploy uma vez por semana e com isso não dão vazão às demandas. Para sair desse cenário, as equipes de desenvolvimento e de operações precisam oferecer os meios para fazer o negócio fluir.
Essa mudança de cenário, permitindo que a empresa atenda melhor as demandas, pode ser possibilitada por meio de uma série de ferramentas para automação de projetos, integração e entrega contínua, controle de versão e qualidade de código, sugeridas pela cultura DevOps, criando assim um processo mais unificado e ágil.
Movimento DevOps
Devido à natureza das atividades do processo de desenvolvimento de software e às preocupações ligadas a essas atividades, muitos departamentos de TI possuem uma divisão clara de responsabilidades entre a equipe de desenvolvimento e a equipe de operações. Enquanto o desenvolvimento é responsável p ...