Glossário da Nutanix

O que são tecnologias "cloud native", containers e Kubernetes?

O que significa ser "cloud native"?

O termo "cloud native" (nativo da nuvem, em tradução livre) tornou-se onipresente e é usado em diversos contextos conforme as empresas experimentam grandes projetos de transformação digital em busca de maior agilidade, escalabilidade e eficiência nos negócios.

Mas qual é o seu real significado? Resumindo, "cloud native" implica em um novo grau de abstração de software, associado a um conjunto de ferramentas, tecnologias e processos dedicados que mudam a forma como as aplicações podem ser construídas, implementadas e gerenciadas.

As principais características das aplicações cloud native incluem:

  1. Código agrupado como containers
  2. Arquitetura em conjuntos de microsserviços
  3. Desenvolvedores e Operações de TI trabalham juntos de forma ágil e firmemente integrada
  4. Implementação e gerenciamento em infraestrutura de nuvem flexível
  5. Alocação de recursos de infraestrutura automatizada e orientada por políticas

Vantagens do cloud native para empresas

Ao embarcar em suas jornadas cloud native, as empresas estão adotando containers e Kubernetes, junto com diversas tecnologias de código aberto e comerciais de um ecossistema cloud native em expansão.

Containers e tecnologias cloud native permitem que as empresas acelerem o desenvolvimento de aplicações, façam upgrade sem interromper, escalem com eficiência e portem aplicações entre diferentes ambientes com facilidade. Esses recursos se traduzem em maior agilidade comercial e vantagem competitiva.

Os containers resolvem alguns problemas críticos para as empresas. Funcionam em qualquer lugar, fornecem um pacote robusto de software para desenvolvedores, com upgrades de serviços, escalabilidade, disponibilidade e eficiência de recursos independentes de fornecedor.  O Kubernetes proporciona uma camada de infraestrutura que a TI pode operar em escala de forma programática e repetível, ao contrário de uma gestão mais "mão na massa", típica das empresas.  Como o Kubernetes pode ser implementado no local e na nuvem pública, ele proporciona um modelo operacional comum a todos os ambientes.  Isto faz do Kubernetes uma plataforma ideal para empresas que operam em ambos.

Arquitetura cloud native

A arquitetura cloud native utiliza containers e Kubernetes para construir aplicações em forma de conjuntos de peças menores e combináveis que escalam com eficiência, realizam upgrades não-disruptivos e migram facilmente para outros ambientes. Essa tecnologia é bastante econômica, oferece mais segurança e uma automação flexível.

A pilha local de Kubernetes

Vamos explorar as diferentes camadas da pilha local de Kubernetes, desde a infraestrutura onde o Kubernetes é executado até os serviços executados no Kubernetes e que os desenvolvedores podem aproveitar para acelerar a entrega de aplicações.  Observe que alguns componentes podem ser incluídos em várias partes da pilha.  Por exemplo, uma distribuição de Kubernetes pode incluir um registro de contêineres, como Harbor ou Quay.  Como alternativa, pode ser oferecido um registro de contêineres como serviço hospedado ou gerenciado para uso em qualquer distribuição.

Plataforma de processamento

O Kubernetes é muito flexível quanto ao local onde pode ser implementado e a inovação está expandindo as opções de como e onde podemos operar o Kubernetes.  No geral, o Kubernetes requer um mínimo de 3 nós com total conectividade de rede entre eles e armazenamento conectado.  Hoje em dia, o Kubernetes é mais comumente executado em infraestruturas virtuais, como a VMware.  Bare Metal e HCI são outras duas opções comuns.

Capacidades extras podem facilitar o provisionamento e a operação de um cluster Kubernetes. As infraestruturas controladas por API ( por exemplo, Cluster API, Terraform, etc.) facilitam o provisionamento e a conexão de novos nós.  Os hipervisores personalizados podem oferecer isolamento dos workloads para sanar as falhas de segurança nos contêineres.  Um balanceador de carga fora do cluster Kubernetes é útil para manter os workloads disponíveis, escalar e realocá-los dinamicamente. Alguns workloads podem se beneficiar de hardware personalizado, como GPUs e TPUs. Se vários clusters forem operados em diversos locais diferentes (como em lojas de varejo, por exemplo) uma capacidade de gerenciamento distribuído para a infraestrutura subjacente seria muito útil.

