O que é nativo da nuvem?

O nativo da nuvem é uma abordagem de desenvolvimento de aplicativos que usa tecnologias como microsserviços, contêineres, orquestradores de contêineres e infraestrutura imutável para criar, implantar, executar e gerenciar aplicativos de software responsivos, escaláveis e tolerantes a falhas em um ambiente de computação em nuvem.

 

Explicação do nativo da nuvem

Nativo da nuvem descreve o design e a operação de aplicativos de software criados para operar na nuvem. O nativo da nuvem acelera a transformação digital porque maximiza a flexibilidade, a escalabilidade e a resiliência dos serviços baseados na nuvem para fornecer com eficiência aplicativos fáceis de gerenciar e manter.

Aplicativos monolíticos vs. nativos da nuvem: Um exemplo

Imagine que um banco precise criar um novo aplicativo. Antes da computação em nuvem, o banco contratava desenvolvedores para criar o aplicativo, comprava a infraestrutura física necessária para executar o aplicativo no local e mantinha essa infraestrutura durante toda a vida útil do aplicativo. Para acessar o aplicativo, os usuários se conectavam aos servidores do banco e, como esses servidores hospedavam cada serviço individual fornecido pelo aplicativo - consulta de números de contas, transferência de fundos, etc. - a atualização e a manutenção de qualquer serviço exigia o desligamento de todo o sistema.

Quando os desenvolvedores começaram a hospedar aplicativos na nuvem, eles "retiraram e transferiram" seus aplicativos dos ambientes locais, preservando a arquitetura geral dos aplicativos, bem como suas limitações. Em vez de comprar e gerenciar servidores para hospedar seus aplicativos, eles alugaram recursos de computação de um provedor de serviços em nuvem (CSP). Mas os novos serviços, como plataforma como serviço, contêineres como serviço e infraestrutura sem servidor, abriram novas oportunidades para criar, implantar e gerenciar aplicativos em uma velocidade vertiginosa - relativamente falando.

 

História do nativo da nuvem

A prática de criar aplicativos no local começou a mudar no início dos anos 2000, com o advento da virtualização e o surgimento de provedores de infraestrutura como serviço (IaaS) , como a Amazon Web Services (AWS), que permitiu aos desenvolvedores provisionar e gerenciar máquinas virtuais na nuvem. Isso abriu caminho para o desenvolvimento de ofertas de plataforma como serviço (PaaS) , como o Google App Engine e o Heroku, que forneceram uma camada de abstração de nível superior para criar e implantar aplicativos baseados em nuvem.

No entanto, as primeiras plataformas careciam de flexibilidade e os desenvolvedores ficavam presos a elas, tendo que usar APIs e ferramentas proprietárias. Em resposta, surgiu uma nova abordagem focada na criação de aplicativos projetados para a nuvem e no uso de tecnologias de código aberto.

Um dos primeiros exemplos dessa abordagem foi a metodologia Twelve-Factor App, que consiste em um conjunto de princípios para a criação de aplicativos nativos da nuvem projetados para portabilidade, escalabilidade e resiliência. Esses princípios incluem o uso de formatos declarativos para configuração, a dependência de processos sem estado e o tratamento de serviços de apoio como recursos anexados.

Na mesma época, a tecnologia de conteinerização do Docker surgiu como um bloco de construção fundamental para aplicativos nativos da nuvem. O Docker permitiu que os desenvolvedores empacotassem seus aplicativos e dependências em contêineres leves que poderiam ser facilmente implantados em diferentes ambientes de nuvem, resolvendo o problema da portabilidade dos aplicativos.

Em 2014, o Google lançou o Kubernetes, uma plataforma de orquestração de contêineres de código aberto. O Kubernetes, que fornece um conjunto avançado de ferramentas para automatizar a implantação, o dimensionamento e o gerenciamento de aplicativos em contêineres, tornou-se o padrão para o gerenciamento de aplicativos em contêineres na nuvem.

Nos anos seguintes, a abordagem nativa da nuvem para a criação de aplicativos foi adotada por organizações de todos os setores, de startups a grandes empresas, e levou ao desenvolvimento de um ecossistema de tecnologias, ferramentas e plataformas de código aberto.

