Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

7 - DevOps
DevOps é a sigla dada à combinação de Desenvolvimento (development) e Operações (operations). Refere-se a uma abordagem colaborativa, para fazer com que a equipe de desenvolvimento de aplicativos e a equipe de operações de TI de uma organização trabalhem perfeitamente com uma melhor comunicação.
Essa é uma filosofia que incentiva a adoção de desenvolvimento de software iterativo, automação e implantação e manutenção de infraestrutura programável.
O DevOps enfatiza a construção de confiança e uma melhor ligação entre desenvolvedores e administradores de sistema. Isso ajuda a organização a alinhar os projetos tecnológicos aos requisitos do negócio. As mudanças implementadas, geralmente, são pequenas e reversíveis, que toda a equipe começa a compreender.
O DevOps é visualizado como um loop infinito que compreende as etapas: planejar, codificar, construir, testar, liberar, implantar, operar, monitorar, voltar ao plano e assim por diante.
Reflexão
Se você trabalha na área de TI, seja infraestrutura ou desenvolvimento, ou caso pretenda ingressar nesta área, certamente já se deparou ou se deparará com uma história como esta que vou contar.
Antes de chegar aos usuários, um produto de software passa por vários estágios, ou seja, o desenvolvedor escreve o código, o controle de qualidade testa e, em seguida, o administrador do sistema carrega o aplicativo no servidor de produção (servidor principal, a partir do qual todos irão acessar o sistema).
O desenvolvedor instala em sua máquina tudo o que é necessário: a linguagem de programação na qual será feito o desenvolvimento, por exemplo, PHP 7.0, um banco de dados MySQL 5.7 e um servidor web, Apache. Não se sabe qual sistema operacional e quais versões de bibliotecas e dependências serão instaladas no servidor.
Após a implementação da funcionalidade necessária do aplicativo, é preciso testá-la.
Então, o programador gera um executável ou implanta seu código, prepara uma cópia do banco de dados, gera as informações sobre o software e instruções sobre como instalar. Ele pega todo este conjunto de arquivos e transfere para o testador.
O especialista em teste instala tudo que precisa no computador dele, afinal, você o orientou a como fazer e, ao iniciar o aplicativo para fazer o teste: erro! O software não encontra o banco de dados.
Nem você e o restante da equipe sabem, mas a versão do MySQL 5.7 e o PHP 7.0 são incompatíveis com o sistema operacional do especialista de teste. Aqui o desenvolvedor diz “Mas na minha máquina funciona”. Esta era (e é um pouco ainda)  a frase de ouro nas empresas.
Vocês, então, resolvem colocar o software direto no servidor de produção. Porém, no servidor web não tem o sistema Apache instalado, mas sim o Glass Fish, que é outro sistema de servidor web.
Como resultado, ao usar um servidor da web diferente na produção, você deve configurar o seu sistema e todo o ambiente, logo, é um tempo extra que vai embora.
Durante o estudo desta unidade, você compreenderá como DevOps pode resolver este problema apresentado.
 
Fonte: Elaborado pelo Autor (2024).
· 
· 
· 
· 
· 
· 
· 
Ao final deste conteúdo, você será capaz de:
· compreender o ciclo de vida DevOps.
· aplicar integração e entrega contínua envolvendo práticas de DevOps.
Definindo DevOps
Durante muitos anos, a equipe de desenvolvimento e de operações trabalhavam isoladamente. De um lado, estavam os desenvolvedores, que eram responsáveis por escrever os códigos; de outro lado, estavam os administradores do sistema, que eram responsáveis pela implantação e integração. Como havia comunicação limitada entre desenvolvimento e operação, eles acabavam trabalhando separadamente em um projeto.
Com a chegada da metodologia ágil de desenvolvimento de software, esse modelo começou a mudar. Isso ocorreu porque a metodologia ágil impõe um desenvolvimento colaborativo entre equipes multifuncionais. Além disso, com os sprints (ciclos de desenvolvimento) curtos e lançamentos frequentes, que ocorrem a cada duas semanas ou mesmo todos os dias, exigem uma nova abordagem e maior comunicação entre equipes de desenvolvimento e de operação.
Nesse sentido, foi criada a palavra DevOps, uma junção das palavras desenvolvimento e operações. Trata-se de uma prática que visa combinar desenvolvimento, garantia de qualidade e operações (implantação e integração) em um único conjunto contínuo de processos.
Para compreender melhor o conceito de DevOps e como essa filosofia se relaciona com a metodologia ágil de desenvolvimento de software, é importante ler o capítulo indicado a seguir, que servirá como base para o estudo desta aula.
Estudo Guiado
Leia da página 38 a 42 do livro indicado.
 Clique no link e leia o livro
