terça-feira, 1 de outubro de 2019

O que é o DevOps

1. O que é o DevOps

    O DevOps é a união de pessoas, processos e tecnologias a fim de proporcionar a entrega contínua do valor para os clientes. DevOps, termo composto por dev (de development, ou desenvolvimento) e ops (operations, ou operações), é uma prática de desenvolvimento de software que unifica operações de desenvolvimento e TI. O significado indica a coordenação e a colaboração entre disciplinas que antes ficavam divididas em silos. Equipes de segurança e de engenharia de qualidade também passam a fazer parte da equipe mais ampla no modelo de DevOps.
    DevOps inclui práticas essenciais como planejamento e acompanhamento, desenvolvimento, build e teste, entrega, monitoramento e operações. Essas práticas, em conjunto com ferramentas e tecnologias de DevOps, ajudam a automatizar o ciclo de vida do aplicativo. Processos que antes eram manuais e lentos para a equipe – como atualizar código ou provisionar um novo ambiente – agora podem ser feitos de forma rápida e contínua usando as práticas e ferramentas de DevOps. Além disso, é mais fácil atender padrões de segurança e confiabilidade porque essas considerações são incluídas no processo.

                         Resultado de imagem para devops

2. História do DevOps

    O movimento de DevOps começou a tomar forma em algum momento entre 2007 e 2008, quando as operações de TI e as comunidades de desenvolvimento de software passaram a expressar o que acreditavam ser um nível fatal de disfuncionalidade no setor.  Elas foram contra o modelo tradicional de desenvolvimento de software, que exigia daqueles que escreviam o código estarem separados em termos organizacionais e funcionais daqueles que implantavam e davam suporte ao código.
Desenvolvedores e profissionais de TI/Ops tinham objetivos separados (e às vezes concorrentes), liderança de departamento separada, indicadores-chave de desempenho separados pelos quais eram avaliados e muitas vezes trabalhavam em andares ou mesmo prédios separados. O resultado consistia em equipes em silos preocupadas apenas com o próprio escopo, longas horas, versões problemáticas e clientes insatisfeitos.Com certeza existe uma maneira melhor, elas disseram. Assim, as duas comunidades uniram-se e começaram a conversar – com pessoas como Patrick Dubois, Gene Kim e John Willis conduzindo a conversa.  O que começou em fóruns on-line e reuniões locais agora é um importante tema no zeitgeist do software.
   “A infraestrutura como código permitiu-nos realizar 10x mais compilações sem incluir uma única pessoa na nossa equipe.”
- Michael Knight, engenheiro de compilação da Atlassian 

3. Objetivo 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.
É fundamental entender as pesquisas recentes que mostram onde estão os grandes benefícios com a implantação da metodologia DevOps, tais como a diminuição dos custos com infraestrutura, velocidade para acelerar o time to market em até 30%, importante redução de falhas de código – que chega a 80%, e, principalmente, aumento de satisfação dos clientes, que, em última instância, são os que pagam a conta, e, uma vez satisfeitos, contratam novos desenvolvimentos.

4. Benefícios do DevOps

Segurança

    Utilizando a infraestrutura e a política como código, pode-se definir e rastrear a conformidade em escala, garantindo a segurança das operações;

Confiabilidade

    Com o monitoramento e registro em log, é possível acompanhar em tempo real o desempenho do software, podendo identificar eventuais erros. Além disso, a integração e a entrega contínua viabilizam automatizar testes das alterações;

Colaboração entre as equipes

    A integração entre as equipes deixa todo o desenvolvimento mais eficiente. Com seus fluxos de atividades combinados e compartilhamento de responsabilidades, a cultura de DevOps reduz erros e economiza tempo de serviço;

Escala

    Com a automação de muitos processos, o gerenciamento de sistemas complexos ou dinâmicos em escala é simplificado, aumentando a eficiência e reduzindo os riscos.

Entrega mais rápidas

    A integração e entrega contínua automatizam o processo de lançamento de software, o que contribui para a disponibilização de funcionalidades e produtos novos para os usuários com mais frequência;

Velocidade

    Inovações mais rápidas e, consequentemente, melhores resultados comerciais. Com o modelo de DevOps, as equipes ganham mais autonomia para lançarem atualizações de forma mais fluida e rápida.


5. Pilares do DevOps

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

5.1. 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 pró-ativas.


6. Conceitos e Princípios

Princípio 1 -  Fluxo Contínuo

    No fluxo de valor de TI, o trabalho normalmente flui de Desenvolvimento para Operações. O primeiro princípio demanda o fluxo rápido e suave do trabalho desde o Desenvolvimento até as Operações para entregar valor aos clientes rapidamente.

Princípio 2  -  Feedbacks Frequentes

    O segundo princípio descreve os mecanismos que permitem feedbacks rápidos da direita para a esquerda em todos os estágios do fluxo de valor. Como exemplo, feedback dos times de operações para implantadores e feedbacks dos analisas de testes para implementadores. 

Princípio  3 -  Aprendizado Organizacional

    Enquanto o Primeiro Caminho aborda o fluxo de trabalho da esquerda para a direita e o Segundo Caminho aborda o feedback rápido e constante recíproco da direita para a esquerda, o Terceiro Caminho foca na criação de uma cultura de aprendizagem e experimentação contínua. Esses são os princípios que permitem a criação constante de conhecimento individual, que é então transformado em conhecimento de equipe e organizacional.