Vídeo: O nativo da nuvem está se movendo rapidamente e aumentando em complexidade. Descubra as tendências relacionadas à tecnologia, DevOps e ecossistemas nativos da nuvem.

 

O que são aplicativos nativos da nuvem?

Em um nível básico, os aplicativos nativos da nuvem são programas de software em que a funcionalidade é dividida em microsserviços - serviços pequenos e pouco acoplados que operam independentemente uns dos outros. Devido a essa estrutura modular, os aplicativos nativos da nuvem são mais fáceis de criar e alterar do que os aplicativos monolíticos tradicionais. Os desenvolvedores podem implantar novos recursos e atualizações em um aplicativo sem interromper o sistema.

Em comparação, os aplicativos monolíticos são criados como uma única base de código, com todos os componentes fortemente acoplados e executados em um único servidor ou máquina. Isso significa que as alterações ou atualizações no aplicativo exigem que todo o aplicativo seja recompilado e reimplantado.

Outras tecnologias e metodologias características dos aplicativos nativos da nuvem incluem:

  • Infraestrutura baseada em contêineres, geralmente contêineres Linux com orquestração baseada em Kubernetes
  • Arquitetura construída em torno de microsserviços com acoplamento frouxo
  • Desenvolvimento ágil no estilo DevOps
  • Uso de integração contínua e entrega contínua (CI/CD)
  • Uso de código-fonte aberto e bibliotecas
  • Funções sem servidor e PaaS

 

O que é a arquitetura nativa da nuvem?

A arquitetura nativa da nuvem é uma metodologia de design que oferece suporte a técnicas de desenvolvimento de aplicativos rápidas e ágeis para criar aplicativos nativos da nuvem como conjuntos de peças menores e compostas, que são fáceis de manter, alterar, escalar e migrar. A seguir, os componentes da arquitetura nativa da nuvem.

A arquitetura de microsserviços é a base para os benefícios associados ao aplicativo moderno baseado em contêineres
Figura 1: A arquitetura de microsserviços é a base para os benefícios associados ao aplicativo moderno baseado em contêineres.

Infraestrutura imutável

A infraestrutura imutável é um paradigma no qual servidores e máquinas virtuais (VMs) são substituídos em vez de alterados quando algo precisa ser atualizado, corrigido ou modificado. Se for necessário fazer uma alteração, os novos componentes que incorporam essas alterações são criados a partir de uma imagem comum e os antigos são retirados de produção. Essa abordagem cria um processo previsível para a implantação nativa da nuvem.

Arquitetura de microsserviços

A ascensão do nativo da nuvem foi impulsionada pela arquitetura de microsserviços, um padrão de design de software que enfatiza o uso de serviços implantados de forma independente, cada um com uma função comercial específica, que trabalham juntos no aplicativo nativo da nuvem. Os microsserviços permitem que os desenvolvedores criem aplicativos complexos por meio da composição de componentes menores e mais gerenciáveis, que podem ser dimensionados e atualizados de forma independente.

API

As APIs são uma ferramenta de comunicação usada em aplicativos nativos da nuvem. Eles facilitam uma transferência padrão e eficaz de informações entre microsserviços independentes, permitindo que eles compartilhem informações para que possam funcionar como um todo coeso.

Malha de serviço

Uma malha de serviço é uma camada na arquitetura nativa da nuvem que gerencia a comunicação entre os microsserviços. As malhas de serviços também possibilitam adicionar gerenciamento de tráfego, segurança e funções adicionais aos serviços sem a necessidade de adicionar novos códigos.

Contêineres

Os contêineres permitem que os microsserviços sejam empacotados em ambientes independentes com suas dependências - código, arquivos de recursos, ferramentas de sistema e bibliotecas de sistema - para que tenham um desempenho consistente em qualquer circunstância. Isso permite que os desenvolvedores reproduzam ou analisem e isolem um serviço com facilidade. Como eles contêm tudo o que um aplicativo precisa para ser executado, os contêineres permitem que os aplicativos nativos da nuvem sejam implantados em qualquer lugar, seja no local ou na nuvem.

