O que é DevOps?

Com a necessidade da cultura de DevOps para melhorar processos de aumento de produtividade nas organizações vieram várias ferramentas como o Docker que facilitam a entrada do DevOps. O termo DevOps foi originalmente descrito em Ghent, na Bélgica, em 2009 durante a conferência DevOpsdays durante a exposição de desenvolvimento de software ágil com Kanban.

 

 

DevOps é a união de duas palavras de origem inglesa: Development e Operations  (YOUR DICITIONARY). Refere-se muito a união de duas grandes equipes de desenvolvimento e de operações que são muito comuns em organizações. E a união da palavra DevOps reflete no seu objetivo de integrar e encorajar a colaboração entre estas equipes.

 

 

Sua característica primária é o aumento de colaboração entre times de desenvolvimento e de operação. É compartilhar responsabilidades entre os times e evitar skill gaps entre equipes ou a geração de silos. (WILSENACH, 2015)

 

DevOps é uma maneira de agir culturalmente e de pensar na forma como trabalhamos. Não é apenas uma outra metodologia de desenvolvimento de software como Agile ou XP, é mais macro, mais amplo, e objetiva influenciar na maneira cultural e aspectos interpessoais dentro de uma indústria. Não se limitando a uma startup pequena ou pequenas empresas.

 

 

Mas não bastaria apenas a colaboração entre equipes de desenvolvimento de operações para ter agilidade na entrega de aplicações em produção. A automação é ponto crucial para que movimentações de DevOps estejam alinhadas. A automação está presente em tarefas como testes, transição de serviços, deploy de servidores, serviços e aplicações. A automação mantém o compliance de infraestrutura, diminui chances de erro humano, deixam as pessoas livres de tarefas repetitivas e deixa o ambiente sempre atualizado e de acordo com o que foi documentado e planejado.

 

 

 

CI – CONTINUOUS INTEGRATION

 

Continuous Integration, ou CI, é uma prática, ou processo, de desenvolvimento de software que requer que o desenvolvedor atualize o código ou mantenha as versões de desenvolvimento em um repositório várias vezes ao dia. Cada envio de código desenvolvido a plataforma de CI tem a construção, ou reconstrução, automática. Como é versionado, o time de desenvolvimento pode facilmente identificar rapidamente as falhas de código durante o processo de desenvolvimento.

 

Seu funcionamento consiste, como demonstrado na figura 1, em: Os desenvolvedores escrevem o código e um ambiente de trabalho pessoal e quando é finalizado um processo ou módulo da aplicação esta parte do código é feito o commit no repositório; Quando o commit for concluído o servidor CI, que monitora alterações no repositório constantemente, constrói a plataforma da aplicação a ser executada e faz alguns testes de integração; Após, o servidor CI executa o deploy dos artefatos para teste; Se concluído com êxito, é atribuído uma tag, ou label, para a versão do código que acabou de ser construído; O servidor então informa ao time de desenvolvimento que a aplicação foi construída com sucesso ou também as falhas que poderiam ocorrer. Este processo se repete em todo novo commit de código.  (FOWLER)

 

 

Figura 1 – Processo de Continuous Integration.- Fonte: (PECANAC, 2016)

 

Geralmente o processo de CI dentro de uma organização já é bem conhecida por parte dos desenvolvedores de fábrica de software. Este mesmo conceito, via DevOps, é o objetivo no time de operações.

 

 

CDt e CD – CONTINUOUS DEPLOYMENT E DELIVERY

 

Continuous Deployment, ou CDt, e ainda implementação contínua, está bem próximo ao fluxo de CI, quase como uma extensão do CI, e refere-se a versão, ou release, da aplicação que passou por todo o processo de validação e testes automáticos em CI. De acordo com Fowler, adotando processos de CI/CD nós não apenas reduzimos os riscos e identificamos bugs rapidamente, mas também obtêm o código operando em produção de forma muito mais rápida e com agilidade. Com menos riscos em releases de software, alcançamos com mais rapidez os requisitos de negócio e necessidades dos usuários. Isto permite a colaboração entre diferentes equipes de desenvolvimento e operação trazendo uma mudança real para a organização e uma vantagem competitiva de negócios.

 

 

