O que é cloud native? A maneira moderna de desenvolver software

Computação nativa em nuvem tira proveito de muitas técnicas modernas, incluindo microsserviços, contêineres, CI/CD, metodologias ágeis e devops

Author Photo
6:01 pm - 19 de agosto de 2021
cloud native

O termo cloud native ou computação nativa na nuvem surgiu como um termo geral para as várias ferramentas e técnicas exigidas pelos desenvolvedores de software para construir, implantar e manter aplicativos de software modernos na infraestrutura em nuvem. Aqui, definimos o termo, pesquisamos a paisagem nativa da nuvem e identificamos algumas das vantagens e armadilhas de se tornar um nativo da nuvem.

O que define o cloud native?

Nativo da nuvem é uma abordagem moderna para construir e executar aplicativos de software que explora a flexibilidade, escalabilidade e resiliência da computação em nuvem. Nativo da nuvem engloba as várias ferramentas e técnicas usadas pelos desenvolvedores de software hoje para construir aplicativos para a nuvem pública, em oposição às arquiteturas tradicionais adequadas para um data center local.

A abordagem cloud native para criar e executar software foi iniciada por um grupo de empresas comumente chamadas de “nascidas na nuvem” – como os gigantes de streaming Netflix e Spotify, Uber e o Airbnb. A abordagem nativa da nuvem já foi adotada por outras empresas que buscam agilidade digital semelhante e vantagem competitiva disruptiva.

O Cloud Native Computing Foundation (CNCF) define o cloud native um pouco mais estreitamente, com foco na conteinerização de aplicativos – onde os aplicativos são divididos em microsserviços e empacotados em contêineres leves para serem implantados e orquestrados em uma variedade de servidores.

Nas próprias palavras do CNCF: “As tecnologias nativas da nuvem capacitam as organizações a criar e executar aplicativos escalonáveis ​​em ambientes modernos e dinâmicos, como nuvens públicas, privadas e híbridas”.

O desenvolvimento de aplicativos nativos da nuvem normalmente inclui a combinação de microsserviços, plataformas de nuvem, contêineres, Kubernetes, infraestrutura imutável, APIs declarativas e tecnologia de entrega contínua com técnicas como devops e metodologia ágil.

Cenário do cloud native

Essa mudança nas técnicas populares de desenvolvimento de software viu um novo cenário de ferramentas predominantemente de código aberto emergir. Existem quatro camadas para a computação cloud native que é importante entender:

  • A definição do aplicativo e a camada de desenvolvimento

A camada superior da pilha cloud native concentra-se nas ferramentas usadas pelos desenvolvedores para construir aplicativos, como bancos de dados, sistemas de mensagens, imagens de contêiner e pipelines de integração contínua e entrega contínua (CI/CD).

  • A camada de provisionamento

A camada de provisionamento da pilha nativa da nuvem inclui tudo o que é necessário para construir e proteger o ambiente onde um aplicativo será executado, idealmente de maneira repetível. No mundo nativo na nuvem, isso normalmente envolve tratar a infraestrutura como código, armazenar imagens em um repositório, automatizar compilações e abordar as necessidades de segurança do aplicativo com varredura de vulnerabilidade, gerenciamento de chave e política e ferramentas de autenticação.

  • A camada de tempo de execução

A camada de tempo de execução diz respeito a qualquer coisa associada à execução de um aplicativo nativo da nuvem, como o tempo de execução do contêiner – que ainda tende a ser Docker – bem como armazenamento e rede.

  • A camada de orquestração e gerenciamento

A camada de orquestração e gerenciamento reúne as ferramentas necessárias para implantar, gerenciar e dimensionar aplicativos em contêineres, incluindo orquestração e programação. Na maioria dos casos, isso significa Kubernetes, bem como descoberta de serviço, proxy de serviço, gateway de API e malha de serviço.

Fora dessas camadas, também é importante implementar práticas de observabilidade, para que todos esses serviços sejam monitorados de forma eficaz. Algumas organizações também optam por reunir sua pilha em uma plataforma de desenvolvedor interno de autoatendimento ou comprar uma plataforma opinativa como serviço (PaaS) de um fornecedor para facilitar a adoção pelos desenvolvedores.