Com cada microsserviço implantado em um contêiner, grupos de contêineres trabalham juntos como um sistema, ou "pilha", para formar o aplicativo nativo completo. Um sistema de orquestração dinâmica monitora automaticamente cada contêiner, iniciando-os e desligando-os de acordo com a necessidade do usuário e resultando em maior escalabilidade e eficiência.

 

O que é desenvolvimento de aplicativos nativos da nuvem?

O desenvolvimento de aplicativos nativos da nuvem é o processo de criação de aplicativos estáveis e dimensionáveis para operação em uma nuvem privada, pública ou híbrida. As práticas comuns de desenvolvimento nativo da nuvem incluem:

Integração contínua

A integração contínua (CI) é uma prática que envolve a criação, o teste e a integração automáticos de alterações de código em um repositório central. Isso ajuda a garantir que as alterações no código sejam totalmente testadas e integradas ao restante da base de código do aplicativo. No desenvolvimento nativo da nuvem, a CI é frequentemente usada em conjunto com a conteinerização, que permite que os desenvolvedores empacotem seu código, dependências e configuração em uma única unidade independente.

Entrega contínua

A entrega contínua (CD) é o processo de entrega de aplicativos criados no processo de CI em um ambiente semelhante ao de produção, onde são submetidos a testes automatizados adicionais para eliminar problemas inesperados de desempenho. Ao permitir mais atualizações incrementais dos aplicativos em produção, a CD ajuda a reduzir o custo, o tempo e o risco de fornecer alterações e permite que os desenvolvedores criem, testem e lancem software de alta qualidade com maior velocidade e frequência. No desenvolvimento nativo da nuvem, a CD é frequentemente usada em conjunto com práticas de automação e DevOps, que ajudam a simplificar o processo de desenvolvimento e implantação de software.

DevOps

DevOps é uma abordagem que combina desenvolvimento de software e operações de TI para aumentar a eficiência, a velocidade, a qualidade e a segurança do desenvolvimento e da entrega de software.

No desenvolvimento nativo da nuvem, o DevOps é frequentemente usado para automatizar muitos aspectos do processo de desenvolvimento e implantação de software. O foco em uma abordagem rápida e iterativa se alinha ao modelo nativo da nuvem e ajuda as organizações a fornecer aplicativos e serviços com velocidade. Isso permite que as empresas ofereçam melhores serviços aos seus clientes e concorram de forma mais eficaz em seu setor.

Sem servidor

A computação sem servidor, usada em conjunto com microsserviços, é um modelo de desenvolvimento nativo da nuvem que permite que os desenvolvedores escrevam e implantem códigos sem precisar gerenciar a infraestrutura de nuvem subjacente. Como os recursos são alocados dinamicamente com base na demanda, a computação sem servidor pode reduzir os custos e melhorar a escalabilidade.

 

Benefícios do desenvolvimento de aplicativos nativos da nuvem

As práticas nativas da nuvem oferecem as melhores oportunidades para impulsionar a transformação digital e o crescimento dos negócios. O desenvolvimento de aplicativos nativos é econômico, permitindo que os aplicativos sejam facilmente atualizados e mantidos por meio de integração contínua/entrega contínua (CI/CD). Ele também ajuda as organizações a eliminar os silos entre desenvolvimento, operações e segurança para oferecer uma experiência consistente em todo o ciclo de vida de desenvolvimento de aplicativos.

Outros benefícios do desenvolvimento de aplicativos nativos da nuvem incluem:

Aumento da velocidade

Os aplicativos nativos da nuvem são desenvolvidos usando um processo de desenvolvimento ágil, com serviços individuais desenvolvidos e implantados de forma independente, o que permite a iteração e a implantação mais rápidas de novos recursos ou atualizações.

Melhoria da qualidade e da confiabilidade

Com o desenvolvimento de aplicativos nativos da nuvem, os desenvolvedores podem se concentrar em fornecer valor no aplicativo porque o provedor de nuvem gerencia a infraestrutura subjacente. Isso também melhora a consistência e a confiabilidade do ambiente operacional.

Operações econômicas

