Baixe o app para aproveitar ainda mais
Prévia do material em texto
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. Conceitos 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 • 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 • 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 • 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 Conceitos 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 • 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 de uma aprovação para que isso ocorra. • A implantação contínua, seria a automação detodo 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. 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. Conceitos Hospedagem de Código-Fonte • 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 • 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 Resolução da SP 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 • 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 Conceitos Ferramenta da Infraestrutura Ágil • 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 surgimento das 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çãodos 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 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 • 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 Conceitos 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 • 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 • 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 de Configuraçã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ênciade 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 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 Conceitos 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 • 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 • 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 • 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 Resolução da SP 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 apesar dos 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 melhorexperiê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 • 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 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!
Compartilhar