Antes de começar de fato a série que eu havia sugerido no primeiro post, acho que se faz necessário entendermos alguns conceitos. Eu criei este blog com intuíto de criar um ambiente que me sirva como um local onde eu possa, compartilhar meus conhecimentos e que também sirva como base de conhecimento e aprendizado para mim e para outras pessoas que por ventura encontrarem esse blog na internet.
Essa é minha forma de retribuír a comunidade open source e todos aqueles que de alguma forma em algum momento compartilharam seus conhecimentos e tiveram paciência de explicar e trazer a luz aquilo que estava na sombra da minha ignorância.
Na minha cocepção acho que seja de suma importância que todos que estejam lendo esse post entendam de fato o conceito de Devops, seja falando como cultura ou como ferramentas de automação, afinal esse será o focu principal. Dito isso vamos explorar um pouco mais dessa coisa que chamamos de “DEVOPS”.
A Cultura DevOps
A história do DevOps
DevOps (Development + Operations) é um processo de desenvolvimento e entrega de software que enfatiza a comunicação
entre os profissionais de desenvolvimento e operações, promovendo quebra de silos e paradigmas interdepartamentais
tratando as equipes como único time para entregar juntos com excelência.
O termo DevOps tem tomado uma grande importância no mundo todo. Empresas como Amazon, Netflix, Facebook, Walmart, Spotify, entre tantas outras, estão investindo em funcionários, ferramentas e ambientes que sigam as práticas DevOps para melhorar a entrega e a qualidade de seus produtos.
Objetivos de um ambiente com práticas DevOps: * Melhorar a frequência dos deploys; * Automatizar processos; * Diminuir a ocorrência de erros em novas versões; * Curtos períodos de tempo para mudanças e melhorias; * Recuperação rápida em caso de falhas no ambiente; * Padronização nos processos de configuração e servidores;
Manisfesto Ágil
A utilização de métodos ágeis para desenvolvimento como o Lean, Scrum, Extreme Programming (XP), entre outras já é
feita há algumas décadas, todas com o intuito de auxiliar o desenvolvedor a entregar seus projetos o mais rápido possível e
ter uma fácil resposta a mudanças. Porém, somente em 2001 que um grupo de 17 desenvolvedores se reuniram em um resort
de ski em Utah para realmente discutir quais os pontos positivos em diversas metodologias que utilizavam.
A partir dessa discussão, surgiu o Manifesto para Desenvolvimento Ágil de Softwares, que ficou popularmente conhecido como Manifesto Ágil. O Manifesto Ágil afirma que melhores resultados no desenvolvimento de software podem ser obtidos através da valorização de: * Indivíduos e interações, mais que processos e ferramentas; * Software em funcionamento, mais que documentação abrangente; * Negociação com o cliente, mais que negociação de contratos; * Responder a mudanças, mais que seguir um plano.
Agile Conference
O termo DevOps surgiu em 2009, porém a ideia por trás já existia anos antes. Entre 2001 e 2008 diversas discussões
começaram sobre como agilizar as entregas, sendo uma delas a palestra Infraestrutura Ágil de Andrew Schafer durante a
Agile Conference de 2008, onde Andrew conheceu Patrick Debois.
Essa foi a primeira vez que houve uma discussão sobre o assunto. Após a palestra ambos discutiram diversos assuntos relacionados, e posteriormente iriam criar o grupo Agile System Administrator na plataforma Google Docs para difundir o assunto e convidar mais pessoas para colaborar.
Velocity Conference
Em 2009 na Velocity Conference da O’Reilly, John Allspaw e Paul Hammond apresentaram a famosa palestra chamada “10+
Deploys per Day: Dev and Ops Cooperation at Flickr”. Durante a palestra foram discutidos assuntos como: * Interação
entre os desenvolvedores e a equipe de operações; * Como conseguir um aumento dos deploys com ferramentas e mudanças
culturais;
Patrick Debois comentou no twitter que lamentava não estar presente na palestra recebendo do Flickr a seguinte resposta: “Porque não organizar sua própria conferência de Velocity na Bélgica?”
DevOpsDays
Motivado pela palestra dos engenheiros da Flickr, Patrick Debois decidiu criar sua própria conferência na Bélgica que ficou
conhecida como DevOpsDays e foi um sucesso. Para lembrar o dia, foi criada a tag #DevOps no Twitter, que posteriormente
seria usado como o nome da cultura.
Atualidade
Desde então, cada vez mais pessoas estão se tornando adeptas da cultura DevOps. Alguns dos acontecimentos mais recentes
que favoreceram isso foram o surgimento de diversas tecnologias de apoio a essa ideologia. Phoenix Project - O Projeto Fênix
é uma ficção que conta como um gerente de TI salvou o departamento de uma companhia com a cultura DevOps.
Infraestrutura Como Código
Infraestrutura como código (Infrastructure as a code) é uma forma de construir e gerenciar uma infraestrutura da mesma
maneira que ocorre no desenvolvimento de software. É também um processo de gerenciamento e provisionamento de
recursos de infraestruturas, onde todas as atividades e passos para sua criação e configuração são registrados em scripts, utilizados por ferramentas de automação(como Ansible e Puppet) e passam pelo mesmo processo de versionamento que um
software.
Com esse processo torna-se mais fácil a gestão de ambientes, pois garante que novos serviços possuam as mesmas configurações e versões de pacotes. Outro ponto positivo é que o profissional de operação evita se preocupar em configurar cada servidor, e passa a se preocupar em codificar o ambiente.
Objetivos de uma Infraestrutura como Código: * Aproveitar o tempo com melhorias ao invés de tarefas rotineiras e repetitivas; * Recuperar rapidamente o ambiente em caso de falhas ou perda total; * Possibilitar mudanças na infraestrutura de forma automatizada; * Garantir ambientes idênticos, baseados na mesma configuração; * Testar as mudanças antes que entrem em produção.
Desenvolvimento Ágil
Desenvolvimento Ágil de software é um conjunto de metodologias de desenvolvimento de software. Alguns princípios da
metodologia ágil são: * Garantir a satisfação do cliente entregando rapidamente e continuamente; * Rápida adaptação a
mudanças; * Simplicidade; * O Design do software deve prezar pela excelência técnica; * Cooperação constante entre pessoas
que entendem do negócio e desenvolvedores.
Ambientes transitórios
A Virtualização e a Computação em Nuvem(Cloud Computing) também disponibilizam a possibilidade de construir
ambientes transitórios. Ambientes transitórios são ambientes de curta duração que são terminados com uma certa
frequência.