Figura 2 – Continuous Deployment – Fonte: (PECANAC, 2016)

 

O processo de Continuous Deployment, figura 2, difere do Continuous Delivery, figura 3, por não possuir uma etapa necessária de testes manuais, pois as rotinas de testes são integradas desde o início do processo de desenvolvimento e continuam em todas as fases de release, ou versões de código da aplicação.

 

 

Figura 3 – Continuous Delivery – Fonte: (PECANAC, 2016)

 

Na prática, para que o CD possa ocorrer naturalmente é necessário que toda equipe tenha uma infraestrutura automatizada e instrumentada para todas as etapas desde o desenvolvimento até a produção da aplicação possam atender os critérios de release e em tempo real.

 

Podemos considerar que a abordagem do conceito de CD é bem recente, com popularização a partir do ano de 2009 (FOWLER). E levam como vantagens a velocidade de testes, já que não é manual, no pipeline deploy e na quantidade de deploys diários com a automação. Além de permitir que a equipe se concentre no foco do negócio pois evitam-se tarefas operacionais repetitivas através da automação, integram equipes de desenvolvimento e operação num mesmo pipeline e melhora produtividade geral da empresa.

ALMEIDA, J. M. B. D. Container, o novo passo para a virtualização. IBM Academy od Technology Affiliated, 2015. Disponivel em: <https://www.ibm.com/developerworks/community/blogs/tlcbr/entry/mp234?lang=en>. Acesso em: maio 2018.

ELLINGWOOD, J. How To Set Up Continuous Integration Pipelines in Jenkins on Ubuntu 16.04, 2017. Disponivel em: <https://www.digitalocean.com/community/tutorials/how-to-set-up-continuous-integration-pipelines-in-jenkins-on-ubuntu-16-04>. Acesso em: junho 2018.

FOWLER, M. Continuous Integration. Throught Works. Disponivel em: <https://www.thoughtworks.com/pt/continuous-integration>. Acesso em: junho 2018.

GUERRA, G. Conceitos de Cloud Computing. [S.l.]: FromSoft, 2017.

MICROSOFT INC. Azure Documentatio. Portal Azure, janeiro 2018. Disponivel em: <https://azure.microsoft.com/pt-br/>. Acesso em: maio 2018.

MIRONOV, O. DevOps Pipeline with Docker, Helsíquia, Finlândia, v. 1, n. 1, p. 55, Abril 2018.

NIST – NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY. Special Publication 800-145 National Institute of Standards and Technology. NIST – publications, setembro 2011. Disponivel em: <http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-145.pdf>. Acesso em: setembro 2017.

PECANAC, V. What is Continuous Integration and Why Do You Need It? Code Maze, 3 fevereiro 2016. Disponivel em: <https://code-maze.com/what-is-continuous-integration/>. Acesso em: junho 2018.

RANCHER LABS. Enterprise Kubernetes Made Easy. Rancher.com. Disponivel em: <https://rancher.com/what-is-rancher/overview/>. Acesso em: junho 2018.

THOLET, B. P. Developer Works. Learn about hypervisors, system virtualization, and how it works in a cloud environment, 23 setembro 2011. Disponivel em: <https://www.ibm.com/developerworks/cloud/library/cl-hypervisorcompare/index.html>. Acesso em: maio 2018.

VELTE, A. T.; TOBY, J. V.; ROBERT. Cloud Computing, A Practical Approach. [S.l.]: McGraw Hill Professional, 2009.

WILSENACH, R. MartinFowler. DevOpsCulture, 9 julho 2015. Disponivel em: <https://martinfowler.com/bliki/DevOpsCulture.html>. Acesso em: junho 2018.

WOGELS, W. Amazon Web Services Summit. São Paulo: [s.n.]. 2012.

YOUR DICITIONARY. DevOps – Computer Definition. Your Dicitionary. Disponivel em: <http://www.yourdictionary.com/devops>. Acesso em: junho 2018.

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn

fale com o especialista

Entre em contato com um especialista Tivre

talk to the expert

Get in touch with a Tivre specialist