Partilhar via


Resiliência nativa 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.

Resiliência é a capacidade do seu sistema de reagir a falhas e ainda permanecer funcional. Não se trata de evitar falhas, mas de aceitar falhas e construir seus serviços nativos da nuvem para respondê-las. Você quer voltar a um estado de pleno funcionamento o mais rápido possível.

Ao contrário dos aplicativos monolíticos tradicionais, em que tudo é executado em conjunto em um único processo, os sistemas nativos da nuvem adotam uma arquitetura distribuída, como mostra a Figura 6-1:

Distributed cloud-native environment

Figura 6-1. Ambiente distribuído nativo da nuvem

Na figura anterior, cada microsserviço e serviço de suporte baseado em nuvem é executado em um processo separado, através da infraestrutura do servidor, comunicando-se por meio de chamadas baseadas em rede.

Operando neste ambiente, um serviço deve ser sensível a muitos desafios diferentes:

  • Latência de rede inesperada - o tempo para uma solicitação de serviço viajar para o recetor e voltar.

  • Falhas transitórias - erros de conectividade de rede de curta duração.

  • Bloqueio por uma operação síncrona de longa duração.

  • Um processo de host que falhou e está sendo reiniciado ou movido.

  • Um microsserviço sobrecarregado que não consegue responder por um curto período de tempo.

  • Uma operação de orquestrador a bordo, como um upgrade contínuo ou a mudança de um serviço de um nó para outro.

  • Falhas de hardware.

As plataformas de nuvem podem detetar e mitigar muitos desses problemas de infraestrutura. Ele pode reiniciar, dimensionar e até mesmo redistribuir seu serviço para um nó diferente. No entanto, para tirar o máximo proveito dessa proteção integrada, você deve projetar seus serviços para reagir a ela e prosperar nesse ambiente dinâmico.

Nas seções a seguir, exploraremos técnicas defensivas que seu serviço e recursos de nuvem gerenciados podem aproveitar para minimizar o tempo de inatividade e interrupções.