Os aplicativos nativos da nuvem são projetados para serem horizontalmente dimensionáveis, em que os recursos podem ser adicionados ou removidos dinamicamente com base na demanda. Por outro lado, os aplicativos monolíticos normalmente são dimensionados verticalmente, o que significa que recursos adicionais são adicionados ao servidor ou à máquina para lidar com o aumento da demanda. Essa abordagem pode ser cara e ineficiente, pois geralmente exige provisionamento excessivo de recursos para lidar com a demanda de pico.

Melhor adaptabilidade e escalabilidade

O desenvolvimento de aplicativos nativos da nuvem facilita o acompanhamento das necessidades em constante mudança dos clientes e da empresa, pois fornece aplicativos feitos de microsserviços frouxamente acoplados que são fáceis de atualizar, alterar e escalar em tempo real.

Aumento da resiliência

O desenvolvimento de aplicativos nativos da nuvem melhora a resiliência porque usa microsserviços que podem ser isolados. Se um componente de um aplicativo monolítico falhar, ele pode derrubar todo o sistema. Mas os aplicativos tolerantes a falhas e nativos da nuvem são projetados para continuar funcionando mesmo que os serviços individuais falhem.

Risco minimizado de bloqueio do fornecedor

Como o desenvolvimento de aplicativos nativos da nuvem usa contêineres para transferir microsserviços entre as infraestruturas de diferentes fornecedores, as organizações não estão vinculadas a um fornecedor específico. Eles podem usar os serviços de vários provedores de nuvem e selecionar as opções mais adequadas para seus negócios.

Solução de problemas simplificada

O desenvolvimento de aplicativos nativos da nuvem simplifica a solução de problemas porque sua arquitetura de microsserviços facilita o rastreamento de problemas até o serviço de origem e a correção do problema sem tempo de inatividade do servidor.

Redução da superfície de ataque

Os aplicativos nativos da nuvem são projetados para segurança, com serviços individuais normalmente isolados uns dos outros. Isso reduz a superfície de ataque dos aplicativos monolíticos tradicionais construídos com componentes fortemente acoplados que facilitam o acesso dos invasores a dados confidenciais.

 

O que é uma pilha nativa da nuvem?

A pilha nativa da nuvem refere-se às camadas de ferramentas e tecnologias que os desenvolvedores usam para criar, gerenciar e executar aplicativos nativos da nuvem. As camadas da pilha nativa da nuvem incluem:

Camada de infraestrutura

A camada de infraestrutura forma a base da pilha nativa da nuvem. Ele é composto pelos componentes de suporte do desenvolvimento de aplicativos nativos da nuvem, incluindo sistemas operacionais, armazenamento, rede e outros recursos de computação. A camada de infraestrutura é gerenciada por provedores de nuvem de terceiros.

Camada de provisionamento

A camada de provisionamento na pilha nativa da nuvem é composta pelas ferramentas usadas para criar e proteger a infraestrutura. Isso inclui ferramentas para verificar e armazenar imagens de contêineres e permitir a definição e a aplicação de políticas.

Camada de tempo de execução

A camada de tempo de execução abrange tudo o que um contêiner precisa para ser executado em um ambiente nativo da nuvem. Isso inclui o código usado para iniciar um contêiner e as ferramentas que disponibilizam o armazenamento persistente para os contêineres.

Camada de orquestração e gerenciamento

A camada de orquestração e gerenciamento é semelhante a um sistema operacional, responsável por reunir os componentes da nuvem para que eles possam trabalhar juntos como uma unidade única e coesa. As ferramentas de orquestração, como Kubernetes, Docker e OpenShift, permitem que os desenvolvedores implantem, gerenciem e dimensionem aplicativos em contêineres.

Camada de definição e desenvolvimento de aplicativos

A camada de definição e desenvolvimento de aplicativos é composta por todas as tecnologias que os desenvolvedores usam para criar aplicativos, incluindo bancos de dados, sistemas de mensagens, imagens de contêineres e pipelines de CI/CD.

Observabilidade e ferramentas de análise

