Baixe o app para aproveitar ainda mais
Prévia do material em texto
Infraestrutura Ágil Infraestrutura de Containers Ma. Patrícia Valério Martinez • Unidade de Ensino: 03. • Competência da Unidade: Infraestrutura de Containers, Monitoramento de Containers, Ferramentas de Orquestração, Infraestrutura como Código, Infraestrutura Ágil em Cloud e Infraestrutura em Plataforma PaaS. • Resumo: A infraestrutura de Containers, monitoramento e Orquestração. • Palavras-chave: Containers, Monitoramento, Orquestração, Cloud e PaaS. • Título da Teleaula: Infraestrutura de Containers. • Teleaula nº: 03 Contextualizando • Infraestrutura de Containers; • Monitoramento de Containers; • Ferramentas de Orquestração; • Infraestrutura como Código; • Infraestrutura Ágil em Cloud; • Infraestrutura em PaaS. Infraestrutura de Containers • O uso dos containers na produção de software facilita a integração entre as equipes de desenvolvimento e operação, e é uma prática considerada indispensável na cultura DevOps. • O Container possibilita o isolamento, compartilhamento, portabilidade de aplicações e facilita a homologação e entrega do software. Infraestrutura de Containers • Um container consegue encapsular uma aplicação usando apenas alguns recursos necessários e conta com orquestradores que gerenciam arquiteturas de microsserviços e containers em escala. Infraestrutura de Containers • A containerização permite o trabalho em ambientes separados com uma integração na esteira da produção, esse isolamento facilita o escalonamento, o que é muito útil para sistemas que precisam mudar constantemente sua carga de trabalho. Infraestrutura de Containers • Para trilhar com propriedade no mundo DevOps é imprescindível o entendimento sobre o funcionamento dos Containers. • Sempre que ouvimos a expressão containers já associamos aos containers de transporte dos navios cargueiros. A expressão, inclusive veio dessa associação. Na cultura DevOps, os containers são muito usados no desenvolvimento, testes e no ambiente de produção de softwares. Infraestrutura de Containers • Muitos confundem os containers com máquinas virtuais, no entanto, eles não funcionam tal qual a virtualização que conhecemos, uma das diferenças é que o container compartilha o mesmo Kernel do Sistema Operacional. • Num sistema como o Linux, por exemplo, a modularidade característica de seu Kernel, permite provisionamentos de sistemas mais enxutos e com economia de recursos. Infraestrutura de Containers • Os containers têm recursos isolados de CPU, memória e rede enquanto compartilham o kernel do sistema operacional. Eles hospedam código-fonte, ferramentas de sistema e bibliotecas. Diferem-se de formas específicas das máquinas virtuais (VMs), mas podemos pensar neles como iterações leves de VMs. Infraestrutura de Containers • Uma outra diferença é a forma como ele pode ser provisionado. Em uma máquina virtual você pode criar um ambiente que pode se valer de várias ferramentas (PHP, MSQL e Apache), tudo rodando no mesmo Sistema Operacional, já os containers assumem apenas uma função, isolando os processos de cada ferramenta. • A vantagem é que facilita bastante a escalabilidade, consequentemente, a performance e flexibilidade dos processos. Infraestrutura de Containers • Os containers agrupam tudo de uma aplicação e suas dependências, compartilhando o mesmo Kernel do Sistema Operacional de uma máquina (hardware ou VM) onde esteja rodando. Infraestrutura de Containers • Quando estamos utilizando máquinas virtuais, emulamos um novo sistema operacional e todo o seu hardware utilizando mais recursos da máquina host, o que não ocorre quando utilizamos containers, pois os recursos são compartilhados. O ganho disso é a capacidade de rodar mais containers em um único host, se comparado com a quantidade que se conseguiria com máquinas virtuais. Infraestrutura de Containers • Uma outra característica importantíssima dos containers é a portabilidade. O programador pode criar ambientes em qualquer host que tenha o Docker instalado. • Será possível executar em qualquer sistema operacional, bastando que o Docker esteja instalado. Infraestrutura de Containers • Um outro exemplo é como desenvolvedor, pode criar uma aplicação na sua própria máquina e depois levar para um servidor de produção. Portanto, enquanto que uma máquina virtual emula sistema operacionais dentro de um host, o container emula somente as aplicações e dependências, tornando-as portáteis. Infraestrutura de Containers • Para simplificar o entendimento, os containers com o conceito da penseira presente na saga do bruxo. A penseira do mundo Harry Potter é uma bacia grande e rasa na qual as memórias são recriadas de forma fiel ao ambiente original, em todos os detalhes e podem ser experienciadas por qualquer pessoa exatamente como ocorreu originalmente. Infraestrutura de Containers • Uma memória é tirada do armazenamento e colocada na penseira. Quando um bruxo coloca o rosto na penseira, ele é empurrado para a memória como se a estivesse vivendo fisicamente. Podemos comparar uma imagem de container a memória armazenada sem degradação até que esteja pronta para ser experienciada por outro bruxo por intermédio da penseira. O container seria o reviver da experiência, uma instância dessa memória. Infraestrutura de Containers • A tecnologia dos containers apresenta um cenário perfeito para o desenvolvimento de microsserviços, prática característica da cultura DevOps. • Os microsserviços dividem a arquitetura da aplicação em partes distintas que se integrarão na aplicação final. Infraestrutura de Containers • Com o isolamento característico dos containers, cada função fica separada, caso necessite fazer o reparo em alguma dessas partes, não comprometerá a disponibilidade do sistema como um todo. • Um exemplo prático é um aplicativo de banco. Você está consultando seu saldo, vendo limites no cartão de crédito, e resolve fazer um PIX. Infraestrutura de Containers • Mas essa função está em manutenção, ou seja, você está operando toda uma aplicação, mas uma parte isolada dela, no caso o uso do PIX, está indisponível sem comprometer o restante do funcionamento do sistema. • Essa centralização traz inúmeros benefícios para a cultura DevOps. O uso de um orquestrador como o Kubernetes, ajudará a gerenciar esses processos de microsserviços, tornando a aplicação escalável e automatizada. Infraestrutura de Containers • As máquinas virtuais (VMs) passaram a emular o hardware, executando software em servidores físicos, ou seja, uma VM executa um sistema operacional exclusivo (kernel, bibliotecas, aplicativos, arquivos de configuração) dentro de um servidor físico e no mesmo servidor é possível projetar VMs com sistemas diferentes. Infraestrutura de Containers • Os containers oferecem uma maneira de executar esses sistemas de forma isolada, sem a necessidade de virtualizar todo o Hardware e Sistema Operacional, fornecendo apenas o básico para os aplicativos serem executados, ou seja, é instalado apenas o suficiente para a implantação de uma aplicação. Infraestrutura de Containers • Os containers já eram usados há décadas no sistema Unix através do comando chroot (embora de forma simplória, sem os recursos que temos hoje, já era possível fazer isolamentos), em seguida o conceito foi usado nos jails do FreeBSD, teve também o OpenVZ, o CGgroups da Google, o projeto LXC, mas foi em 2013 que os containers se popularizaram e passaram a ser utilizados de forma massiva pelas grandes empresas. Infraestrutura de Containers Monitoramento de containers • O uso dos containers já é uma realidade na indústria de desenvolvimento de software, tornando o seu monitoramento essencial para garantir que tudo esteja funcionando da melhor forma possível, com disponibilidade e eficiência, afinal quando se trata de desenvolvimento de software já sabemos por certo que em algum momento algo não vai funcionarcomo deveria e o monitoramento é capaz de se anteceder ao problema. Monitoramento de containers • Com o monitoramento é possível visualizar os containers que estão operando e onde estão sendo executados, exibir uma auditoria que detalhe os comandos de containers usados, identificar ruídos, consumo excessivo de recursos, ter ciência do uso da CPU, da memória, armazenamento e outras informações de desempenho. Monitoramento de containers • Dentre as ferramentas de monitoramento de containers podemos destacar: Docker Stats, CAdvisor, Scout, Data Dog, Sensu Monitoring Framework, Prometheus, Sysdic Cloud. Monitoramento de containers • Os containers transformaram a forma como as aplicações são desenvolvidas. Os ambientes criados por eles dão velocidade ao desenvolvimento e a entrega das aplicações. • A evolução tecnológica nos proporciona uma infraestrutura que agrega várias ferramentas com o objetivo de criar, implantar, configurar, automatizar e gerenciar containers. Monitoramento de containers • O container é simplesmente uma maneira inovadora de abstrair um ou mais processos do restante do sistema. Os containers deixam a carga "mais leve", possibilitando o trabalho em pequenos subconjuntos de código sem impactar o ambiente de execução geral. Eles também fornecem uma forma padrão de empacotar e isolar dependências, configurações e código da aplicação em um objeto. Monitoramento de containers • O monitoramento de containers não é uma das tarefas mais fáceis, isso porque a partir do momento em que aumenta a quantidade de containers implantados, aumenta também a dificuldade em os monitorar. • Quando levamos essa problemática para as nuvens, nuvens híbridas, por exemplo, onde os containers aparecem tanto em nuvens públicas como privadas, o monitoramento fica ainda mais comprometido. Monitoramento de containers • O monitoramento de containers não deve ser menosprezado, é imprescindível que se crie formas de analisar, localizar erros e tomar decisões a partir de eventos gerados pelos containers. Monitoramento de containers • O monitoramento de containers, consiste em identificar em quais hosts os containers estão executando, isolar containers que apresentam problemas para corrigi-los, detalhar e controlar o consumo de memória do servidor, quantificar o número total de containers e os que estão ativos, investigar os detalhes de cada container afim de analisar o seu desempenho, Acompanhar, distribuir ou restringir a quantidade usada de CPU, apurar problemas de comunicação e troca de recursos, analisando o tráfego de rede. Monitoramento de containers • Várias abordagens e ferramentas podem ser usadas para monitoramento de containers, é preciso que se analise o ambiente da infraestrutura de containers para que se escolha a ferramenta ou o conjunto de ferramentas adequado. Monitoramento de containers • Numa abordagem geral de monitoramento, o ideal é que se busque uma solução que dê suporte a toda a infraestrutura. Quando focamos nos containers, que são implementados de forma dinâmica, em movimento constante, IPs instáveis e não confiáveis, é preciso que o monitoramento acompanhe essas características já que é necessário que se detecte automaticamente as modificações que ocorrem no ambiente. Monitoramento de containers • O Elastic Stack (ELK Stack) se apresenta como uma solução para o monitoramento de toda a estrutura, com visibilidade de todo o ecossistema e garante que suas ferramentas integradas, Metricbeat e o Filebeat (que enviam dados de logs e métricas) têm recursos de descoberta automática que controlam essas alterações, com controle de implantação e processos adaptáveis a qualquer nova configuração. Monitoramento de containers • Para coleta de métricas Docker Swarm (orquestrador de containers em cluster) uma solução pode ser a junção de ferramentas como o cAdvisor, InfluxDB e o Grafana. • Essa solução daria uma ideia geral da carga de trabalho de cada container, embora o Docker tenha a solução docker stats, quando se têm vários hosts em cluster e não há uma definição de quais containers estão em cada host, por exemplo, é preciso que se tenha uma forma de analisar todas as informações de consumo desse cluster. Monitoramento de containers • Nesse contexto, o cAdvisor (Container Advisor) é um daemon, serviço que roda no background de um sistema em execução que coletará os processos agregados e exportará informações sobre todos os containers ativos. Monitoramento de containers • Existe a possibilidade de integrar com uma API e enviar dados para diversos backends, estendendo assim o seu uso. Nessa abordagem com o InfluxDB é possível fazer com que cada host de seu cluster tenha um container do tipo CAdvisor que envia dados para o InfluxDB e após subir o serviço Grafana visualizar as informações que foram coletadas. • Com o Grafana é possível criar, exibir gráficos e até montar um dashboard unindo todas as informações. Monitoramento de containers • Uma outra ferramenta que também pode ser usada para monitoramento de containers é o Netdata Agent. Ele é totalmente escalonável, pois suas métricas são armazenadas em nós individuais e é capaz de coletar e visualizar métricas de utilização de recursos para cada contêiner naquele nó. Ele também descobre automaticamente o aplicativo específico em execução dentro de cada contêiner e aplica imediatamente uma de suas várias integrações para coletar dezenas de métricas relevantes por segundo. Monitoramento de containers • Com ele é possível visualizar o comportamento da CPU, Memória RAM, uso de rede, coletar métricas por segundo dos serviços ou aplicativos de cada container e ainda monitorar infraestruturas orquestradas como Docker, Docker Swarm e Kubernetes. Monitoramento de containers • Uma outra solução é integrar o Prometheus com o Node- Exporter e o cAdvisor e o usar o Grafana para visualizar os dados. • O Prometheus apresenta um conjunto de ferramentas de monitoramento e alerta de sistemas de código aberto. Ele extrai métricas diretamente ou por meio de um gateway, armazena localmente os dados coletados e pode usar outras ferramentas incorporadas para visualizar esses dados, como o Grafana. Monitoramento de containers • Um dos pontos fortes do Prometheus é que ele tanto pode fazer o monitoramento centrado na máquina como o faz em arquiteturas dinâmicas, como as orientadas a serviços. Monitoramento de containers • Na proporção que você vai conhecendo as ferramentas, percebe também o poder de integração delas. Algumas soluções, podem suprir toda a sua necessidade, em outros casos será necessário um conjunto de ferramentas, seja qual for a solução encontrada é importante que o monitoramento seja incorporado nas suas boas práticas de desenvolvimento. Monitoramento de containers Ferramentas de Orquestração • Para automatizar a implantação, fazer o gerenciamento e garantir a escalabilidade com o uso dos containers é feito o que chamamos de orquestração. Com a orquestração é possível, usar uma mesma aplicação, reportando-a em ambientes diferentes. Orquestração • Sendo assim é possível usar a orquestração de containers para automatizar e gerenciar tarefas como provisionamento e implantação, configuração e programação, alocação de recursos, disponibilidade dos containers, escala ou remoção de containers com base no balanceamento de cargas de trabalho na infraestrutura, balanceamento de carga e roteamento de tráfego, monitoramento de integridade do container, configuração da aplicação com base no container em que ela será executada e proteção das interações entre os containers. Orquestração • As ferramentas de orquestração mais populares são: Kubernetes, Openshift e a Docker tem seus orquestradores próprios: o Docker Swarm e o Docker EE (Enterprise Edition). Ferramentas de Orquestração • Kubernetes(K8S) é um sistema open source de orquestração de containersque automatiza deploy, facilita o escalonamento e gerencia aplicações. Dentre as suas muitas características destaca-se a capacidade de trabalhar com atualizações diversas nas aplicações. Ele permite que se altere novos releases da aplicação com muito mais frequência e de forma automática. Com o Kubernetes é possível agendar a implantação de uma versão nova e se der problema reverter tudo de forma automática sem comprometer a disponibilidade da aplicação. Orquestração – Kubernetes • No Kubernetes, vários containers rodam em uma única aplicação balanceando de acordo com as requisições, na prática, uma aplicação pode aumentar rapidamente e exponencialmente a sua capacidade. Orquestração – Kubernetes • Vamos supor que você tenha projetado um sistema de vendas de ingressos para um dado festival de música. No começo das vendas as requisições de compras serão menores, mas a partir do momento em que se aproximar o dia do festival, as compras aumentarão vertiginosamente. • O Kubernetes cria e remove containers no cluster de forma programada. A partir do momento em que a aplicação requer mais recursos o orquestrador adicionará novos containers e os removerá quando não precisar mais deles. Orquestração – Kubernetes • Esse é um conceito conhecido como autoscaling (escalonamento automático) uma solução presente no Google Compute Engine (GCE), no Google Container Engine (GKE) e no Elastic Kubernetes Service (EKS) da AWS. Orquestração – Kubernetes • Com o Kubernetes é possível que se faça implantações e atualizações de forma rápida e a todo instante. Passar de um container para vários rapidamente, o que chamamos de escalonamento dinâmico. Também conta com uma busca de dispositivos e serviços de forma automática (Service Discovery), faz o balanceamento de carga e se associado a uma malha de serviço no cluster, como o Istio, pode interromper a comunicação entre front-end e back-end se uma falha for detectada no back-end. Orquestração – Kubernetes • Dentre os principais benefícios de se usar o kubernetes destaca-se a automatização de implantações e atualizações de aplicações, a facilidade para escalonar aplicativos em containers, a capacidade de operar containers em diferentes hosts, a otimização do uso do hardware, reduzindo custos e o suporte de carga para diversas aplicações. Orquestração – Kubernetes • OpenShift é uma plataforma de gerenciamento e orquestração de containers que faz monitoramento, automação, gera relatórios e integração com outras ferramentas. Foi desenvolvida pela Red Hat, uma empresa especialista neste mercado, que oferece também a versão Enterprise do produto, o Red Hat OpenShift Container Platform, que tem as mesmas funções só que para grande escala e maior segurança. Orquestração – Openshift • Dentre as suas características estão: desenvolvimento, hospedagem, escalonamento e entrega de aplicações ágeis na nuvem, redução de burocracia, criação de ambientes de testes, elevação do poder de processamento dos servidores da empresa, melhor aproveitamento dos recursos computacionais, redução de custos, flexibilidade aos sistemas. Orquestração – Openshift • O projeto Docker começou em meados 2008, Solomon Hykes fundou a dotCLoud. Em março de 2013 decidiram tornar o projeto Open Source e mudar o nome para Docker. A partir daí, quando desenvolvedores do mundo inteiro passaram a poder visualizar o código e contribuir com melhorias, fazer correções de bugs e lançar melhorias de forma colaborativa, foi quando o Docker ganhou força e se tornou quase que um sinônimo quando falamos de containers Orquestração – Docker • O Docker é uma das tecnologias mais conhecidas e usadas. É uma plataforma de código aberto que se destaca em implementações de isolamento de recursos e bibliotecas do Kernel em um container do sistema operacional em um único ambiente. Orquestração – Docker • O Docker é uma plataforma de implementação de containers que usa um esquema de camadas, montadas a partir das técnicas de Copy-On-Write. Que é um procedimento que permite compartilhar dados entre camadas, mas só é possível alocar um novo recurso a partir do momento em que esteja modificado. Na prática funciona assim: a cópia de um arquivo é mandada para uma camada superior, só são visualizadas as informações modificadas dessa camada, no entanto, o arquivo original permanece em uma camada inferior e pode ser visualizado caso se exclua a camada sobreposta. Orquestração – Docker • Docker Swarm, este orquestrador já vem instalado com o Docker e permite a construção de clusters de containers de forma nativa, usando balanceamento de carga e failover. • Você cria clusters facilmente indicando os hosts que serão supervisionados, quando criar um novo container, por conta do balanceamento de carga, ele direcionará ao host que possuir a menor carga. Orquestração – Docker Swarm • A estrutura se resume em um manager e diversos workers. O manager orquestra os containeres e distribui em hosts workers, os workers hospedam o container. • Docker Swarm é uma outra forma de orquestrar seus containers através da criação de um cluster com alta disponibilidade, balanceamento de carga e comunicação criptografada, tudo isso nativo, sem esforço e dificuldade. Orquestração – Docker Swarm • Docker EE (Enterprise Edition) atenderá melhor a demanda do mundo cooporativo com mais eficiência e velocidade. Isso acontece por conta da solução Docker Universal Control Plane (UCP), que auxiliar no gerenciamento de inúmeros clusters e aplicativos por meio de uma interface simples. Orquestração – Docker EE • Dentre as tarefas do Docker EE estão: análise das imagens nos repositórios para verificar se estão livres de vulnerabilidades, conecta os containers a volumes, administra a maneira com os containers se comunicam entre si e externamente, controla a autenticidade dos usuários, faz registros das imagens. Orquestração – Docker EE Infográfico – Segurança dos Containers • Embora exista a possibilidade de criar stacks com várias ferramentas de monitoramento, sua equipe também se preocupa com a segurança e quer conhecer soluções que monitorem os containers de forma satisfatória e tenha o critério de segurança como um ponto importante. • Pesquise e traga sugestões de ferramentas que auxiliem na segurança dos containers, mostre as vantagens das ferramentas. Descrição da Situação Problema • Em 2016, revelada a importância da segurança dos containers, houve uma mudança no longo do ciclo de vida de desenvolvimento do software, também conhecido como DevSecOps. A ideia é desenvolver a mentalidade de que todos são responsáveis pela segurança, com ações que devem garantir a velocidade e escala dos containers. O objetivo é construir containers seguros desde sua concepção, sem impactar o tempo de lançamento no mercado. Solução da Situação Problema • Dentre as várias opções pode se deparar com ferramentas como: • Dynatrace: supervisiona automaticamente e profundamente as infraestruturas, sobretudo, hiperescalares com o uso de inteligência artificial. Solução da Situação Problema • Qualys Cloud: Faz gerenciamento de risco e conformidade. • Sysdig Secure: Promete a segurança de containers, kubernetes e toda a infraestrutura de nuvens. • Lacework: fornece informações sobre os riscos em infraestruturas de nuvens, containers e kubernetes. Solução da Situação Problema • Threat Stack: segurança e conformidade em infraestrutura de nuvens. • CloudPassage Halo: automatiza segurança e conformidade para estruturas de nuvem híbrida. • StackRox: segurança em containers para detecção de ameaças e gerenciamento de vulnerabilidade. Solução da Situação Problema • Anchore: faz varredura, correção, conformidade e integração protegendo aplicativos em containers. Solução da Situação Problema Infraestrutura como Código • A transformação digital pressionou as empresas a encararem mudanças emsua infraestrutura. Passou-se a tratar a infraestrutura como código, o que possibilitou a redução de gastos e velocidade na entrega dos produtos. Um ambiente gerido de forma correta possibilita a testagem de softwares com mais facilidade e implantações estáveis e que podem ser reaproveitadas. Por conta dessa nova infraestrutura o monitoramento passou a ser mais complexo. Infraestrutura como Código • Diante do exposto é preciso entender as características desses ambientes e como prepará-los para um monitoramento eficiente. Essas mudanças impactaram tanto o hardware como o software. • Alguns fatores que impactaram o hardware com o software: Infraestrutura como Código • No hardware as infraestruturas modernas passaram a virtualizar as máquinas físicas, tendo reduções consideráveis com gastos na compra de equipamentos, com a infraestrutura de nuvem pública, passou-se a terceirizar a manutenção e o provisionamento de servidores e redes, um ganho de tempo incomparável com o que se tinha antes, quando precisava-se esperar semanas para um novo servidor ser provisionado para continuar um projeto e as plataformas de containers permitem o escalonamento, dão flexibilidade a infraestrutura para que sejam adicionados novos recursos conforme a necessidade dos negócios. Infraestrutura como Código • No software evidencia-se uma transição de construções monolíticas para o desmembramento em camadas, o que impulsionou arquiteturas orientadas por serviços (SOAs), tipo de design que permite que seus componentes sejam reutilizáveis através de uma interface de compartilhamento em rede. Infraestrutura como Código • As SOAs, por sua vez, evoluíram para serviços Web, arquiteturas orientadas por eventos e para os microsserviços. • Os microsserviços dominam as estratégias de implementação para aplicações no mercado de desenvolvimento de software atualmente. Infraestrutura como Código • Um outro comportamento que a tecnologia digital trouxe para a forma como tratamos o software é a possibilidade de comercializá-lo como um serviço Web. Esses serviços são conhecidos como SaaS, ou seja são aplicações que oferecem uma maneira via internet para o consumo de um determinado software com pagamentos, geralmente de mensalidades. Infraestrutura como Código • Com essa abordagem o usuário usa as funcionalidades de um sistema com fins específicos não precisando se preocupar com instalações, infraestrutura para a execução, atualizações e manutenções. Infraestrutura como Código • Todas essas características tornam um ambiente de implantação atual bem dinâmico e vários aspectos precisam ser considerados. Então é preciso que se tenha uma ideia se a infraestrutura é um datacenter local, uma infraestrutura de nuvem pública ou uma combinação híbrida, saber se é usada uma orquestração de containers, como o Kubernetes, por exemplo, identificar se as aplicações serão executadas em containers, VMS ou bare metal (servidor de computador físico), identificar os componentes externos, como banco de dados e ter gerenciamento de nossas próprias aplicações. Infraestrutura como Código • Esses aspectos reforçam a necessidade do monitoramento já que cada componente desse gera vários dados de logs, métricas e APM. • Os endpoints de métricas dos containers não são estáticos. O uso de um serviço Kubernetes não forneceria endpoints eficientes, pois é necessário estatísticas mais concentradas em containers separados, em vez de agrupados. Métricas de Integridade • O Prometheus é uma ferramenta que se adequa bem a essa realidade, muito usado em monitoramento de microsserviços, inclui componentes para coleta e exibição de métricas, bibliotecas de instrumentação, com o Prometheus JMX Exporter, por exemplo, é possível se conectar ao sistema de coleta de métricas nativo do Java, O Java Management Extensions (JMX) e converte-las em um formato que o Prometheus possa entender. Métricas de Integridade • Um outro problema de monitoramento de containers são as verificações de integridade, os endpoints de integridade implantados de maneira tradicional costumam ter endereços de rede estáticos, quando que os containers são programados para execuções dinâmicas nos nós. • Uma solução poderia ser o Kubernetes, que monitora todos os containers no cluster e responde as verificações de integridade implantadas, excluindo e reiniciando os pods. Métricas de Integridade • Pode-se precisar de uma verificação de integridade que detalhe melhor o status de todos os componentes e conexões para a aplicação. Nesse caso, uma solução como o Sping Boot Actuator pode ser usada. Esse tipo de verificação de integridade mais detalhado é muito recomendado para aplicações em containers, isso porque o Sping Boot Actuator é uma biblioteca de verificação de integridade que sonda as aplicações Spring e aponta o status do ambiente de execução de cada componente encontrado. É importante frisar que essa ferramenta é usada apenas em aplicações escritas na linguagem Java. Métricas de Integridade Infraestrutura Ágil em Cloud • Atividades do nosso dia-a-dia como assistir filmes por meio de streamings, pedir um carro para se deslocar na cidade, pagar uma conta através de um aplicativo, postar fotos nas redes sociais são processos feitos nas nuvens. • Além dessas tarefas cotidianas, o emprego das nuvens pode facilitar nosso trabalho como desenvolvedor de softwares. Infraestrutura Ágil em Cloud • Cientes da importância dos containers nas infraestruturas ágeis e do monitoramento de suas aplicações, o Cloud Computing apoia os desenvolvedores fazendo uso dos recursos de provisionamento e automatizações escalonáveis. Infraestrutura Ágil em Cloud • Como podem caminhar junto os conceitos de Cloud Computing e DevOps? • O DevOps está ligado a pessoas e processos e a Cloud aos recursos disponíveis para facilitar as práticas. Infraestrutura Ágil em Cloud • Muitos processos usados em DevOps mesclam ferramentas de nuvens públicas com ferramentas locais, mas é possível usar toda a infraestrutura das nuvens para implementação de aplicações diretamente na rede, fazendo jus de Plataformas PaaS. Infraestrutura Ágil em Cloud • Esses entendimentos farão com que você tenha conhecimento das melhores práticas e ferramentas para operar em ambientes Cloud e desenvolver de forma ágil suas aplicações. Infraestrutura Ágil em Cloud • A infraestrutura Cloud Computing (computação em nuvens) é uma realidade nos sistemas computacionais. Tem como principal característica evitar a dependência de um único recurso de hardware (que pode ficar obsoleto), facilitando a prospecção de recursos computacionais que podem ser acessados de forma online através da Internet. Infraestrutura Ágil em Cloud • A Computação em Nuvens surge a partir dos estudos sobre virtualização de servidores, softwares orientados a serviços, gestões de grandes instalações como Data Centers. • Esse modelo eficaz utiliza-se de softwares, acessos, armazenamentos e processos de dados em meio a diferentes dispositivos e tecnologias Web. Infraestrutura Ágil em Cloud • A Computação em Nuvens traz diversos benefícios: a redução de custos, maior produtividade, competitividade, mobilidade, disponibilidade e escalabilidade. Essas são também características das infraestruturas ágeis. Infraestrutura Ágil em Cloud • Gradativamente as grandes empresas passam a substituir os seus servidores on-premises (instalações próprias das empresas) e suas infraestruturas físicas por nuvens públicas e privadas. • Os softwares de aplicações monolíticas passam a ser baseados em microsserviços. Usando a nuvem para facilitar as atualizações diárias ou semanais e melhorar a entrega. Infraestrutura Ágil em Cloud • Os serviços de computação na nuvem são divididos em três classes, que levam em consideração o nível de abstração do recurso provido e o modelo de serviço do provedor. • As três classes de serviçosão: o Infraestrutura como Serviço (IaaS), camada inferior; o Plataforma como Serviço (PaaS), camada intermediária; o Software como Serviço (SaaS), camada superior. Infraestrutura Ágil em Cloud • Infraestrutura como um serviço IasS é um modelo onde as partes referentes aos servidores, processamentos e memórias são oferecidas por um provedor que possibilita ao cliente um mecanismo de virtualização, onde o mesmo tem controle sobre máquinas virtuais, armazenamento, aplicações instaladas e um controle limitado dos recursos de rede. Assim o usuário não precisa adquirir hardware e softwares básicos, ele passa a usar uma infraestrutura virtualizada para desenvolver suas aplicações pagando como se fosse um serviço. Infraestrutura Ágil em Cloud • Plataforma como Serviço (PaaS) é uma plataforma que possibilita o uso de ferramentas de desenvolvimento de softwares que são oferecidos por um provedor de serviços. Utilizando a Internet como meio de acesso, os desenvolvedores criam aplicações e armazenam dados de forma compartilhada através de uma plataforma. Infraestrutura Ágil em Cloud • Software como Serviço (SaaS) é a classe mais comum. Nesse modelo o usuário usa todas as funcionalidades de um sistema de forma remota sem a necessidade de instalação, ambiente para execução, manutenção e upgrades. A aplicação completa é ofertada e acessível ao cliente por um determinado preço. Infraestrutura Ágil em Cloud • Além das classes é importante enfatizar que as nuvens podem ser classificadas em privadas quando opera para uma única instituição, comunitária, ou seja, pode ser dividida entre várias organizações e pública é de responsabilidade de uma organização que vende os serviços, mas é disponível para o público e híbrida, quando usa mais de um tipo de nuvem. Infraestrutura Ágil em Cloud Infraestrutura em PaaS • As PaaS são uma estratégia muito usada no desenvolvimento ágil de softwares. A economia com as abstrações de SO, o uso middleware (softwares que fornecem serviços e recursos comuns em aplicações) e Data Centers, trazem agilidade e possibilitam uma modernização nos trabalhos desenvolvidos. • Usa uma plataforma como serviço (PaaS) quando quer desenvolver e rodar a sua aplicação na Internet, no Cloud, sem se preocupar com infraestrutura, servidores, instalações de softwares, linguagem, bibliotecas. Infraestrutura em PaaS • Além da estrutura de desenvolvimento onde o desenvolvedor pode compilar, desenvolver e personalizar aplicações baseadas nas nuvens, a outra vantagem é poder usar os recursos das nuvens como escalabilidade, disponibilidade, redução de codificação. Um outro uso muito comum de PaaS é a análise ou business intelligence, ou seja, algumas plataformas permitem análise e mineração de dados. Infraestrutura em PaaS • As vantagens do PaaS temos a redução do tempo de codificação, já que existem componentes pré-codificados que podem ser inseridos no projeto, facilita o desenvolvimento em diferentes plataformas, permite ao usuário o uso de ferramentas sofisticadas, facilita o trabalho remoto já que tudo é feito na Internet e gerencia o ciclo de vida do aplicativo dando suporte a todas as fases do desenvolvimento. Infraestrutura em PaaS • Um exemplo bem conhecido de PaaS é a Heroku, uma plataforma baseada em containers gerenciados, com serviços de dados integrados e um poderoso ambiente para implantações e execuções de aplicativos modernos. • Os desenvolvedores podem implantar códigos inscritos em Java, PHP, Python em um sistema de construção próprio para execução. Infraestrutura em PaaS • Usam ferramentas como Git, GitHub ou sistemas de integração contínua (CI) para gerenciamento da aplicação e maior visibilidade do desempenho e dispõem de complementos que são serviços de nuvens de terceiros que aprimoram ainda mais os trabalhos dos desenvolvedores. Infraestrutura em PaaS • Um outro exemplo é o serviço PaaS do Google Cloud Platform: O App Engine. • Ele tem como principal objetivo permitir a publicação de aplicativos com o mínimo de configuração possível. Infraestrutura em PaaS • O desenvolvedor escolhe o conjunto de ferramentas necessárias para a aplicação rodar em uma linguagem específica de programação que pode ser: PHP, Java, Python, e o App Engine cuida do ambiente onde o software rodará, da segurança, de manter um sistema operacional e hardware onde o serviço será alocado. Infraestrutura em PaaS • O OpenShift é uma plataforma de aplicações em container da Red Hat que disponibiliza um sistema operacional Linux para empresas, um ambiente de execução em container, rede, monitoramento, registros e soluções de autenticação e autorização. • É possível automatizar o ciclo das aplicações com segurança, personalização e portabilidade, otimizar as entregas e oferece suporte, consultoria e treinamento. Infraestrutura em PaaS • Outros exemplos de ofertas corporativas de PaaS são: Amazon Elastic Beanstalk, Plataforma Salesforce1, IBM Bluemix, Plataforma de nuvem da Oracle, Websites Windows Azure e Getup. Infraestrutura em PaaS • O PaaS da Amazon, o Elastic Compute Coud (Amazon EC2) usa um o Amazon Auto Scaling para oferecer computação escalável, eliminando a necessidade de investir inicialmente em hardware e oferecendo uma plataforma para desenvolvimento e implantação de aplicativos com rapidez. • Através do Amazon Auto Scaling as disponibilidades da aplicação são mantidas e pode-se fazer adição e remoção de instâncias automaticamente de acordo com condições pré- definidas. Infraestrutura em PaaS • Podendo também usar os recursos de escalabilidade dinâmica que respondem às mudanças de acordo a demanda ou escalabilidade preditiva onde é possível agendar o número certo de instâncias com base na demanda prevista. Infraestrutura em PaaS • Um outro exemplo de ferramenta de escalonamento automático é o Autoescala do Azure. O dimensionamento automático da Azure ajuda no desempenho das aplicações de acordo com a demanda. O escalonamento pode ser definido por métricas personalizadas, com autoescala agendada, pagando apenas pelas máquinas virtuais que estão sendo usadas, além de monitorar as métricas-chave de desempenho e alertá-lo. Infraestrutura em PaaS • O Heroku usa um recurso de containers, o Dyno, para executar e dimensionar aplicativos. Com base nos requisitos dos usuários os aplicativos são escalonados para aumentar um número específico de Dynos. O uso dos containers facilita o gerenciamento de tamanho, tipo e número de dinamômetro. Infraestrutura em PaaS • O Google Cloud Platform usa o Cloud Monitoring para monitorar métricas dos grupos de instâncias do Compute Engine, essas métricas personalizadas são usadas para escalonar o grupo de instâncias de acordo com os requisitos do usuário. Infraestrutura em PaaS • O Openshift usa um complemento, o cluster-autoscaler, para redimensionar os pools (recurso de expansão para um cluster) com base nas necessidades de dimensionamento de suas cargas de trabalho programadas. • Ele usa Pods pendentes para escalonamento vertical e percebe os nós que estão subutilizados para redução de nós de trabalho. Infraestrutura em PaaS Infográfico – Escalonamento • Embora o escalonamento de modo reativo esteja funcionando, você percebeu atrasos, com longos tempos de inicialização em sua aplicação e percebeu que isso sempre ocorre em um determinado período ao longo do dia. Qual solução poderia usar para otimizar a sua aplicação de posse dessa constatação? Descrição da Situação Problema • O escalonamento automático é feito de maneira reativa, ou seja, com base nas alterações da carga de trabalho instâncias são aumentadas ou diminuídas. • Mas caso tenha observado que em um determinado período do dia, sempre no mesmo horário ou dia, existe uma demanda maior de requisitos do serviço e os clientes enfrentam problemas de espera para a atualização e você pode configurar o escalonamentode forma preditiva. Solução da Situação Problema • Com base em históricos do grupo de instâncias gerenciadas, é possível saber em qual período o uso da CPU é mais sobrecarregado (esse tipo de escalonamento só trabalha com métricas do uso da CPU). • Definindo um escalonamento preditivo é feito um escalonamento horizontal das instâncias antes da carga chegar. Solução da Situação Problema • A análise preditiva inclui uma variedade de técnicas estatísticas que analisam fatos atuais e históricos para fazer previsões sobre o futuro. Com a ajuda de ferramentas sofisticadas, as organizações podem usar dados históricos e atuais para prever com precisão as tendências e os comportamentos nos próximos segundos, dias ou anos. Solução da Situação Problema Recapitulando Recapitulando • Infraestrutura de Containers; • Monitoramento de Containers; • Ferramentas de Orquestração; • Infraestrutura como Código; • Infraestrutura Ágil em Cloud; • Infraestrutura em PaaS. Siga em frente e bons estudos! Obrigada!
Compartilhar