Distribuições de Kubernetes

Com o grande crescimento do Kubernetes desde seu lançamento em 2015, há mais de 100 distribuições de Kubernetes e plataformas hospedadas tanto de gigantes tecnológicas quanto de startups.  Estas empresas combinam o código central do Kubernetes com outros projetos, como pilhas de rede, ferramentas de gerenciamento de cluster, registro, monitoramento, entre outros, para criar uma distribuição.

Serviços de container

Para ser útil, um ambiente Kubernetes requer, além do próprio Kubernetes, serviços adicionais de infraestrutura. Às vezes, eles são agrupados com distribuições ou são adicionados como serviços individualmente, incluindo alguns recursos básicos como registro de contêineres, entrada, balanceador de carga, repositório de segredos, gerenciador de certificados, entre outros.

Considerando que cada vez mais empresas desenvolvem e implementam aplicações no Kubernetes, há muitos serviços essenciais dos quais elas dependem que geralmente também são executados no Kubernetes.  É o caso dos bancos de dados (por exemplo, Redis, Postgres), Pub Sub (Kafka), Indexação (ElasticSearch), serviços CI/CD (Gitlab, Jenkins) e armazenamento (Portworx, MayaData, Minio, Red Hat).

Muitas empresas desenvolveram ofertas para gerenciar ou dar suporte a essas aplicações que são executadas na distribuição de Kubernetes escolhida pelo cliente. Provavelmente, o mais notável é o Azure Arc Data Services da Microsoft, que oferece o Postgres e o MS SQL como serviços gerenciados em ambientes de clientes. Mas há muitos outros, incluindo o Confluent para Kafka, o Crunchy Data para Postgres, o Redis Enterprise para Redis, Percona, Elasticsearch, Minio, Mayadata etc.

Containers

Os containers são a unidade atômica do software cloud native. Um container é composto por um pedaço de código empacotado com todas as suas dependências (binários, bibliotecas etc.) e é executado como um processo individual. Isto gera um novo nível de abstração. Assim como a máquina virtual (VM) abstrai os recursos de processamento do hardware subjacente, um container abstrai uma aplicação do sistema operacional (SO) subjacente.

Os containers são diferentes das máquinas virtuais em vários aspectos importantes. Eles consomem menos recursos, são criados mais rapidamente e é muito mais fácil fazer sua portabilidade entre nuvens. Ao contrário das VMs, os contêineres são efêmeros por natureza.

Os containers são o caminho para uma arquitetura de software de microsserviços. Enquanto as aplicações tradicionais são monolíticas por natureza, as aplicações baseadas em microsserviços são construídas como conjuntos de peças (serviços) menores e combináveis que podem ser dimensionadas de forma independente e permitem a realização de upgrades sem interrupções. Um serviço é composto por um ou mais contêineres que desempenham uma função comum.

As aplicações baseadas em microsserviços/conteinerizadas permitem práticas de desenvolvimento de software mais simples e aceleradas, que requerem coordenação e integração mais estreita entre os desenvolvedores e as operações de TI, as chamadas DevOps.

Virtual Machines (VMs) vs containers

Figura 1: Comparando VMs e containers

Kubernetes

Como as aplicações conteinerizadas se prestam a ambientes distribuídos e utilizam os recursos de processamento, armazenamento e rede de forma diferente das aplicações tradicionais, elas precisam de uma camada de infraestrutura dedicada para orquestração de workloads conteinerizados.

O Kubernetes se tornou o orquestrador de containers dominante e costuma ser chamado de sistema operacional da nuvem. Se trata de uma plataforma de código aberto portátil e extensível e de código aberto para gerenciamento de serviços e workloads conteinerizados, capaz de facilitar tanto a programação declarativa quanto a automação.

