Descubra como a cultura DevOps pode otimizar o desenvolvimento de softwares
DevOps é um termo criado para descrever um conjunto de práticas para integração entre as equipes de desenvolvimento de softwares, operações (infraestrutura ou sysadmin) e de apoio envolvidas (como controle de qualidade) e a adoção de processos automatizados para produção rápida e segura de aplicações e serviços.
O conceito propõe novos pensamentos sobre o trabalho para a valorização da diversidade de atividades e profissionais envolvidos e atitudes colaborativas. É um processo que torna possível o desenvolvimento ágil de aplicações em um modelo de gestão de infraestrutura definido sob regras rígidas e burocráticas.
O Desafio
Tradicionalmente Desenvolvimento e Operações são setores diferentes nas empresas e com motivações distintas. O setor de Desenvolvimento já evoluiu com adoção de metodologias ágeis e estão mais alinhadas ao negócio. O setor já consegue entregas rápidas e constantes para atender a expectativa dos clientes por novos recursos e assim valorizar o produto da empresa. A área de Operações, por sua vez, deseja o mínimo de alterações possíveis no ambiente de produção, pois podem gerar um novo ponto de instabilidade o que desvalorizará o produto da empresa. Assim há interesses contraditórios. Um setor quer evoluir e o outro garantir.
A proposta DevOps
A cultura Devops procura atender esses dois interesses e sustenta-se nos pilares:
- Integração Contínua: fácil transferência de conhecimento e experiências entre as áreas de Desenvolvimento, Operações e Apoio.
- Implantação Contínua: liberação rápida e continua de novas versões de software ou serviços
- Feedback contínuo: feedbacks frequentes das equipes envolvidas em todas as fases do ciclo de vida do software ou serviço.
Para alcançar esses objetivos a prática DevOps recomenda ações como:
- Pessoas integradas: Apoiar e prover pensamentos que integrem as pessoas, que façam com que partilhem suas histórias e se desenvolva a empatia entre elas para um trabalho conjunto eficaz e duradouro.
- Foco no projeto: Crie uma atmosfera livre de culpa, com o objetivo em comum: o projeto. Profissionais devem defender o projeto e não suas áreas de atuação. É preciso romper tradições e fazer com que as equipes tenha um comportamento colaborativo, construtivo e de respeito mútuo.
- Reuniões conjuntas: em vez de promover discussões isoladas com a equipe de Desenvolvimento, Operações ou Apoio, sempre integre pelo menos um profissional de cada área nas discussões dos setores para que tenham entendimento dos objetivos a serem alcançados, recursos e demanda previstos, requisitos necessários, problemas já enfrentados e riscos envolvidos sob uma mesma ótica.
- Negócio Just-in-Time: Fornecimento de aplicações e serviços que promovam um desenvolvimento do negócio com qualidade e otimização do uso de recursos humano, tempo, tecnológicos e/ou financeiros.
- Infraestrutura para negócio: garantir continuamente a infraestrutura com foco no negócio. Implantar mecanismos que permitam a área de Operações atender as expectativas do negócio e ainda assim manter sua confiabilidade.
- Desenvolvimento Ágil: o desenvolvimento do software deve seguir uma das metodologias ágeis para entregas rápidas e contínuas. ( SCRUM, XP, …)
- Ambientes de Desenvolvimento, Homologação e Produção: que haja pelo menos esses três ambientes e que sejam idênticos para evitar que uma versão de software seja testada em um ambiente e executada em produção em outro e assim surjam problemas não previstos.
- Padronização nas configurações: para garantia de que os ambientes sejam idênticos e contenham apenas mudanças homologadas, é preciso implementar um gerenciamento de configuração para que qualquer mudança inserida manualmente nos servidores e não através de uma gerência de configurações seja automaticamente desfeita.
- Provisionamento dinâmico dos ambientes: os ambientes devem ser criados sempre que necessários em processos automatizados para garantia de que estejam sempre disponíveis. A equipe de desenvolvimento deve receber a infraestrutura necessária para seu trabalho sem necessidade de intervenção da equipe de Operações. Ferramentas de automação deverão criar servidores, instalar serviços, configurá-los e testá-los. Novos servidores poderão ser criados temporariamente para ações específicas ou para escalonamento da solução.
- Infraestrutura como um código: as configurações e scripts de execução para instalação de serviços devem ser versionados no mesmo repositório e da mesma forma que o código da aplicação para que possam ser disponibilizados, auditados e evoluídos juntos.
- Liberdade para Deploy: a equipe de Desenvolvimento deve ser autônoma para realização de deploy nos ambientes até Produção sem necessidade de processos burocráticos e interferência da área de operações.
- Integração contínua: Ferramentas devem orquestrar todo o processo envolvido na entrega de nova versão da aplicação que inclui a criação dos ambientes, caso necessário, deploys dos códigos juntamente as configurações da infra, testes automatizados, possibilidade de reversão e auditoria.
- Gestão de incidentes: Para que a infraestrutura seja ágil é determinante que hajam estratégias para gestão de incidentes bem definidas: políticas de roll back, backups e ferramentas de monitoração pró-ativas.
Infraestrutura Ágil é termo usado para descrever parte do processo determinante e recomendado pela cultura DevOps que envolve para criação e configuração automática de servidores. Treinamento e Projetos de Consultoria na 4linux.
About author
Você pode gostar também
Automatize processos com Rundeck: Guia completo para DevOps
O Rundeck é uma aplicação java de código aberto que automatiza processos e rotinas nos mais variados ambientes, gerenciado via interface gráfica fica extremamente simples de verificar status de execuções,
Da Infraestrutura Microsoft ao Mundo Open Source: A Jornada DevOps
Um marco importante na vida de um profissional de infraestrutura de TI é quando ele reconhece que as áreas de desenvolvimento e infraestrutura devem andar em conjunto como um só.
Descubra como o Ansible e o IaC podem revolucionar sua infraestrutura de TI
O termo IaC – Infrastructure as Code – dá nome aos processos de provisionamento de infraestrutura tecnológica (principalmente em Cloud Computing) através de códigos, viabilizando o versionamento e a colaboração