PRESSMAN, Roger S.; MAXIM, Bruce R. Engenharia de software. Porto Alegre: Grupo A, 2021. E-book. ISBN 9786558040118. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9786558040118/. Acesso em: 09 set. 2024.
Ao adotar o DevOps, as empresas ganham três vantagens principais que abrangem os aspectos técnicos, comerciais e culturais do desenvolvimento: maior velocidade e qualidade nos lançamentos dos produtos, resposta mais rápida às necessidades do cliente e melhor ambiente de trabalho.
Esses benefícios vêm apenas com a compreensão de que DevOps não é apenas um conjunto de ações, mas sim uma filosofia que promove a comunicação da equipe multifuncional.
Ciclo de vida DevOps
DevOps requer um ciclo composto de várias fases que, ao serem aplicadas coletivamente, se tornam o ciclo de vida DevOps. Essas fases compreendem o planejamento, desenvolvimento, teste, implantação, lançamento e monitoramento com cooperação ativa entre diferentes membros de uma equipe.
A figura a seguir apresenta um exemplo do ciclo de vida DevOps.
Figura 1 | Ciclo de vida DevOps
Embora a visualização pela figura ajude a entender como o DevOps funciona, é fundamental tentar se aprofundar um pouco para descobrir quais são as diferentes ferramentas de DevOps e como elas ajudam uma organização.
Conhecer o ciclo de vida DevOps é essencial para todo profissional, afinal, trata-se de uma filosofia abrangente e empregada por diversas empresas no mercado. Desse modo, será apresentado a seguir um trecho para leitura, que guiará o estudo sobre DevOps.
Estudo Guiado
Leia da página 50 a 52 do livro indicado.
 Clique no link e leia o livro
