Partilhar via


Resumo: Arquitetando aplicativos nativos da nuvem

Gorjeta

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

Cloud Native .NET apps for Azure eBook cover thumbnail.

Em resumo, aqui estão conclusões importantes deste guia:

  • O nativo da nuvem consiste em projetar aplicativos modernos que adotam mudanças rápidas, grande escala e resiliência, em ambientes modernos e dinâmicos, como nuvens públicas, privadas e híbridas.

  • A Cloud Native Computing Foundation (CNCF) é um influente consórcio de código aberto de mais de 300 grandes corporações. Ele é responsável por impulsionar a adoção da computação nativa da nuvem em toda a tecnologia e pilhas de nuvem.

  • As diretrizes do CNCF recomendam que os aplicativos nativos da nuvem adotem seis pilares importantes, como mostra a Figura 11-1:

    Cloud-native foundational pillars

    Figura 11-1. Pilares fundamentais nativos da nuvem

  • Esses pilares nativos da nuvem incluem:

    • A nuvem e seu modelo de serviço subjacente
    • Princípios de design modernos
    • Microsserviços
    • Contentorização e orquestração de contentores
    • Serviços de suporte baseados em nuvem, como bancos de dados e agentes de mensagens
    • Automação, incluindo infraestrutura como código e implantação de código
  • O Kubernetes é o ambiente de hospedagem preferido para a maioria dos aplicativos nativos da nuvem. Serviços menores e simples às vezes são hospedados em plataformas sem servidor, como o Azure Functions. Entre muitos recursos de automação importantes, ambos os ambientes fornecem dimensionamento automático para lidar com volumes de carga de trabalho flutuantes.

  • A comunicação de serviço torna-se uma decisão de design significativa ao construir um aplicativo nativo da nuvem. Os aplicativos normalmente expõem um gateway de API para gerenciar a comunicação do cliente front-end. Em seguida, os microsserviços de back-end se esforçam para se comunicar uns com os outros, implementando padrões de comunicação assíncronos, quando possível.

  • O gRPC é uma estrutura moderna e de alto desempenho que evolui o antigo protocolo de chamada de procedimento remoto (RPC). Os aplicativos nativos da nuvem geralmente adotam o gRPC para simplificar as mensagens entre serviços de back-end. gRPC usa HTTP/2 para seu protocolo de transporte. Pode ser até 8x mais rápido do que a serialização JSON com tamanhos de mensagem 60-80% menores. O gRPC é de código aberto e gerenciado pela Cloud Native Computing Foundation (CNCF).

  • Os dados distribuídos são um modelo frequentemente implementado por aplicativos nativos da nuvem. Os aplicativos segregam a funcionalidade de negócios em microsserviços pequenos e independentes. Cada microsserviço encapsula suas próprias dependências, dados e estado. O modelo de banco de dados compartilhado clássico evolui para um dos muitos bancos de dados menores, cada um alinhado com um microsserviço. Quando a fumaça se dissipa, emergimos com um design que expõe um database-per-microservice modelo.

  • Os bancos de dados No-SQL referem-se a armazenamentos de dados não relacionais de alto desempenho. Eles se destacam em suas características de facilidade de uso, escalabilidade, resiliência e disponibilidade. Serviços de alto volume que exigem tempo de resposta inferior a um segundo favorecem os armazenamentos de dados NoSQL. A proliferação de tecnologias NoSQL para sistemas distribuídos nativos da nuvem não pode ser exagerada.

  • NewSQL é uma tecnologia de banco de dados emergente que combina a escalabilidade distribuída do NoSQL e as garantias ACID de um banco de dados relacional. Os bancos de dados NewSQL destinam-se a sistemas de negócios que devem processar grandes volumes de dados, em ambientes distribuídos, com total conformidade transacional/ACID. A Cloud Native Computing Foundation (CNCF) apresenta vários projetos de banco de dados NewSQL.

  • Resiliência é a capacidade do seu sistema de reagir a falhas e ainda permanecer funcional. Os sistemas nativos da nuvem adotam a arquitetura distribuída onde a falha é inevitável. Os aplicativos devem ser construídos para responder elegantemente a falhas e retornar rapidamente a um estado de pleno funcionamento.

  • As malhas de serviço são uma camada de infraestrutura configurável com recursos integrados para lidar com a comunicação de serviço e outros desafios transversais. Eles separam responsabilidades transversais do seu código de negócios. Essas responsabilidades passam para um proxy de serviço. Conhecido como , o proxy é implantado Sidecar patternem um processo separado para fornecer isolamento do seu código comercial.

  • A observabilidade é uma consideração de design fundamental para aplicativos nativos da nuvem. À medida que os serviços são distribuídos por um cluster de nós, o registro, o monitoramento e os alertas centralizados tornam-se obrigatórios. O Azure Monitor é uma coleção de ferramentas baseadas na nuvem concebidas para fornecer visibilidade do estado do seu sistema.

  • A infraestrutura como código é uma prática amplamente aceita que automatiza o provisionamento da plataforma. Sua infraestrutura e implantações são automatizadas, consistentes e repetíveis. Ferramentas como o Azure Resource Manager, o Terraform e a CLI do Azure permitem que você crie scripts declarativos para a infraestrutura de nuvem necessária.

  • A automação de código é um requisito para aplicativos nativos da nuvem. Os modernos sistemas de CI/CD ajudam a cumprir este princípio. Eles fornecem etapas separadas de compilação e implantação que ajudam a garantir um código consistente e de qualidade. O estágio de construção transforma o código em um artefato binário. O estágio de liberação pega o artefato binário, aplica a configuração do ambiente externo e o implanta em um ambiente especificado. O Azure DevOps e o GitHub são ambientes de DevOps completos.