Especialistas em tecnologia têm elogiado o Kubernetes e seus benefícios empresariais já faz algum tempo. A tecnologia é aberta por padrão e, em função disso, oferece às organizações a capacidade de colocar seus aplicativos em containers nas mais variadas situações – um recurso essencial para o número crescente de empresas que operam suas infraestruturas na nuvem.
Mas não são apenas os especialistas em tecnologia que estão começando a ver o valor do Kubernetes: o Gartner estima que 70% das organizações globais estarão executando mais de dois aplicativos em containers até 2023. Com os aplicativos rodando em containers, as organizações passam a se dar conta dos benefícios de uma configuração mais fácil, deploy mais ágil e de software mais eficiente e confiável.
É a capacidade exclusiva do Kubernetes de escalonar e gerenciar aplicativos em containers, no entanto, que o torna a melhor escolha em relação às máquinas virtuais e outros softwares de provisionamento para aumentar a eficiência e agregar valor aos negócios.
Por dentro da solução
O Kubernetes tem um histórico de entrega de potencial para os negócios. Um estudo recente da VMware mostra que 95% dos participantes observaram os benefícios do Kubernetes, incluindo 56% que viram uma melhor utilização de recursos, o que significa custos reduzidos de recursos de computação em nuvem privada ou pública. Outros 33% dos entrevistados disseram que o Kubernetes oferece custos mais baixos de nuvem pública, pois é mais ágil que outras alternativas disponíveis no mercado.
As máquinas virtuais (VMs), por exemplo, consomem muitos recursos do sistema, com cópias do software que provisionam e um sistema operacional convidado. E as VMs são relativamente estáticas, por isso é difícil movê-las entre servidores locais, nuvens privadas ou nuvem pública.
No entanto, um aplicativo de software em container é executado em um sistema operacional externo, eliminando a quantidade de recursos de computação necessários para executar os vários sistemas operacionais convidados. Um container também possui ferramentas centrais para gerenciar como os aplicativos usam os recursos do servidor, o que, junto com o fato de que não há mais vários sistemas operacionais para gerenciar, reduz a sobrecarga administrativa da aplicação.
Os aplicativos em containers com Kubernetes iniciam mais rápido do que aqueles em uma máquina virtual – milissegundos em vez de minutos – o que é significativo em termos de envolvimento do usuário e eficiência de tempo. Além disso, sua capacidade de escalar rapidamente oferece ao Kubernetes uma vantagem competitiva, pois os especialistas em Produto buscam um software ágil que possa responder às demandas imprevisíveis do mercado.
No entanto, as implantações on-premises ainda têm seu lugar nas organizações, que precisam ser capazes de alternar entre a nuvem pública, a nuvem privada ou on-premises, bem como lidar com demandas de pico. Aplicativos criados com o Kubernetes facilitam todo o processo.
O Kubernetes pode ajudar na orquestração de containers em diversos tipos de ambientes, incluindo hospedagem de software na nuvem de um fornecedor ou mesmo em um ambiente híbrido. Isso permite que as empresas deixem de lado a sobrecarga da complexidade da implantação. Funções que podem ser melhor mantidas fechadas devido a requisitos regulatórios podem ser executadas localmente ou onde for mais prático para o cliente. Graças ao Kubernetes, diferentes partes da aplicação podem ser executadas em servidores separados – local, nuvem privada, nuvem pública – tudo depende do que mais faz sentido para o usuário final.
Suporte aos 9 pilares do Site Reliability Engineering (SRE)
O SRE blueprint do DevOps Institute identifica 9 pilares nas boas práticas de Engenharia de Produtos.
Seus significados:
Liderança e Cultura
Refere-se aos aspectos humanos da busca por serviços confiáveis à medida que eles se expandem, mudando a mentalidade de “sabedoria de produção” das Operações para o desenvolvimento e a busca incessante de melhorias contínuas. Isso porque as práticas SRE fomentam uma cultura de melhoria contínua dos serviços e sistemas que apoiam a produção, para garantir que os serviços continuem sendo confiáveis à medida que escalam com o passar do tempo. Os recursos do Kubernetes apoiam essa cultura de transformação e motivam todos os tipos de interessados.
O Kubernetes ajuda líderes de negócios a capacitar as organizações – cujo sucesso depende cada vez mais da capacidade de fornecer serviços digitais e de software rapidamente – a alcançar o desempenho de próximo nível, e a fornecer novos software e recursos inovadores com maior rapidez, além de possibilitar operações em várias nuvens para maior agilidade e resiliência.
As infraestruturas de autoatendimento habilitadas por containers e Kubernetes permitem que as equipes acessem os recursos de que precisam quando precisam. Isso resulta em equipes mais produtivas e felizes, com menos impedimentos e velocidade mais rápida para implantar, colaborar, obter feedback e restaurar serviços quando necessário.
Compartilhamento de trabalho
Refere-se à prática de trabalhar a dívida técnica em pequenos incrementos e gerenciar percentuais de carga de trabalho para Ops, Devs e trabalho emergenciais. Os SREs trabalham de forma deliberada e proativa para educar e facilitar os pontos de vista e requisitos de operações no conhecimento e nas atividades da equipe de desenvolvimento de serviços. A “sabedoria de produção” requer um melhor design e comportamento do sistema.
Para conseguir isso, os SREs gastam uma quantidade considerável de seu tempo (digamos, 50%) fazendo trabalho relacionado a operações, como resolução de problemas, enquanto os outros 50% vão para tarefas de desenvolvimento, como a criação de novos recursos, dimensionamento ou automação. A capacidade do Kubernetes de ativar várias instâncias de container com diferentes políticas de escalonamento o torna perfeito para trabalhos e atividades DevOps CI/CD. Por exemplo, uma instância de container pode incluir recursos de construção e teste, além de aplicativos, para criar clusters sob demanda em um CI worker node com capacidade de container.
Medições
Refere-se às práticas de uso de Observabilidade, Monitoramento, Telemetria e instrumentação para medir o desempenho das aplicações. As aplicações empresariais modernas requerem muitos aplicativos de microsserviços distribuídos em vários nós para se comunicarem uns com os outros. Um único ponto de falha pode interromper todo o processo; identificar a origem da falha, no entando, pode ser bastante difícil.
O monitoramento do Kubernetes é mais fácil quando os containers disponibilizam os dados de monitoramento. Os aplicativos nativos da nuvem são construídos com métricas de relatórios de integridade para permitir que a plataforma gerencie eventos de ciclo de vida se uma instância não estiver funcionando adequadamente.
Eles produzem (e disponibilizam para exportação) dados robustos de telemetria para alertar os operadores sobre problemas e permitir que tomem decisões bem informadas.
O Kubernetes oferece suporte a exames de atividade que facilitam determinar o estado de uma aplicação em um container. Também é sempre bom lembrar que o Kubernetes se integra bem com ferramentas de monitoramento, como Prometheus e Grafana, para criar um painel de monitoramento do Kubernetes.
SLOs e SLIs x Error Budgets
Refere-se às práticas de uso de Service Level Objectives (SLOs) e Service Level Indicators (SLIs) para medir disponibilidade, latência e tempo de resposta, juntamente com error budgets para gerenciar a confiabilidade dos serviços. O monitoramento em nível de aplicação é o recomendado para SLOs, devido ao seu link direto para a relevância do cliente em comparação com o monitoramento em nível de sistema.
Em ambientes complexos, com serviços que dependem da Reliability de muitos microsserviços em containers, SLOs e SLIs dependem de uma compreensão clara dos elementos que contribuem para as medições. O Kubernetes fornece uma descrição consistente de deploys de containers em grande escala, o que permite uma arquitetura estruturada para injetar SLIs em todos os tipos de plataformas de implantação.
Redução de trabalho sem valor agregado
Refere-se à prática de redução do trabalho sem valor agregado aplicando o ferramental adequado e a automação. O Kubernetes elimina muito do provisionamento manual e de outras tarefas das operações de TI de uma empresa. Além disso, as abordagens de orquestração unificada e automatizada oferecidas pelo Kubernetes simplificam o gerenciamento de várias nuvens, permitindo que mais serviços sejam fornecidos com menos trabalho e menos erros.
A portabilidade do gerenciamento da aplicação e da orquestração em plataformas de nuvem privada e pública e de versões de sistema operacional permite que desenvolvedores e equipes DevOps criem aplicativos e pipelines sem se preocupar com a infraestrutura subjacente e os sistemas operacionais que as aplicações precisam para serem executadas.
Gerenciamento de desempenho
Refere-se a práticas para monitoramento de desempenho de aplicações, teste de capacidade e escalonamento automático. O Kubernetes pode dimensionar facilmente a infraestrutura e as configurações de nós de trabalho para corresponder às demandas variáveis de diferentes níveis de integração, bem como testar as demandas de carga de trabalho. Os recursos de infraestrutura ficam agrupados e podem ser consumidos e liberados de forma elástica, permitindo um dimensionamento perfeito e uma maior utilização de recursos.
Gerenciamento de Incidentes
Refere-se a práticas de resposta a emergências e gerenciamento de cargas de trabalho on-call para SREs (por exemplo, 25%). O Kubernetes oferece suporte a esse pilar SRE com recursos para criar, validar e gerenciar clusters a partir de um terminal single user. Visibilidade remota, verificações de integridade (health-checks) e alertas de pods e clusters auxiliam no suporte on-call. Os SREs podem atualizar a pilha do Kubernetes junto com diferentes frameworks usados na configuração e aplicar patches aos clusters.
Antifragilidade
Refere-se a práticas de melhoria da Resiliência por meio de chaos engineering, segurança e automação. Aplicações complexas operando em infraestruturas distribuídas complexas podem ser difíceis de manter e proteger. Ferramentas nativas da nuvem, como é o caso do Kubernetes, fornecem mais informações sobre o que está acontecendo em uma aplicação, tornando mais fácil identificar e corrigir problemas e “apagar incêndios”, sejam eles quais forem.
O Kubernetes reiniciará pods que não são íntegros. Os controles aprimorados de orquestração fornecidos na implantação e nos aplicativos em containers se beneficiam da consistência imutável e de tempos de resposta melhorados. Os secrets objects do Kubernetes também oferecem uma maneira segura de armazenar dados confidenciais. O Kubernetes habilita serviços distribuídos modulares com melhor escalonamento e recuperação de falhas.
Com informações de Container Journal
Caso queira avaliar uma possível migração para Kubernetes ou de fato migrar, conte com nossos serviços profissionais.