Na Ciência da Computação o DevOps (contração de development e operations), é uma cultura na engenharia de software que aproxima os desenvolvedores de software (Dev) e os operadores do software/administradores do sistema (Ops), com característica principal de melhorar a comunicação dos dois papéis dentro de um projeto e defender a automação e monitoramento em todas as fases da construção de um software (desde a integração, teste, liberação para implantação, ao gerenciamento de infraestrutura), auxiliam empresas no gerenciamento de lançamento de novas versões, padronizando ambientes em ciclos de desenvolvimento menores, frequência de implantação aumentada, liberações mais seguras, em alinhamento próximo com os objetivos de negócio. Sobre o layout, o blog tem tudo que você precisa para criar lindos posts que chamam a atenção do leitor. Confira nossos recursos de design.
Empresas que liberam novas versões de software frequentemente podem precisar das considerações ou orientações de um SysAdmin (Administrador do sistema). O Flickr desenvolveu a cultura de DevOps para suprir uma necessidade do negócio de realizar dez implantações por dia, este ciclo diário de implantações será muito maior em organizações que produzem aplicações multi-foco ou multi-funções. É conhecido como implantação contínua ou entrega contínua[9]. Grupos de trabalho, associações de profissionais e blogs estão tratando do tema desde 2009.
A cultura DevOps auxilia empresas no gerenciamento de lançamento de novas versões, estimular a comunicação entre os dois papéis. Eventos podem ser acompanhados com maior facilidade, assim como o controle de processos documentados e emissão de relatórios granulares. Empresas com problemas no processo de liberação/implantação de novas versões, normalmente possuem automação, mas querem maior flexibilidade para gerenciar e conduzir esse processo - sem precisar editar tudo na linha de comando. Idealmente, essa automação deve ser disparada por recursos não operacionais, em ambientes específicos que não estejam "em produção". O desenvolvedor ganha maior controle sobre o ambiente, e o administrador do sistema maior entendimento sobre os aplicativos.
Processos simples se tornam claramente articuláveis, através do DevOps. O objetivo é automatizar a maior quantidade possível de processos operacionais.
Integrações DevOps visam a entrega de produtos, testes de qualidade, desenvolvimento de características e releases de manutenção, de modo a incrementar a confiança e segurança, desenvolvimento rápido e ciclos de desenvolvimento. Muitas das ideias (e pessoas) envolvidas com a cultura DevOps vieram dos movimentos de Gerenciamento de sistemas empresariais e Desenvolvimento ágil de software.
Para os que ainda se intrigam com o significado de DevOps, aí vai uma dica interessante de leitura: “The Devops Handbook“, elaborado por Gene Kim, Jez Humble, Patrick Debois e John Willis. Este livro conta com estudos de caso e recomendações para impulsionar substancialmente a produtividade no dia-a-dia.
Cadeia de Ferramentas DevOps
Como o DevOps é destinado a ser um modo de trabalho inter-funcional, em vez de uma única ferramenta DevOps, existem conjuntos (ou "cadeia de ferramentas") de várias ferramentas. Espera-se que essas ferramentas DevOps se encaixem em uma ou mais destas categorias citadas abaixo, refletidas de aspectos-chave do processo de desenvolvimento e entrega de sistemas:
Codificação - desenvolvimento e revisão de código, ferramentas de gerenciamento de código-fonte, fusão (merge) de código
Compilação - ferramentas de integração contínua, estado de compilação
Teste - ferramentas de teste contínuo que fornecem feedback sobre riscos do negócio
Pacote - repositório de artefato, etapa de pré-implantação de aplicação
Liberação - gerenciamento de mudança, aprovações de liberação, automação de liberação
Configuração - configuração e gerenciamento de infraestrutura, ferramentas de Infraestrutura como Código
Monitoramento - monitoramento de desempenho de aplicações, experiência do usuário final
Algumas categorias são mais essenciais em uma cadeia de ferramentas DevOps que outras, especialmente a integração contínua (como, por exemplo, o Jenkins) e infraestrutura como código (como, por exemplo, o Puppet).
Impacto nos lançamentos de aplicações
Em muitas empresas, eventos de lançamento de aplicações são atividades muito estressantes e de alto risco, que envolvem várias equipes. Em uma organização DevOps, o lançamento de aplicações é de baixo risco pelas seguintes razões:
Este diagrama mostra as diferenças, em termos de frequência de lançamentos e escala de impacto, entre as metodologias ágeis e as iterativas tradicionais.
Escopo de mudança reduzido
Adoção do desenvolvimento iterativo ou ágil, em contraste com o tradicional modelo em cascata. Isto significa que cada lançamento possui menos mudanças, mas ocorrem com maior frequência. O que ocorre, então, é a criação de uma suave taxa de mudança progressiva na aplicação vs. o grande impacto causado por implantações raras - cada uma contendo um grande número de mudanças.
Coordenação de lançamentos crescente
Uso de um coordenador de lançamentos forte para criar a ponte sobre o abismo comunicacional e de conhecimento entre desenvolvedores e operadores; emprego de ferramentas de colaboração tais como planilhas, teleconferências, mensagens instantâneas, portais corporativos e wikis, para garantir um entendimento minucioso da mudança e cooperação total dos envolvidos.
Automação
Automação completa de implantação garante replicabilidade das tarefas e reduz os erros.
Comments