7. Papéis e Responsabilidades

    O DevOps é uma abordagem cultural, que busca aproximar pessoas, automatizar trabalhos repetitivos com práticas e ferramentas e criar um ambiente de robustez e antifragilidade nas organizações. Esta cultura de desenvolvimento e operação tem suas raízes nos princípios Lean, práticas ágeis de desenvolvimento com o Scrum, processos ágeis de desenvolvimento com o XP (Extreme Programming) e melhores práticas de corpos de conhecimento com o ITIL de forma simplificada, podemos definir DevOps como o alinhamento de ferramentas, responsabilidades e processos da equipe de desenvolvimento (Dev), com os da equipe de operações (Ops)", explica Damasceno. Ou seja, os dois times passam a trabalhar em conjunto, com uma melhor comunicação, colaboração e integração entre eles. Essa forma de trabalho garante que as equipes de desenvolvimento apliquem suas qualidades em todas as fases do trabalho, minimizando riscos de situações inesperadas ou mudanças drásticas em projetos, fazendo entregas contínuas.
    Entretanto, DevOps não é apenas um conjunto de ferramentas ou uma metodologia que pode ser aplicada sem fundamentos. Além da necessidade de conhecer novas práticas e do uso intenso de tecnologia para automatizar ao máximo os processos, essa cultura leva o departamento de TI a uma organização completamente diferente. "Adotar essa prática exige uma mudança conceitual e estratégica, que altera o modo de trabalho dos times com a finalidade de alinhar satisfatoriamente as entregas de TI com as necessidades da companhia e dos clientes para criar valor ao negócio. Sem esse movimento cultural combinado com tecnologia e processos de desenvolvimento, o DevOps se torna inutilizável", observa o executivo. 
Ao pensar em Devops, então, pense nos três pilares básicos que ele tem (pessoas, práticas e produtos) nesta ordem particular. Não introduza ferramentas sem estabelecer os pilares das práticas. E, o mais importante, não introduza práticas sem trabalhar os aspectos sociais necessários com o seu time.

8. Aplicação em Empresas

    A implantação de DevOps em empresas é conduzida por fatores como: uso de processo e metodologias ágeis; ampla disponibilidade de infraestrutura cloud e virtualizada por provedores internos e externos; demanda crescente na taxa de produção de aplicativos e unidades de negócios; e uso crescente da automação de data center e ferramentas de gerenciamento de configuração.
Como se pode perceber este é um caminho sem volta, onde as empresas que já possuem estes elementos saem na frente e as que ainda estão no começo de suas infraestruturas de TI, tem um longo caminho a percorrer, o importante é não ficar parado. Além de que a adoção de DevOps auxilia tanto empresas, quanto profissionais de TI com seus resultados e uma experiência de desenvolvimento compensadora. De fato, as empresas digitais de crescimento exponencial são “campeãs” de DevOps. Veja abaixo grandes empresas que adotaram o DevOps como método de trabalho, para inovar ou melhorar a qualidade de seus serviços e produtos:

Walmart

    O gigante dos supermercados também usa DevOps, principalmente para inovar batendo de frente com a Amazon em seu principal ambiente: a internet. O Walmart quer desbancar a concorrente e pretende fazer isso com organização e boas equipes de desenvolvimento.
Com mais de cem mil núcleos OpenStack, que visa formar uma nuvem privada da empresa, e estruturas para criação de aplicativos e serviços focados em escrita lógica e reutilizável, o Walmart conta com código aberto e gosta de compartilhar infraestruturas para diminuir o tempo de desenvolvimento, do zero, dentro da empresa.

Facebook

    A rede social mais famosa do mundo é bastante conhecida por seu número de atualizações e desenvolvimento de novos algoritmos que buscam a melhoria contínua da plataforma. Para entregar tudo o que temos em mãos hoje, o Facebook implementou DevOps, basicamente, desde o começo da sua existência. Contudo, é hoje que vemos a importância dessa metodologia dentro da empresa, que é uma das mais lucrativas do mundo, e acelera mudanças (de back-end e de interação com os usuários) a cada dia que passa.

9. Opinião
Com relação a opinião dos autores do trabalho, a metodologia DevOps pode ser dentre as diversas metodologias existentes atualmente a mais difícil de ser implantada em uma empresa, porém, ao nosso ponto de vista é a melhor metodologia ágil, pois ela automatiza os processos entre as equipes de software e as equipes de TI para que possam criar, testar e liberar softwares de maneira mais rápida e confiável, consequentemente realizando liberações mais frequentes do software, já que o número de compilações aumenta consideravelmente, dando vantagens a equipe em termos de tempo para o lançamento do produto ao mercado e com atualizações diárias.

10. Conclusões
O objetivo deste trabalho foi realizar um estudo sobre a metodologia ágil DevOps que, de acordo com alguns estudos, tem sido uma grande referência como metodologia de desenvolvimento de software, economizando tempo e dinheiro, trazendo maiores e melhores resultados, e, principalmente, aumento de satisfação dos clientes, que, em última instância, são os que pagam a conta, e, uma vez satisfeitos, contratam novos desenvolvimentos.

Nenhum comentário:

Postar um comentário