Baixe o app para aproveitar ainda mais
Prévia do material em texto
20/09/2021 1 Infraestrutura Ágil Mudanças na Infraestrutura Ágil Ma. Patrícia Valério Martinez • Unidade de Ensino: 02. • Competência da Unidade: Infraestrutura com Código, Conceito Pipeline, Hospedagem de Código-Fonte, Ferramenta da Infraestrutura Ágil, Gestão de Configuração e Monitoramento de Serviço. • Resumo: O conceito de mudanças para a Infraestrutura Ágil. • Palavras-chave: Infraestrutura, Pipeline, Código-Fonte, Ágil e Serviço. • Título da Teleaula: Infraestrutura Ágil. • Teleaula nº: 02. Contextualizando • Infraestrutura com Código; • Conceito Pipeline; • Hospedagem de Código-Fonte; • Ferramenta da Infraestrutura Ágil; • Gestão de Configuração; • Monitoramento de Serviço. Infraestrutura com Código • O mundo da tecnologia está em constante evolução e justamente por isso, os processos de como entregamos essa tecnologia também evolui, se transforma. • Devops engloba toda a forma como produzimos software e como podemos atender a demanda dos clientes de maneira mais assertiva e fazendo entregas mais ligeiras do que como o método tradicional fazia. Cultura DevOps • A forma tradicional, planejava grandes entregas que tinha prazos e escopo definidos no momento da criação do projeto. • Isso não está mais atendendo a demanda, que passou a pressionar o mercado por uma agilidade de desenvolvimento e um escopo mais aberto, exigindo entregas cada vez mais rápidas. Cultura DevOps 1 2 3 4 5 6 20/09/2021 2 • Essa exigência do mercado, acabou por culminar no que chamamos de metodologias ágeis, que visavam substituir as metodologias tradicionais de desenvolvimento de software. O mercado já vinha tentando utilizar métodos mais ágeis de desenvolvimento há algum tempo, mas somente em 2001, que foi batizado o termo como metodologias ágeis, quando um grupo de especialistas se juntaram nos EUA para discutir como poderiam agilizar os processos de desenvolvimento, e desse encontro nasceu o manifesto para Desenvolvimento Ágil de Software. Cultura DevOps • Nesse manifesto, basicamente foram determinados que o foco do desenvolvimento do software, deveria ser os indivíduos e interações, o software estar executável, a colaboração do cliente e as respostas rápidas a mudanças e alterações. Cultura DevOps • Essa foi a pedra fundamental para a mudança de paradigma de toda a indústria de software, porém enquanto o mundo do desenvolvimento estava trabalhando dessa forma, a forma como se entregava e operava a infraestrutura, ainda seguia um processo engessado que exigia uma série de controles, para garantir que nada fosse alterado que pudesse gerar problemas e indisponibilidades as aplicações em produção. Infraestrutura • Começou a criar barreiras para a agilidade que se propunha com o método ágil, se não temos a infraestrutura disponível também de maneira ágil, perdemos um tempo precioso para as entregas do software. • Existiam assim duas abordagens diferentes e conflitantes, o desenvolvimento precisando fazer entregas cada vez mais ágeis e a operação de TI que tinha por objetivo manter toda a infraestrutura ativa e disponível e para isso precisava manter o mínimo de alterações no ambiente como um todo. Infraestrutura • Com isso, ocorre o surgimento de um movimento chamado de Devops, afim de remover as barreiras entre as equipes do desenvolvimento e de operações, propondo uma abordagem de colaboração e interação entre os times, desde a concepção da aplicação até sua entrega em produção. Cultura DevOps • Para se atingir este objetivo, algumas ferramentas e técnicas foram criadas. Em especial a ideia de criar esteiras de entrega de software, conhecidas como pipelines de entrega, que automatizam uma série de testes e implantações para tornar a disponibilização, configuração e os retornos da infraestrutura um processo automatizado e prático. Infraestrutura com Código 7 8 9 10 11 12 20/09/2021 3 • Quando você pensa em automação, o que vem à sua cabeça? • Se pensar como a indústria, a automação é desde os robôs que montam veículos até aqueles que montam pequenas peças eletrônicas que seriam impossíveis de serem feitas manualmente, a automação veio para ficar. Automação • Por exemplo, um robô construindo um veículo, tem que ter a capacidade de perceber diferenças para poder se autocorrigir e não agir igual em todos os casos. Automação • A automação na parte de tecnologia, não é simplesmente criar scripts para tornar automático um processo que faria manualmente. Isso já era feito enchendo os servidores de scripts. O problema era que ao fazer isso, apenas quem tinha criado o script, sabia de fato o que ele fazia e para qual propósito ele tinha sido feito. Tornando as manutenções e migrações um verdadeiro caos. Infraestrutura com Código • A automação vem ligada a ideia que é de tornar a infraestrutura como um código sigla IaC - NFRASTRUCTURE AS CODE, ou seja, Infraestrutura com Código. • Não basta apenas encher seu servidor de scripts para ter automação, você deve transformar sua infra em código, a ponto de poder simplesmente destruir seu servidor em produção e subir um igualzinho em poucos minutos. Infraestrutura com Código • Com uma automação ligada a ideia de infra como um código, você consegue criar ambientes inteiros automaticamente e já configurados para uso. Infraestrutura com Código • Na Infraestrutura com Código, você pode criar ambiente de homologação idênticos ao de produção, rodar testes de todos os tipos nesse ambiente para simular o comportamento em produção, se recuperar rapidamente de desastres e incidentes, ao ponto de ter o mínimo de indisponibilidade, o compartilhamento e agrupamento das configurações em um único repositório de código, possibilitando a revisão e avaliação do que é feito no ambiente e diversas outras possibilidades. Infraestrutura com Código 13 14 15 16 17 18 20/09/2021 4 • A principal vantagem dessa utilização estará ligada a preparação dos ambientes. • A infraestrutura como código trará codificações que são mais simples e ao mesmo tempo conseguem ser seguras. Sempre fazendo o uso das soluções disponíveis no mercado, ou seja, facilita a gestão dos times de operações. Vantagem da Infraestrutura com Código Conceito de Pipeline • O pipeline é um conceito que tem ligação com a automação, a ideia é criar uma forma de empacotar softwares desde sua concepção até a sua entrega no ambiente de produção de maneira automática. Conceito de Pipeline • O conceito de pipelines vão vir ligados aos termos resumidos na abreviação (CI/CD), que significam Continuos Integration e Continuos Delivery, ou, Integração Contínua e Entrega Contínua. Conceito de Pipeline • Nasce diretamente do conceito de metodologias ágeis. • A integração contínua é uma prática de desenvolvimento de software em que os membros de uma equipe integram seu trabalho com frequência, geralmente cada pessoa se integra pelo menos diariamente, levando a várias integrações por dia. Cada integração é verificada por um build automatizado (incluindo teste) para detectar erros de integração o mais rápido possível. Conceito de Pipeline • Para que exista integração contínua entre os desenvolvedores e não ter conflitos no código, podemos utilizar ferramentas de controle de versões como o Git. • A integração contínua é a etapa onde várias pessoas diferentes, geram códigos que depois são mesclados em um código único. Conceito de Pipeline 19 20 21 22 23 24 20/09/2021 5 • Mas o que isso tem a ver com a infraestrutura? • A infraestrutura ágil trata como um código e seriam vários analistas Devops criando códigos da infra, como redes, servidores, discos e integrando tudo em repositórios de código, unificando e compartilhando as informações entre si. Conceito de Pipeline • A entrega contínua, seria quando o código está integrado o suficiente, maduro, testado e é liberado uma versão (release) segura, para implantação do software para a produção, mas necessita deuma aprovação para que isso ocorra. • A implantação contínua, seria a automação de todo o processo de entrega desse software em produção, sem interação ou aprovação. Conceito de Pipeline Conceito de Pipeline • Quando juntamos os processos, temos: Desenvolvimento Ágil • A metodologia ágil é um modelo e uma filosofia que propõe alternativas a gestão de projetos tradicional e tem a função de aprimorar o processo de desenvolvimento de um produto ou serviço. O objetivo final é fazer entregas com rapidez e com maior frequência, conforme surgem as necessidades do cliente. • O desenvolvimento ágil é uma abordagem em que softwares são desenvolvidos de forma colaborativa, com equipes multidisciplinares que têm um bom nível de autonomia na execução de seus trabalhos. Integração Contínua • É uma prática de desenvolvimento de software que visa tornar a integração de código mais eficiente, através de testes automatizados. • O objetivo é sempre entregar atualizações e features para o usuário final, mais rápido. Integração Contínua • Os integrantes do time integram o trabalho continuamente, podendo haver uma ou múltiplas integrações por dia. • Na CI, partes de um código são construídas ou alteradas por diferentes desenvolvedores ao mesmo tempo. 25 26 27 28 29 30 20/09/2021 6 Integração Contínua • É fundamental utilizar ferramentas de controle de versões, como o Git ou Github. • Soluções como Jenkins também são importantes para coordenar os builds, testes e integrações de código. • O Jenkins, ajuda a automatizar as partes do desenvolvimento de software relacionadas a construção, implementação e teste. • O Git foi o criador do Kernel do Linux, o desenvolvedor finlandês Linus Torvalds, que não encontrava uma solução no mercado para o problema de controle de versão no desenvolvimento do Kernel. • O Git gera um controle de todas as alterações que são feitas em um código e consegue mesclar as alterações feitas por outras pessoas, permitindo assim que cada um trabalhe descentralizado na sua própria alteração. Integração Contínua • O objetivo da Entrega Contínua é sempre levar novos códigos ao ambiente de produção. • Para isso é preciso que esses códigos sejam gerados, através da integração do trabalho dos desenvolvedores, validados e testados. Entrega Contínua • Quando você entrega seu código em partes é muito mais fácil identificar um possível bug. • A concepção de que o erro nas fases iniciais representa custos mais baixos do que na fase de homologação ou produção. Entrega Contínua Implantação Contínua • A entrega da versão, só ocorre quando a versão passa por todos os testes necessários. • As atualizações, por serem menores, passam a ser menos arriscadas e fáceis de corrigir. Hospedagem de Código-Fonte 31 32 33 34 35 36 20/09/2021 7 • Um serviço de hospedagem de repositório é uma ferramenta de gestão organizacional que oferece uma visão transparente do processo, tradicionalmente opaco, do fluxo de trabalho do desenvolvimento de software. • Se testar o código com frequência, já estará fazendo a parte da integração contínua que ajuda a integrar as equipes de Devops, já que testando sempre o código, pode provar para a área de operações que seu código é funcional. Hospedagem de Código-Fonte • Existem diversos serviços que podem servir de hospedagem centralizada de código para o seu CI, entre os mais conhecidos, podemos citar o GitHub e o GitLab. Hospedagem de Código-Fonte • Temos algumas diferenças entre os serviços e é importante entender para fazer a melhor escolha possível. • O GitHub é um repositório e ao mesmo tempo uma rede social, permitindo que qualquer pessoa possa enviar seu código para ele, usando o Git, que ficarão disponíveis para toda a comunidade. Hospedagem GitHub • O GitHub foi concebido seguindo os princípios do Open Source ou código aberto, que basicamente enfatiza a colaboração da comunidade e a liberdade de compartilhar o código com todos. • Quando você não pode compartilhar o código da sua aplicação e precisa de um repositório privado, para isso o GitHub tem um serviço pago, que permite que você crie seus códigos e controle o acesso a eles. Hospedagem GitHub • O GitLab é um gerenciador de repositório de software baseado em git, com suporte a Wiki, gerenciamento de tarefas e CI/CD. • O GitLab é similar ao GitHub, mas o GitLab permite que os desenvolvedores armazenem o código em seus próprios servidores, ao invés de servidores de terceiros. • Na figura a seguir é apresentado um projeto no GitLab. Hospedagem GitLab Hospedagem GitLab 37 38 39 40 41 42 20/09/2021 8 • Depois de criar o projeto, você irá receber instruções de como adicionar o repositório local para ser enviado para o GitLab: Hospedagem GitLab • Na figura abaixo é realizado um comando push (empurrar), para enviar o código local para o GitLab: Hospedagem GitLab • Podemos ver o código da aplicação no GitLab: Hospedagem GitLab • Devemos definir o que queremos que a integração faça, neste momento uma reunião entre as equipes de desenvolvimento e operações para definir o que a aplicação tem que possuir para ser considerada integrada, qual infra que ela vai usar e a qual tecnologia. Hospedagem de Código-Fonte Infográfico – Contexto DevOps • Imagine que as equipes de desenvolvimento e operações estão com dois problemas. O primeiro é que eles ainda estão criando intrigas internas atrapalhando o bom andamento das entregas e o segundo é que alguns estão relutantes em utilizar as novas ferramentas por estarem habituados a fazer do modo antigo. • Como você faria para solucioná-los? Descrição da Situação Problema 43 44 45 46 47 48 20/09/2021 9 • Em todo o contexto do DevOps, o mais difícil sem dúvidas é a mudança dos paradigmas dos colaboradores, culturas não são alteradas facilmente. As ferramentas são mais fáceis. • Para resolver a relutância de alguns em utilizar novas ferramentas é muito mais fácil e você deve começar por elas. Solução da Situação Problema • Primeiro trazendo workshops e palestras explicando como usá-las e como elas podem auxiliá-los no dia a dia. Isso já vai resolver 95% dos problemas, pois quando as pessoas percebem que a ferramenta é um auxílio e melhora sua produtividade, a maioria aceita. A relutância em trocar, está muito mais ligada ao desconhecimento de como usá-la. Solução da Situação Problema • No caso da cultura é um pouco mais problemático, grande parte do desafio do DevOps é conseguir que as equipes não fiquem em lados opostos, apontando o dedo uns para os outros. E para atingir esse objetivo, deve-se procurar mapear os pontos de desgaste entre eles e trabalhá-los muito bem, existem empresa inclusive que trocam um membro da equipe durante um tempo com a outra, para que cada um sinta como é estar do outro lado e assim entendendo os problemas diários que cada um enfrenta. Solução da Situação Problema • Procure incentivá-los a sempre interagir, conversar e procurar solução para esses pontos de desgaste, coloque- os para dar sugestões uns aos outros e faça reuniões de brainstorm entre eles, colocando como meta para todos, mais entregas em produção da aplicação e conceda prêmios aos que melhor interagirem entre eles, incentivando assim uma mudança de cultura. Solução da Situação Problema • O brainstorming é uma técnica usada para levantar ideias de soluções de problemas ou para criar coisas novas. Solução da Situação Problema Ferramenta da Infraestrutura Ágil 49 50 51 52 53 54 20/09/2021 10 • A Infraestrutura ágil é poder fazer as alterações demandadas de forma rápida e eficiente e com isso responder rápido as novas necessidades trazidas pelo mercado. • A Infraestrutura como Código, move para a etapa de codificação a configuração dos ambientes. Tratando a infraestrutura como uma etapa no desenvolvimento de software, acarreta na incorporação dos famosos scripts de automatização dos processos de TI. Infraestrutura Ágil • O surgimentodas técnicas de Infraestrutura como Código tem bastante relação com o surgimento do DevOps e dos conceitos de CI/CD, principalmente por envolver os desenvolvedores na configuração dos ambientes onde as suas aplicações irão operar. • Tratar a Infraestrutura como Código permite que as entregas aconteçam com muito mais agilidade e eficiência, sendo uma das principais motivações para o seu surgimento. Infraestrutura Ágil • As vantagens de se utilizar a Infraestrutura como Código: o Rapidez nas entregas de valor. o Automatização dos processos. o Menor taxa de retrabalho. o Eficiência operacional. o Ganhos financeiros. Vantagem da Infraestrutura Ágil Pilares da Infraestrutura Ágil • A Infra Ágil é um movimento que visa tornar a infraestrutura automatizada, orquestrada, sendo tudo provisionado como código para ser possível falar de DevOps. • Algumas ferramentas usadas por grande corporações na infraestrutura ágil, como: Jenkins, Ansible, Git, GitLab e Docker. Infraestrutura Ágil • Vamos usar uma tecnologia Docker, para criar um container da aplicação e com isso poder padronizar como a aplicação vai ser entregue ao usuário final. Na Figura a seguir existe um botão chamado Setup CI/CD, que cria um script para configurar um pipeline padrão, usando o padrão do Docker. • Assim que ativar o CI/CD, vai criar um arquivo chamado gitlab-ci.yml e esse arquivo é escrito em formato YAML que é um formato de serialização de dados legível por humanos e modelos de processamento. DOCKER 55 56 57 58 59 60 20/09/2021 11 GitLab – CI/CD • Com o arquivo gitlab-ci.yml, podemos descrever os passos que queremos que o nosso pipeline tem que fazer: o Primeiro fazemos login na plataforma DockerHub, um repositório público de imagens, que permite que envie as imagens Docker para lá. o Depois pegamos a aplicação e construímos uma imagem dockerizada, usando o DockerFile presente no projeto, que diz quais passos ele tem que instalar dentro da imagem para que a aplicação funcione. GitLab – DockerHub • Depois é aplicado uma Tag (etiqueta), item obrigatório do Docker, para que ele possa diferenciar as imagens umas das outras. • Enviamos essa imagem para o dockerhub e a aplicação está pronta para ser usada em produção. DOCKER • Segue abaixo, o resultado final: GITLAB • O importante é alterar um trecho do código, o pipeline vai receber essa alteração, vai criar a imagem Docker e deixar preparada para a nova versão da aplicação. • Lembrando que esse pipeline não é um CI/CD completo, pois falta ainda alguns passos para isso. Como: testes, replicar isso em ambiente de homologação e por fim em produção. GITLAB • Na figura abaixo será apresentado o histórico das pipelines executadas: GITLAB 61 62 63 64 65 66 20/09/2021 12 • Os logs da pipeline para entender o que foi feito: GITLAB • Na figura abaixo é apresentado os passos que a pipeline executou sozinha. GITLAB • O Gitlab proporciona, nativamente, ferramentas de integração e entrega contínua, além de métricas para acompanhamento de qualidade de código, performance e teste de usabilidade. GITLAB Gestão de Configuração e Infraestrutura Versionada • Uma infraestrutura versionada possibilita e facilita a recuperação de um ambiente com ganhos de consistência e disponibilidade. Em caso de erro, recupera a infraestrutura, pois mantem um histórico das modificações feitas que podem ser auditáveis e reversíveis. Infraestrutura Versionada • Para manter uma Infraestrutura Versionada é preciso que se tenha um sistema de controle de versões que são mecanismos que armazenam múltiplas versões de arquivos, sendo que quando modificado algum deles, ainda pode-se ter acesso as versões anteriores. Essa característica é fundamental, pois na prática é o que garante que várias pessoas possam trabalhar de maneira contínua e colaborativa para a entrega de um software. Infraestrutura Versionada 67 68 69 70 71 72 20/09/2021 13 • O controle de versão não se refere apenas a código, embora os desenvolvedores devam usá-los em códigos, qualquer componente da criação da aplicação deve estar no controle de versão, ou seja, testes, scripts de bancos de dados, arquivos de compilação e implantação, documentação, bibliotecas e arquivos de configuração para sua aplicação, para seu compilador e todas as ferramentas relacionadas, de modo que um novo membro da equipe possa começar do zero. Infraestrutura Versionada • Toda vez que uma versão é modificada ela se torna pública para os outros integrantes do time de desenvolvimento e se estiver usando integração contínua, essa versão pode ser visualizada, testada e até mesmo ser produzida. • Antes de fazer o check-in é importante garantir que o código esteja pronto para o nível de visibilidade que se propõe, muitos desenvolvedores demoram fazer o versionamento, o que pode atrapalhar a produção. Infraestrutura Versionada • Para resolver esse problema algumas equipes apostam em um branch (apartar código do principal) separado somente para novas funcionalidades. Quando vêm que a mudança é satisfatória é que se lança para o branch principal. Infraestrutura Versionada Infraestrutura Versionada Fonte: Cronapp, ANDRADE (2021, n.p) • A Gestão de Configuração e a Infraestrutura Versionada podem ser usados como sinônimos, a Gestão de Configuração é bem mais ampla, pois se refere a todos os processos do projeto, as relações entre si, como armazenamentos, recuperações, modificações e identificações, já o controle de versões é uma ferramenta tida como indispensável da gestão de configuração. Gestão de Configuração e Infraestrutura Versionada • A Gestão de Configuração permite a reprodução de ambientes, versões de sistemas operacionais, configurações de rede, aplicações instaladas e suas configurações permite verificar as mudanças que acontecem em um dado ambiente e descobrir quem a fez, quando e porque contentar os requisitos de acordo com as regulamentações impostas, disponibilizar as informações para qualquer membro da equipe e assim proporcionar uma integra eficiente e melhor feedback. Gestão de Configuração 73 74 75 76 77 78 20/09/2021 14 • A Gestão de Configuração de software engloba todos os processos do projeto, como o gerenciamento de repositórios, o controle das versões, modelagem dos produtos e a gestão de outros objetos mais complexos, mas também ajudando os desenvolvedores em suas atividades rotineiras e fornecendo suporte e controle ao processo de desenvolvimento. Gestão de Configuração • As práticas de Gestão de Configuração: 1. Identificar itens de configuração: serve para planejar as baselines do projeto. As baselines representam o conjunto de itens de configuração que foram validados e servirão de base para as etapas seguintes do desenvolvimento. Estes itens representam um artefato do projeto que deve ter características definidas e que serão controlados formalmente a partir do momento em que entram na baseline. Práticas de Gestão de Configuração 2. Estabelecer o sistema de configuração: a gerência prepara e ajusta a infraestrutura definindo os repositórios (que devem viabilizar a flexibilidade requerida) e os sistemas de mudanças (que tem como ponto principal a visibilidade). Práticas de Gestão de Configuração 3. Criar e liberar baselines: passa pelas etapas de baseline de planejamento, onde são analisados o projeto, definida a gerência de configuração e garantia da qualidade, baseline de requisitos que contemplam os requisitos funcionais, casos de uso e demais documentos e a baseline de código que contempla o código-fonte que atenderá os requisitos. Práticas de Gestão de Configuração 4. Rastrear solicitações de mudanças ou Change Request (CR): demanda alterações do projeto e compreendem ações especificas como registro de CR, análise da solicitação registrada, alteração nos artefatos necessários, verificação das alterações e fechamento do registro da solicitação. Práticas de Gestão deConfiguração 5. Controlar itens de configuração: deve ser capaz de rastrear as alterações feitas nos itens de configuração durante uma solicitação de mudança, essa atividade envolve o registro do histórico de alterações dos itens. 6. Estabelecer registros da gerência de configuração: são documentos que precisam ser levantados afim de acessar as características dos itens de configuração, identificar o controle de acesso aos itens, o conteúdo das baselines e o histórico de mudanças de cada item. Práticas de Gestão de Configuração 79 80 81 82 83 84 20/09/2021 15 7. Realizar auditorias de configuração: é necessário que se faça auditorias de configuração periódicas como forma de garantir a execução correta das atividades de gerência de configuração. Práticas de Gestão de Configuração • A infraestrutura ágil baseia-se no manifesto ágil para sugerir mais objetividade, agilidade, feedback imediato, comunicação direta, simplicidade e vários outros conceitos que estão implícitos em seus processos de automatização, provisionamento e entrega contínua. • Entender os recursos que a infraestrutura ágil empresta para a indústria de desenvolvimento de software é ter ciência de que uma nova cultura surge desses preceitos. Infraestrutura Ágil Monitoramento do Serviço • O monitoramento é um assunto que tem tido cada vez mais atenção nas equipes DevOps, pois está sempre sendo aprimorada com novas técnicas e ferramentas, para acompanhar a mesma evolução que as implantações contínuas tem tido. Monitoramento do Serviço • O monitoramento é negligenciado, causando falhas em ambientes produtivos, que podem levar a perdas financeiras, e até a falência, dependendo do tamanho do negócio, seu espaço no mercado e o tempo de resolução do incidente. • Um dos itens que englobam todo o ciclo do DevOps é um monitoramento bem configurado e que consiga trazer o feedback necessário, não só para prever falhas, como também servir de base para melhorias de todo o processo. Monitoramento do Serviço • Existem diversos tipos de monitoramento, para diversos tipos de abordagens e ambientes, precisamos verificar quais são ideais para cada tipo de infraestrutura e arquitetura de sistemas utilizada. • É importante escolher o que monitorar, já que existem diversos itens como métricas, devemos saber quais utilizar, tendo em mente como fazer uma separação inteligente, que traga assertividade ao monitoramento. Monitoramento do Serviço 85 86 87 88 89 90 20/09/2021 16 • Aliada ao monitoramento, devemos pensar em criar alertas, que irão nos avisar em caso de falhas e definir as políticas, para que possamos atingir os objetivos de sermos avisados somente se um item crítico ao funcionamento das aplicações estiver com problema. E evitar o envio excessivo de alertas, com coisas banais misturadas a informações críticas, causando um efeito indesejado de recebermos alertas demais e não conseguirmos diferenciar o que é crítico do que não é. Monitoramento do Serviço • O surgimento do DevOps está ligado ao advento da computação em nuvem (Cloud Computing), porém uma empresa pode possuir a infraestrutura interna, conhecida como on-premises e utilizar a cultura DevOps. Monitoramento do Serviço • Quando monitoramos infra on-premises, ficamos preocupados com a parte física de cada equipamento e servidor: o Uso de CPU e memória: não devemos deixar que os aplicativos esgotem todo o recurso computacional dos servidores antes de tomarmos uma ação. o Espaço disponível em disco: temos que saber preventivamente se um disco está ficando cheio, pois disco cheio pode causar a parada de todo o ambiente. Monitoramento do Serviço o Disponibilidade de componentes de rede: Switches, firewalls podem falhar e se acontecer, temos que ter uma forma de contornar o problema rapidamente. o Já no caso de infra em cloud, boa parte dos itens são responsabilidade do provedor, como a disponibilidade dos servidores e os recursos de CPU e Memória, que podem ser escaláveis a medida que forem necessários. Monitoração • Outro conceito que alterou a maneira como o monitoramento é feito é a arquitetura de microsserviço. • Antigamente, os sistemas eram construídos de maneira única, provendo todos um único serviço no final. • Hoje o conceito mais utilizado é o de separar a aplicação em pequenos serviços, cada um com uma função e esses serviços, vão se falar internamente para prover a resposta ao usuário. Monitoramento do Serviço Monólito e Microsserviços 91 92 93 94 95 96 20/09/2021 17 • Por mudar a arquitetura, não é mais possível simplesmente monitorar a saída única do serviço principal que o usuário acessa, mas sim todo o ecossistema dos microsserviços para verifica-los individualmente. • Por exemplo: imagine que sua aplicação foi construída usando uma arquitetura monólito e quando está funcionando perfeitamente, abre uma página http e o status dela é 200 (código do protocolo http para respostas). Monitoramento do Serviço • Bastava adicionar um monitoramento para testar de tempos em tempos se a resposta http era 200 e em caso de diferença, alertava o time de operações para verificar. • Esta era a forma padrão de monitorar uma aplicação monólito, mas no caso da arquitetura microsserviços, não basta a página inicial retornar 200, você precisa confirmar se todos os microsserviços estão funcionando e se eles estão retomando os itens necessários. Monitoramento do Serviço • Todo e qualquer sistema gera informações sobre seu funcionamento que são utilizadas pelos times de operações os chamados Logs. • Os Logs, fornecem pistas sobre um possível problema com algum sistema inoperante. Para isso, geralmente fornecem uma saída padrão, em arquivo de texto, com tudo que o sistema fez, ao iniciar, seja de sucesso ou erro. Esse arquivo é consultado como uma forma de encontrar pistas sobre os problemas. Monitorando Logs • Um bom sistema de monitoramento inclui gerenciar esses logs em um local único para centralizar a análise e fazer correlações de problemas com outros sistemas e possibilitar encontrar falhas relacionadas. • Podemos mencionar ferramentas amplamente usadas como o Elastic Stack, que faz uma indexação de logs vindos de diversas fontes, tanto de infraestrutura como de aplicações. Monitorando Logs • A aplicação tem que ter uma atenção especial, pois é para ela que a infraestrutura toda é configurada. Portanto, monitorar a aplicação corretamente é fundamental. • As aplicações rodam com arquitetura de microsserviços, que fazem com o que a monitoração tradicional seja alterada para uma que consiga analisar traços e relacionamentos internos que a aplicação faz. Monitorando Aplicações • Surgiram ferramentas chamadas de APM (Application Performance Monitoring) ou Monitoramento de Performance de Aplicação. Elas fornecem uma gama de visualizações e interações entre as aplicações internas, capazes de monitorar quanto tempo uma determinada ação dentro de sistema está levando, quais classes e itens são chamados internamente. • Os APMs são o que há de mais avançado dentro do conceito de monitoramento. Monitorando Aplicações 97 98 99 100 101 102 20/09/2021 18 • Podemos citar a ferramenta Elastic APM. • O Elastic APM é uma ferramenta da Elastic que possibilita a coleta de dados de performance de aplicações. Monitorando Aplicações • Todo o sistema de monitoramento é na verdade um processo contínuo, que deve ser calibrado para alertar itens importantes e dispensar itens irrelevantes. • Um monitoramento bem configurado, ajudará sempre estar a frente de um incidente e diminuir as perdas e pode trazer ganhos ao negócio, melhorando o tempo de resposta de uma aplicação e a experiência do usuário. Monitoramento do Serviço Infográfico – Metodologia Ágil • Depois de feita toda a transição de uma metodologia de cascata para uma metodologia ágil, a equipe ficou muito mais motivada, as equipes passaram a trabalhar juntas e apesardos problemas que toda mudança trás, todos avaliaram como positivas as inserções feitas e o uso das ferramentas escolhidas. Descrição da Situação Problema • Embora a satisfação da equipe torne o trabalho mais motivador e consequentemente melhore a qualidade do produto final, o objetivo maior de todas essas mudanças foi trazer para o cliente uma melhor experiência de uso. • Simule um estudo de caso de uma aplicação de software para mostrar como a inserção da metodologia ágil impactou, a experiência do cliente final. Descrição da Situação Problema • Vamos pensar na satisfação do cliente com as práticas ágeis, lembre-se que ele não tem total ciência de como são feitos os processos de produção, a única métrica que ele tem são as entregas a ele feitas. • O impacto para o cliente sempre será referente a entrega do produto esperado, já que o produto é pensado na perspectiva do usuário. Solução da Situação Problema 103 104 105 106 107 108 20/09/2021 19 • Podemos pensar em um estudo de caso de um pedido feito por um determinado cliente que passou por várias versões até sua fase de maturação. • Detalhar como cada versão contribuiu positivamente ou negativamente para o objeto final. • Enfatizar como o feedback do cliente contribuiu. Solução da Situação Problema • Detalhar a história do usuário desde o problema que precisava ser solucionado até a gerência dos requisitos e a avaliação final do produto. Traga tudo para um contexto de experiência do usuário. • Se for uma história real traga estatísticas e dados que provem o sucesso da implementação. Solução da Situação Problema • As metodologias ágeis são conjuntos de práticas que visam à entrega rápida e de alta qualidade do produto ou serviço e que promovem um processo de gerenciamento de projetos que incentiva a inspeção e adaptação frequente. • Esse método busca integrar a comunicação entre equipes seguindo um único objetivo, de forma a otimizar os processos e aumentar a eficiência do seu negócio. Solução da Situação Problema • SCRUM é o tipo de metodologia ágil mais utilizado. • O projeto se divide em ciclos que duram entre uma e quatro semanas (chamados sprints). Solução da Situação Problema Solução da Situação Problema Recapitulando 109 110 111 112 113 114 20/09/2021 20 Recapitulando • Infraestrutura com Código; • Conceito Pipeline; • Hospedagem de Código-Fonte; • Ferramenta da Infraestrutura Ágil; • Gestão de Configuração; • Monitoramento do Serviço. Siga em frente e bons estudos! Obrigada! 115 116
Compartilhar