As vantagens das arquiteturas cloud native

O desenvolvimento de aplicativos nativos da nuvem requer uma arquitetura muito diferente dos aplicativos corporativos tradicionais, que normalmente seriam executados em um data center local. Aqui estão algumas diferenças importantes e as vantagens que os aplicativos nativos da nuvem trazem sobre os modelos de desenvolvimento de aplicativos tradicionais.

Linguagens – Os aplicativos locais escritos para serem executados nos servidores da empresa tendem a ser escritos em linguagens tradicionais, como C/C++, C# e Java. Os aplicativos nativos da nuvem são mais propensos a serem escritos em uma linguagem centrada na web, como HTML, CSS, Java, JavaScript, .NET, Go, Node.js, PHP, Python e Ruby. Trabalhar com linguagens e plataformas modernas pode ajudar na hora de atrair os melhores engenheiros para trabalhar em sua organização.

Atualizáveis – Os aplicativos nativos da nuvem são desenvolvidos para serem altamente disponíveis, resilientes e regularmente atualizáveis, enquanto os aplicativos locais são normalmente atualizados uma ou duas vezes por ano usando uma metodologia em cascata. A capacidade de atualização da computação nativa em nuvem fornece um aumento de produtividade para as equipes de desenvolvimento se concentrarem em sua vantagem competitiva e fornecer novos recursos aos clientes com mais frequência do que antes.

Elasticidade – Os aplicativos nativos da nuvem normalmente tiram proveito da elasticidade da nuvem, flexibilizando o consumo de acordo com a demanda, enquanto um aplicativo local exigiria o provisionamento físico de infraestrutura adicional para escalar com eficácia. Isso também tem implicações de custo, já que a nuvem permite que você pague pelo que usar e evite o dispendioso superprovisionamento de sua própria infraestrutura – pelo menos em teoria.

Múltiplos inquilinos – Um aplicativo nativo da nuvem não tem problemas para trabalhar em um espaço virtualizado e compartilhar recursos com outros aplicativos usando um modelo multilocatário. Isso traz um claro aumento de eficiência para as equipes de desenvolvimento.

Tempo de inatividade – A nuvem oferece maior redundância devido à escala e distribuição geográfica dos data centers gerenciados pelos fornecedores de nuvem em hiperescala, portanto, as interrupções podem ser melhor gerenciadas redirecionando rapidamente o tráfego para outra região e evitando paralisações dispendiosas.

Automação – As técnicas cloud native abrem uma grande variedade de oportunidades de automação para que os engenheiros construam uma vez e avancem para outros desafios mais urgentes.

Stateless – Os aplicativos nativos na nuvem tendem a ser “sem estado”, pois não transportam os dados salvos de uma sessão para outra. Esse modelo abre a oportunidade de escalar facilmente em vários servidores, armazenar em cache com mais facilidade para aumentar o desempenho, usar menos armazenamento e evitar o temido bloqueio de fornecedor por não estar conectado a um servidor específico.

Desafios do cloud native

Tentar elevar e mudar um aplicativo local existente para ser cloud native sem criar desafios arquitetônicos é um erro comum, mas rearquitetar algo para a nuvem também é um desafio de engenharia significativo em si mesmo.

Encontrar a combinação certa de habilidades para fazer isso, adaptar-se a um modelo de segurança centrado na nuvem e gerenciar as mudanças no perfil de custo de um ambiente de nuvem continuam a ser os principais desafios para as organizações que buscam se tornar nativas da nuvem.

Ainda assim, os desenvolvedores devem buscar abraçar o cloud native como um princípio organizacional, seja criando novos aplicativos para a nuvem ou dividindo os aplicativos monolíticos existentes em microsserviços para que sejam mais adequados a um ambiente de nuvem.

Isso exigirá uma mudança significativa de mentalidade das implantações tradicionais em cascata para princípios de desenvolvimento mais ágeis, como o desenvolvimento de produto mínimo viável (MVP), adotando automação, testes multivariados, iteração rápida, capacidade de observação e trabalho próximo à equipe de operações em um modelo devops.

Newsletter de tecnologia para você

Os melhores conteúdos do IT Forum na sua caixa de entrada.