O desenvolvimento de software de qualidade vem se tornando, cada vez mais, fator determinante para o sucesso e a sobrevivência de empresas e setores onde o uso de sistemas computacionais é vital para a manutenção do negócio e de suas atividades. Nesses sistemas, as consequências de uma falha de software podem gerar indisponibilidade de funcionalidades críticas e, assim, representar prejuízos incalculáveis tanto ao provedor quanto ao usuário cliente do sistema.
No entanto, desenvolver software de qualidade é um desafio constante. Pressões por reduções de custos e prazos geralmente são os maiores ofensores da qualidade. No ciclo de desenvolvimento de software, a análise da aderência e do atendimento aos requisitos funcionais e não funcionais como desempenho, capacidade e segurança, especificados durante o projeto do sistema, nem sempre é eficaz. Assim, nos últimos anos, métodos mais eficientes de desenvolver, analisar e testar o que está sendo desenvolvido foram alvos de investimentos e pesquisas que resultaram em processos tecnologicamente novos ou substancialmente melhorados.
Nesse contexto, os valores dos processos de desenvolvimento ágeis de software, tais como entregas mais rápidas, parciais e contínuas de novas funcionalidades desenvolvidas e testadas, começaram a ganhar força no mundo corporativo, aproximando as áreas de desenvolvimento e negócio. Por outro lado, a celeridade na entrega de novas versões de sistemas aumentou ainda mais a necessidade de sinergia e colaboração entre as equipes de desenvolvimento e de operações de tecnologia, sendo esta última a responsável por planejar e manter a infraestrutura que hospeda os sistemas, gerenciar as versões e configurações, providenciar novas instalações etc. E, a partir dessa maior integração entre Developers (Dev) e Operations (Ops) surge o conceito de “DevOps”.
Podendo ser fonte de várias discussões, artigos científicos e, até mesmo, das mais variadas definições, na prática, DevOps pode ser considerado como uma prática que visa aumentar a eficiência dos processos ágeis de desenvolvimento e a qualidade do software produzido, através do melhor alinhamento entre os times de desenvolvimento de software e operações de TI em relação a processos, responsabilidades e ferramentas. Dessa forma, DevOps cria uma linha de produção para o ciclo de desenvolvimento de software, aumentando a governança sobre os artefatos produzidos e melhorando a gestão do risco em relação a atrasos em cronogramas e desvios de custos. Através da prática de DevOps, a taxa de retorno sobre o investimento no desenvolvimento de software tende a ser mais atrativa.
Entretanto, a implementação corporativa de DevOps não é uma tarefa simples e rápida e o caminho a ser percorrido é permeado de obstáculos e desafios. Em suma, a prática de DevOps impacta todo o ciclo de entrega de projetos de software da empresa. É necessário, inclusive, mudanças culturais dentro do ambiente de TI que, mandatoriamente deve passar a ser colaborativo, isto é, as equipes de desenvolvimento, QA (Quality Assurance) e operações/infraestrutura devem trabalhar juntas e alinhadas com o mesmo objetivo, desde a concepção da ideia até a entrega do produto final. No geral, os papéis dos times de desenvolvimento e de operações são antagônicos. Enquanto desenvolvedores anseiam por implantar sistematicamente novas funcionalidades implementadas, o time de operações precisa zelar pela estabilidade e disponibilidade dos sistemas nos ambientes, muitas vezes solicitando planejamentos detalhados para quaisquer intervenções nesses ambientes. E ambos estão corretos: realmente é necessário que as entregas sejam implantadas, mas é igualmente necessário que essas entregas tenham um padrão de qualidade que mitigue riscos de indisponibilidades.
O processo de desenvolvimento deve ser ágil, mas, ao mesmo tempo, deve contemplar esse alinhamento entre as equipes e garantir fluidez e eficiência na comunicação entre os times durante todo o ciclo de desenvolvimento. Em paralelo, a metodologia de testes deve ser melhorada continuamente, com foco no aumento da cobertura e ampliação dos cenários que representam os casos de teste, empregando o máximo de automação possível na execução das validações. Para suportar esse mecanismo, a infraestrutura dos ambientes não produção deve ser funcional, estável, escalável e de rápido provisionamento, além de possuir baixo custo. Por fim, as ferramentas de TI que apoiarão as execuções das tarefas de cada equipe devem ser cuidadosamente selecionadas de acordo com as particularidades e maturidade de cada time.
O caminho para o desenvolvimento da prática de DevOps, obrigatoriamente, passa também pelo estabelecimento de rotinas de integração contínua de código (Continuous Integration) e de entrega contínua (Continuous Delivery), cujo objetivo é verificar, o mais cedo possível, se alterações ou novas funcionalidades não criaram novos defeitos no projeto já existente. Essas verificações devem ser realizadas, preferencialmente, de forma automatizada, a cada alteração substancial de código. Assim, problemas no desenvolvimento são detectados rapidamente, evitando retrabalhos.
São esses alguns dos principais pontos que tornam a prática de DevOps tão desafiadora, mas ao mesmo tempo tão importante para empresas engajadas com evoluções tecnológicas. Seja a partir da maior frequência de implantações de novas versões, menor prazo para atendimento ao mercado, melhora na qualidade do software através de um menor índice de falhas, o objetivo do DevOps é maximizar a satisfação dos clientes.
Considerando essa realidade, a BRITech, com sua filosofia de disponibilizar ao mercado financeiro soluções de software de missão crítica, com desempenho, escalabilidade e alta qualidade, investe continuamente nas mais modernas tecnologias disponíveis no mercado. Como tal, a prática de DevOps na BRITech já vem sendo implementada experimentalmente em projetos pilotos e, futuramente, será expandida para todos projetos, garantindo ainda mais satisfação de seus clientes.