Especificamente, o Kubernetes:

  • designa containers a máquinas (programação)

  • inicia os containers especificados por meio do tempo de execução do contêiner

  • lida com upgrades, reversões e a constante mudança da natureza do sistema

  • responde a falhas (falhas de containers etc.)

  • cria recursos de cluster como descoberta de serviços, redes inter-VM, entrada/saída de cluster etc.

O Kubernetes é projetado para escalabilidade, disponibilidade, segurança e portabilidade. Ele otimiza o custo da infraestrutura, distribuindo os workloads pelos recursos disponíveis. Cada componente de um cluster Kubernetes também pode ser configurado para alta disponibilidade.

A funcionalidade do Kubernetes evolui rapidamente como resultado das contribuições contínuas de sua ativa comunidade global, e hoje existem diversas distribuições de Kubernetes disponíveis para os usuários. Embora as distribuições com certificação CNCF sejam a escolha ideal (a conformidade permite a interoperabilidade), a automação inteligente dos recursos de gerenciamento do ciclo de vida do Kubernetes, aliada à fácil integração de recursos de armazenamento, rede, segurança e monitoramento, é fundamental para ambientes cloud native com nível de produção.

Desafios da jornada cloud native

As tecnologias cloud native são a nova moeda da inovação e agilidade empresarial, mas sua configuração, implementação e gestão representam um desafio para empresas de todos os setores. Em primeiro lugar, o Kubernetes e seu ecossistema de tecnologias cloud native são profundos e evoluem rapidamente. Além disso, a infraestrutura tradicional não é projetada para a forma que o Kubernetes e os contêineres utilizam os recursos de TI. Isso é um grande obstáculo para os desenvolvedores de software, que geralmente precisam de recursos sob demanda e serviços fáceis de usar para suas aplicações nativas da nuvem. Por fim, as empresas acabam implementando um mix de ambientes Kubernetes baseados em nuvens públicas e locais, mas para aproveitar a flexibilidade da multicloud, elas precisam conseguir gerenciar e monitorar todas as implementações com eficiência.

Práticas recomendadas de cloud native

A construção de uma pilha de Kubernetes corporativa no data center não é uma tarefa fácil para as equipes de operações de TI. É essencial executar o Kubernetes e as aplicações conteinerizadas em infraestruturas resilientes que possam ser dimensionadas de forma reativa para dar suporte a um sistema dinâmico e distribuído.

A infraestrutura hiperconvergente da Nutanix (Nutanix HCI) é a base de infraestrutura ideal para workloads cloud native executados no Kubernetes em escala. Ela oferece mais resiliência tanto para os componentes da plataforma Kubernetes quanto para os dados de aplicações e escalabilidade superior para a infraestrutura bare metal. A Nutanix também simplifica o gerenciamento do ciclo de vida da infraestrutura e o armazenamento persistente para contêineres stateful, eliminando alguns dos principais desafios enfrentados pelas empresas durante a implementação e o gerenciamento de uma infraestrutura cloud native.

Produtos e soluções relacionados

Nutanix Kubernetes Engine

Acelere sua adoção do Kubernetes pronto para produção e simplifique seu gerenciamento do ciclo de vida.

HCI para Kubernetes

O Nutanix HCI é a base de infraestrutura ideal para Kubernetes e aplicações nativas da nuvem.

Kubernetes de nuvem híbrida

Através de parcerias com Red Hat, Google Cloud e Microsoft Azure, a Nutanix oferece um caminho rápido e confiável para o Kubernetes de nuvem híbrida.

Armazenamento persistente para aplicações nativas da nuvem

Os serviços de dados e CSI da Nutanix ampliam a simplicidade para configurar e gerenciar o armazenamento persistente no Kubernetes.

Explore os nossos principais recursos

Test Drive da Nutanix

Faça um Test Drive do Nutanix Kubernetes Engine

Construa a melhor pilha de multicloud híbrida com Red Hat e Nutanix

7 maneiras de simplificar o gerenciamento do ciclo de vida do Kubernetes

Introdução à infraestrutura hiperconvergente (HCI)

Comece a usar a Nutanix hoje