O que é DevOps

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.

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 cultura DevOps 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 tenham 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 atenderem as expectativas do negócio e ainda sim 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 haja estratégias para gestão de incidentes bem definidas, políticas de roll back, backups e ferramentas de monitoração proativas.

Você gostou deste artigo?

Veja outros que temos:

Fique por dentro das novidades:

Conheça nosso blog, com diversos artigos técnicos

Fique por dentro das novidades relacionadas aos softwares open source usado em nossas soluções.
Imagem de uma pessoa na frente do computador

Quer entrar para o mundo Devops?

Faça nossos cursos starter, todos com certificado de conclusão!

Somos especialistas em implementar soluções DevOps 

Desde a definição de arquitetura, planejamento de capacidade até o mentoring da equipe.
plugins premium WordPress
Telegram logo
Whatsapp Logo

Temos um presente para você!

Você ganhou totalmente gratuito um curso da categoria Starter da 4Linux! São 9 opções de cursos para você escolher!

Cursos com 20h de conteúdo prático e certificado de conclusão para você dar uma upgrade na sua carreira.

Preencha o formulário abaixo e você receberá em até 24hs o email com os dados de acesso ao conteúdo: