Compartilhar via


Introdução a aplicativos nativos de nuvem

Dica

Esse conteúdo é um trecho do eBook, Architecting Cloud Native .NET Applications for Azure, disponível no .NET Docs ou como um PDF para download gratuito que pode ser lido offline.

Miniatura de capa do eBook

Outro dia, no escritório, trabalhando na "próxima grande coisa".

Seu celular toca. É o seu recrutador amigável, aquele que liga diariamente com novas oportunidades emocionantes.

Mas desta vez é diferente: start-up, equidade e muito financiamento.

A menção da nuvem, dos microsserviços e da tecnologia de ponta o empurra para o limite.

Avance algumas semanas e agora você é um novo funcionário em uma sessão de design arquitetando um aplicativo eCommerce principal. Você vai competir com os principais sites de Comércio Eletrônico.

Como você vai construí-lo?

Se você seguir as diretrizes dos últimos 15 anos, provavelmente criará o sistema mostrado na Figura 1.1.

Design monolítico tradicional

Figura 1-1. Design monolítico tradicional

Você constrói um aplicativo principal grande que contém toda a lógica de domínio. Ele inclui módulos como Identidade, Catálogo, Ordenação e muito mais. Eles se comunicam diretamente entre si em um único processo de servidor. Os módulos compartilham um banco de dados relacional grande. O núcleo expõe a funcionalidade por meio de uma interface HTML e um aplicativo móvel.

Parabéns! Você acabou de criar um aplicativo monolítico.

Nem tudo é ruim. Monolitos oferecem algumas vantagens distintas. Por exemplo, eles são simples de...

  • construir
  • teste
  • implantar
  • solucionar problemas
  • dimensionar verticalmente

Muitos aplicativos bem-sucedidos que existem hoje foram criados como monólitos. O aplicativo é um sucesso e continua evoluindo, iteração após iteração, adicionando mais funcionalidade.

Em algum momento, no entanto, você começa a se sentir desconfortável. Você se encontra perdendo o controle do aplicativo. Com o passar do tempo, a sensação se torna mais intensa e você eventualmente entra em um estado conhecido como Fear Cycle:

  • O aplicativo tornou-se tão extremamente complicado que nenhuma pessoa o entende.
  • Você teme fazer mudanças - cada alteração tem efeitos colaterais não intencionais e caros.
  • Novos recursos/correções tornam-se complicados, demorados e caros de implementar.
  • Cada versão se torna o menor possível e requer uma implantação completa de todo o aplicativo.
  • Um componente instável pode falhar em todo o sistema.
  • Novas tecnologias e estruturas não são uma opção.
  • É difícil implementar metodologias de entrega ágeis.
  • A erosão arquitetônica se instala à medida que a base de código se deteriora com "correções rápidas" intermináveis.
  • Finalmente, os consultores entram e dizem para você reescrevê-lo.

Parece familiar?

Muitas organizações abordaram esse ciclo de medo monolítico adotando uma abordagem nativa de nuvem para criar sistemas. A Figura 1-2 mostra o mesmo sistema criado aplicando técnicas e práticas nativas de nuvem.

 Design doCloud-Native

Figura 1-2. Design nativo de nuvem

Observe como o aplicativo é decomposto em um conjunto de microsserviços isolados pequenos. Cada serviço é autocontido e encapsula seu próprio código, dados e dependências. Cada um é implantado em um contêiner de software e gerenciado por um orquestrador de contêineres. Em vez de um banco de dados relacional grande, cada serviço possui seu próprio armazenamento de dados, o tipo do qual varia de acordo com as necessidades de dados. Observe como alguns serviços dependem de um banco de dados relacional, mas outros em bancos de dados NoSQL. Um serviço armazena seu estado em um cache distribuído. Observe como todo o tráfego é roteado por meio de um serviço de API Gateway responsável por rotear o tráfego para os serviços principais do back-end e lidar com várias preocupações transversais. Mais importante, o aplicativo aproveita ao máximo os recursos de escalabilidade, disponibilidade e resiliência encontrados em plataformas de nuvem modernas.

Computação nativa de nuvem

Hmm... Acabamos de usar o termo , Cloud Native. Seu primeiro pensamento pode ser: "O que exatamente isso significa?" Outra palavra-chave da indústria inventada pelos fornecedores de software para comercializar mais coisas?"

Felizmente é muito diferente, e espero que este livro ajude a convencê-lo.

Em pouco tempo, a nuvem nativa tornou-se uma tendência de condução no setor de software. É uma nova maneira de construir sistemas grandes e complexos. A abordagem aproveita ao máximo as práticas modernas de desenvolvimento de software, tecnologias e infraestrutura de nuvem. O nativo de nuvem altera a maneira como você projeta, implementa, implanta e operacionaliza sistemas.

Ao contrário do hype contínuo que impulsiona nosso setor, a nuvem nativa é real. Considere a CNCF ( Cloud Native Computing Foundation ), um consórcio de mais de 400 grandes corporações. Sua missão é tornar a computação nativa em nuvem onipresente em ambientes de tecnologia e nuvem. Como um dos grupos de software livre mais influentes, ele hospeda muitos dos projetos de software livre que mais crescem no GitHub. Esses projetos incluem Kubernetes, Prometheus, Helm, Envoy e gRPC.

O CNCF promove um ecossistema de software livre e neutralidade do fornecedor. Após esse lead, este livro apresenta princípios nativos de nuvem, padrões e práticas recomendadas que são independentes de tecnologia. Ao mesmo tempo, discutimos os serviços e a infraestrutura disponíveis na nuvem do Microsoft Azure para construir sistemas nativos de nuvem.

Então, o que exatamente é Nativo de Nuvem? Sente-se, relaxe e deixe-nos ajudá-lo a explorar este novo mundo.