Compartilhar via


Resiliência nativa de nuvem

Dica

Esse conteúdo é um trecho do livro eletrônico, para Projetar os Aplicativos .NET nativos de nuvem para o Azure, disponível no .NET Docs ou como um PDF para download gratuito que pode ser lido offline.

Cloud Native .NET apps for Azure eBook cover thumbnail.

A resiliência é a capacidade do sistema de reagir à falha e ainda permanecer funcional. Não se trata de evitar falhas, mas de aceitar falhas e construir serviços nativos de nuvem para responder a ela. Você deseja retornar a um estado totalmente funcional o mais rápido possível.

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

Distributed cloud-native environment

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

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

Operar nesse 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 receptor e voltar.

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

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

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

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

  • Uma operação de orquestrador em disponibilizada versão piloto, como uma atualização sem contínua ou mover de um serviço de um nó para outro.

  • Falhas de hardware.

As plataformas de nuvem podem detectar e atenuar muitos desses problemas de infraestrutura. Ele pode reiniciar, escalar horizontalmente e até redistribuir seu serviço para um nó diferente. No entanto, para aproveitar ao máximo essa proteção interna, 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 o serviço e os recursos de nuvem gerenciados podem aproveitar para minimizar o tempo de inatividade e a interrupção.