Implementar aplicativos resilientes

Dica

Esse conteúdo é um trecho do eBook da Arquitetura de Microsserviços do .NET para os Aplicativos .NET em Contêineres, disponível no .NET Docs ou como um PDF para download gratuito que pode ser lido offline.

Imagem em miniatura da capa do eBook da Arquitetura de Microsserviços do .NET para os Aplicativos .NET em Contêineres.

É necessário considerar as falhas parciais que certamente ocorrerão ocasionalmente em seus aplicativos de microsserviços e baseados em nuvem. Você deve projetar seu aplicativo para ser resiliente a essas falhas parciais.

A resiliência é a capacidade de se recuperar de falhas e continuar funcionando. Não se trata de evitar falhas, mas de aceitar o fato de que as falhas acontecerão, e responder a elas de uma maneira que evite tempo de inatividade ou perda de dados. A meta de resiliência é retornar o aplicativo para um estado totalmente funcional após uma falha.

Já é um grande desafio criar e implantar um aplicativo baseado em microsserviços. E você ainda precisa manter o aplicativo em execução em um ambiente em que algum tipo de falha certamente ocorrerá. Portanto, seu aplicativo precisa ser resiliente. Ele deve ser projetado para lidar com falhas parciais, como interrupções da rede ou falhas de nós ou de VMs na nuvem. Até mesmo os microsserviços (contêineres) que estão sendo movidos para outro nó em um cluster podem causar falhas curtas intermitentes no aplicativo.

Os diversos componentes individuais do aplicativo também precisam incorporar recursos de monitoramento de integridade. Seguindo as diretrizes neste capítulo, você poderá criar um aplicativo que pode funcionar perfeitamente apesar do tempo de inatividade temporário ou das interrupções normais que ocorrem em implantações complexas e baseadas em nuvem.

Importante

O eShopOnContainer estava usando a biblioteca Polly para implementar resiliência usando Clientes Tipado até a versão 3.0.0.

A partir da versão 3.0.0, a resiliência de chamadas HTTP é implementada usando uma Linkerd mesh, que manipula novas tentativas de forma transparente e configurável, dentro de um cluster do Kubernetes, sem precisar lidar com essas preocupações no código.

A biblioteca Polly ainda é usada para adicionar resiliência às conexões de banco de dados, especialmente ao iniciar os serviços.

Aviso

Todos os exemplos de código e imagens nesta seção eram válidos antes de usar o Linkerd e não são atualizados para refletir o código real atual. Portanto, eles fazem sentido no contexto desta seção.