As ferramentas de observabilidade e análise observam todas as camadas da pilha nativa da nuvem para monitorar e avaliar a integridade dos aplicativos em nuvem e garantir que não haja nenhuma interrupção na qualidade do serviço do aplicativo. Eles são divididos nas categorias de registro, monitoramento e rastreamento e são usados para monitorar métricas como uso da CPU, latência e memória.

 

Desafios de segurança nativos da nuvem

Como os ambientes de nuvem e nativos da nuvem têm arquiteturas diferentes que dependem de tecnologias diferentes, a segurança da nuvem e a segurança nativa da nuvem são diferentes. A segurança na nuvem exige uma abordagem ampla e holística da segurança, pois abrange uma série de ativos e aplicativos. A segurança nativa da nuvem, por outro lado, exige uma abordagem especializada que leve em conta as preocupações de segurança exclusivas dos aplicativos e da infraestrutura nativos da nuvem.

Os desafios comuns de segurança nativos da nuvem incluem:

Falta de visibilidade: A complexidade do ambiente de nuvem dificulta a obtenção de visibilidade completa, criando pontos cegos onde os riscos de segurança podem se propagar.

Ameaças diversas: Os atores de ameaças na nuvem encontram caminhos de ataque criativos e soluções alternativas para as soluções de segurança tão rapidamente quanto são criadas.

Incapacidade de aplicar políticas consistentes: A infraestrutura nativa da nuvem de uma organização geralmente envolve vários provedores de serviços em nuvem e ferramentas de segurança diferentes, o que dificulta a centralização das políticas de segurança e sua aplicação consistente.

Configurações incorretas: A falta histórica de segurança integrada ao processo de desenvolvimento de aplicativos deixa espaço para configurações incorretas e vulnerabilidades de código aberto que podem resultar em exposição de dados e acesso não autorizado à carga de trabalho .

Processos de segurança lentos: Manter a conformidade e a segurança vigilantes exigidas pelos pipelines de CI/CD de alta velocidade diminui a flexibilidade, a agilidade e a velocidade inerentes à computação em nuvem.

Padrões inseguros: Muitas ferramentas nativas da nuvem fornecidas pelos CSPs oferecem configurações flexíveis, incluindo configurações padrão inseguras que podem levar a violações de segurança.

Vulnerabilidades da cadeia de suprimentos de software: Vulnerabilidades não corrigidas em software de código aberto aumentam a fragilidade da cadeia de suprimentos de software.

Com as ferramentas certas, as equipes de segurança podem superar os desafios de segurança nativos da nuvem. Uma plataforma de proteção de aplicativos nativos da nuvem (CNAPP) fornecerá visibilidade continuamente em um único painel, bem como a aplicação consistente de políticas de segurança em todo o ambiente de nuvem.

 

Perguntas frequentes nativas da nuvem

A segurança na nuvem refere-se à proteção de ativos e dados baseados na nuvem, independentemente de onde tenham sido originalmente criados ou implantados. Asegurança nativa da nuvem concentra-se na segurança de aplicativos e infraestrutura criados especificamente para o ambiente de nuvem.
A Cloud Native Computing Foundation (CNCF) é o centro de código aberto e neutro em relação a fornecedores da computação em nuvem. Operando com a missão de tornar a computação em nuvem universal e sustentável, o CNCF defende a adoção nativa da nuvem e ajuda a comunidade de código aberto a desenvolver tecnologias nativas da nuvem emergentes.
Tanto o nativo da nuvem quanto o lift and shift são métodos de criação de um serviço ou aplicativo na nuvem. No caso do nativo da nuvem, o novo código do aplicativo é desenvolvido em conjunto com o pipelines de CI/CD e a infraestrutura imutável como código necessário para dar suporte a ele. Lift and shift é um processo relativamente rápido, enquanto o nativo da nuvem exige mais desenvolvimento inicial. No final, o custo geral da abordagem nativa da nuvem é menor do que o custo de lift and shift.
Um aplicativo habilitado para a nuvem é um aplicativo legado que estava em execução em um data center no local e foi modificado para ser executado na nuvem. Como os aplicativos habilitados para a nuvem são criados com tecnologias monolíticas, eles não têm a flexibilidade e a escalabilidade dos aplicativos nativos da nuvem.