PRESSMAN, Roger S.; MAXIM, Bruce R. Engenharia de software. Porto Alegre: Grupo A, 2021. E-book. ISBN 9786558040118. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9786558040118/. Acesso em: 09 set. 2024.
Desenvolvimento contínuo
A primeira fase do ciclo de vida DevOps é marcada pelo planejamento e pela codificação do software. O planejamento envolve a compreensão do projeto (requisitos, funcionalidades, dependências entre outros), e a concepção de um software com base nessas percepções.
Durante o processo de planejamento não é utilizado nenhuma ferramenta, entretanto, durante a manutenção do código existem diversas que podem ser utlizadas como apoio.
O processo de desenvolvimento do programa (código fonte) começa com a escolha de uma das diferentes linguagens de programação, como Python, JavaScript, C, C# etc.
O processo de manutenção do código é denominado Source Code Management (SCM), em que são utilizadas ferramentas de controle de versão como GIT, TFS, GitLab, Subversion e Mercurial etc.
No processo de SCM, o GIT é a ferramenta preferencial que permite um controle de versão distribuído. Para grandes projetos, em que muitos colaboradores estão envolvidos na atividade de desenvolvimento, o GIT estabelece uma comunicação confiável entre as equipes por meio de mensagens de Commit.
Com a ajuda de uma ferramenta de controle de versão, uma versão estável do código do aplicativo é construída na fase de desenvolvimento contínuo. Os desenvolvedores também podem empacotar o código em arquivos com extensão .exe (executáveis).
Teste contínuo
Esta fase pode ser executada antes ou após a fase de integração contínua. Nessa fase, o código desenvolvido é continuamente testado quanto a bugs.Um ambiente de teste é simulado com o uso de contêineres Docker. Por meio de testes automatizados, os desenvolvedores economizam esforço e tempo, geralmente perdidos em testes manuais. Os relatórios gerados por testes automatizados melhoram o processo de avaliação do teste.
Uma equipe de garantia de qualidade define testes de código usando ferramentas de automação como Selenium, Ranorex entre outras. Se bugs e vulnerabilidades forem revelados, eles serão enviados de volta para a equipe de engenharia.
Esse estágio também envolve controle de versão para detectar problemas de integração com antecedência.
Integração contínua (CI) e entrega contínua (CD)
O código-fonte é modificado várias vezes e essas mudanças frequentes acontecem semanalmente ou diariamente. A integração do código é o núcleo de todo o ciclo de vida do DevOps. Na integração contínua, novos códigos que suportam funcionalidades adicionais são construídos e integrados ao código existente.
Desse modo, o código que passa nos testes automatizados é integrado em um único repositório compartilhado em um servidor. O envio frequente de código evita os conflitos de integração, ou seja, quando existe muita diferença entre os ramos individuais de código (o que cada desenvolvedor está produzindo) e o código do ramo principal (código fonte real).
A entrega contínua é uma abordagem que mescla as operações de desenvolvimento, teste e implantação em um processo simplificado, pois depende fortemente da automação. Esse estágio permite a entrega automática de atualizações de código em um ambiente de produção.
Feedback contínuo
As fases de teste e integração contínuos são cruciais, pois garantem melhorias consistentes no código do aplicativo. Sendo assim, a fase de feedback contínuo visa analisar essas melhorias e, como o nome indica, reportar as equipes o resultado desta análise (dar o feedback).
Nessa fase, os desenvolvedores são responsáveis por avaliar o resultado das modificações no produto final, realizadas nas fases anteriores. Porém, existe aqui um outro personagem importante: o cliente, ele é responsável por testar o programa gerado (lembra do pacote com extensão .exe?) e, após o teste, ele compartilha suas experiências ainda nessa fase.
Essa fase do ciclo de vida do DevOps é marcada como um ponto chave, pois pode ocorrer um feedback positivo ou negativo. Se negativo, o feedback é avaliado imediatamente e os desenvolvedores começam a trabalhar nas novas mudanças propostas pelo cliente. Por outro lado, em caso de uma resposta positiva do cliente, haverá o lançamento de novas versões do software.
Monitoramento contínuo
Nesta fase, os desenvolvedores registram dados sobre o uso do software e monitoram continuamente cada uma de suas funcionalidades, em busca de mensagens de erros relatando pouca memória, sem conectividade com a rede, dificuldade de se conectar com o servidor remoto entre outras.
O objetivo do monitoramento contínuo, então, é de garantir a disponibilidade do software, além de determinar as ameaças e causas dos erros recorrentes do sistema. Quando detectados, os erros e demais problemas são corrigidos automaticamente.
Nessa fase, há um comprometimento maior das equipes de operação, cujo principal objetivo é de supervisionar a atividade do usuário e verificar comportamento anormal do sistema.
Aqui cabe uma atenção especial: apesar de ser um ciclo contínuo, quando algum problema é detectado nessa fase, o aplicativo é rapidamente executado novamente em todas as fases anteriores do ciclo DevOps.
Implantação contínua
A fase de implantação contínua pode ocorrer antes do monitoramento contínuo. Porém, como é uma fase que está sempre ativa no ciclo de vida DevOps, ela pode ser também executada após o monitoramento contínuo.
Nessa fase, o código do software que foi finalizado anteriormente é implantado nos servidores de produção, ou seja, servidor de acesso principal do sistema.
O Gerenciamento da Configuração é um processo chave nessa fase, e realiza a implantação precisa do código do software em todos os servidores. A consistência no desempenho do aplicativo e nas condições funcionais é estabelecida e selecionada.
O código é liberado para os servidores, as atualizações são agendadas para todos os servidores e essas configurações são mantidas consistentes em todo o processo de produção. Ansible, Puppet e Chef são algumas das ferramentas DevOps eficazes usadas para Gerenciamento de Configuração, em que, frequentemente, executam a implantação rápida e contínua de novo código.
Nessa fase são usadas algumas ferramentas de conteinerização como o Vagrant para obter uma implantação contínua por meio do processo de gerenciamento de configuração. O Vagrant, uma ferramenta de conteinerização, desenvolve coerência em diferentes ambientes - do desenvolvimento e teste à preparação e produção.
A escalabilidade da implantação contínua é garantida por ferramentas como o Docker. Ferramentas como o Vagrant e Docker colaboram para anular todos os tipos de falhas de produção e erros de sistema, replicando e empacotando os acoplamentos de software das fases de teste e desenvolvimento. Em última análise, o aplicativo é executado sem problemas em computadores diferentes.
Operações contínuas
Essa é considerada a última fase do ciclo de vida DevOps, e consiste em automatizar o processo de liberação do aplicativo e as atualizações subsequentes. Trata-se de um ciclo mais curto, permitindo que os desenvolvedores acelerem continuamente o tempo de publicação do software.
Assista ao vídeo para conhecer mais sobre Conceito do DevOps
Videoaula
Metodologias, princípios e estratégias
Uma vez que a pessoa começa a seguir as metodologias de DevOps, ele encontra uma forma ou outra de fazer o software agir de forma semelhante desde o desenvolvimento até a produção, por meio de testes. Ele implanta as alterações individualmente, tornando os bugs facilmente visíveis. Esses, uma vez descobertos, levam a melhorias de código por meio de investigações e canais de feedback constantes.
Enquanto os desenvolvedores executam software ao vivo e as operações de TI estão envolvidas em reuniões de design – ambos, juntamente com outros especialistas, podem contribuir para investigações e canais de feedback, que ajudam a promover uma cultura DevOps.
Com o tempo de ciclo, desde a concepção até a entrada em operação do software reduzido, sua organização pode capitalizar as oportunidades de mercado, proporcionando, assim, uma vantagem competitiva para o seu negócio.
Embora o DevOps seja visto como uma extensão natural do Agile e um anátema para o ITIL, ele não possui sua própria estrutura – e pode ser potencialmente relevante para uma variedade de situações.
Organizações que utilizam métodos tradicionais (como por exemplo, o Cascata), caracterizados por etapas sequenciais de desenvolvimento de software e longos intervalos entre lançamentos de novas versões, podem utilizar os princípios de DevOps para melhor alinhamento entre funções como Dev, QA e Operações, com maior transparência em todas as funções.
As organizações que adotaram uma ou mais metodologias ágeis podem, facilmente, fazer com que seu pessoal de desenvolvimento e operações colabore durante todo o processo de desenvolvimento.
DevOps traz muitos benefícios e também desafios. No entanto, nos movimentos gêmeos acelerados de Transformação Digital e Transformação Ágil, DevOps e suas extensões relacionadas são um componente crucial, especialmente se a pessoa estiver implantando software na nuvem.
Embora seja a única maneira de colocar sua organização em uma cultura colaborativa e em um modo de entrega contínua, ela traz desafios significativos, incluindo habilidades de pessoas, infraestrutura de tecnologia e o esforço de juntar tudo para que funcione – o que, no entanto, deve ser superado.
Claramente, isso não pode ser feito da noite para o dia – é preciso comprometimento, adesão e financiamento da liderança e investimento em pessoas, treinamento e infraestrutura de tecnologia.
Por fim, retomando aquele problema apresentado no início deste estudo,todo aquele problema de configuração pode ser resolvido com DevOps. Com o uso das ferramentas DevOps corretas, é possível realizar a implantação do sistema no servidor de teste de forma automática e, posteriormente, quando for enviar para produção, também configurará automaticamente este servidor. Se alguma das etapas falhar, o desenvolvedor receberá uma notificação e consegue se recuperar.
Logo, a aplicação da filosofia DevOps pode ajudar a simplificar os processos de negócios da empresa.
Chegamos ao fim deste conteúdo! Confira a seguir, uma breve síntese do que estudamos aqui.
image1.jpeg
image2.png
image3.jpeg

Mais conteúdos dessa disciplina