Aplicativos distribuídos globalmente usando o Cosmos DB

Cosmos DB
Gerenciador de Tráfego

Garanta acesso a usuários em todo o mundo com os recursos de alta disponibilidade e baixa latência integrados aos datacenters globais da Microsoft.

Arquitetura

Diagrama da Arquitetura
Baixe uma versão SVG dessa arquitetura.

Fluxo de dados

  1. O usuário acessa o aplicativo por meio do cliente dedicado.
  2. Gerenciador de Tráfego do Azure roteará a conexão do usuário para o melhor local para acessar o aplicativo, com base em perfis de roteamento único ou aninhado.
  3. Na região em que o aplicativo está hospedado, o aplicativo manipulará a sessão e a conexão com o banco de dados.
  4. Esse aplicativo pode variar de uma página estática simples até um aplicativo orientado a microsserviços hospedado no Kubernetes, por exemplo.
  5. A conexão entre o cenário do aplicativo e o banco de dados Cosmos é tratada por meio de um usuário Azure Active Directory que pode escolher as chaves Cosmos DB Key Vault.
  6. Usando as APIs de várias Cosmos banco de dados do Azure, seu aplicativo está ciente da região mais próxima e pode enviar solicitações para essa região. A região mais próxima é identificada sem alterações de configuração. Conforme você adiciona e remove regiões de e para sua conta do Azure Cosmos, seu aplicativo não precisa ser reimplantado ou pausado, ele continua altamente disponível em todos os momentos. Nos cobertas, Cosmos DB manipulará a distribuição global e a replicação dos dados com base no número de regiões definidas. Como adição, você também deve se beneficiar da opção failover automático para fazer failover para a região com a prioridade de failover mais alta sem ação do usuário caso uma região se torne indisponível. Quando o failover automático estiver habilitado, a prioridade de região poderá ser modificada.

Componentes

Alternativas

Você pode estender esse cenário com várias opções de computação e sem servidor.

Opções de computação

Opções sem servidor

Considerações

Disponibilidade

A disponibilidade da instância Cosmos banco de dados depende de vários fatores. Quanto maior o número de regiões Cosmos replicação, maior será a disponibilidade do aplicativo. Cada região contém todas as partições de dados de um contêiner Cosmos banco de dados do Azure e pode atender a leituras, por padrão. Para aumentar a disponibilidade da camada de dados, você pode habilitar a gravação em várias regiões. Isso aumenta a disponibilidade da camada de dados. Você também pode aumentar a disponibilidade empregando níveis de consistência e zonas de disponibilidade mais fracos.

Ao considerar a abordagem acima, se você atingir alta disponibilidade no Failover Automático do BD do Azure Cosmos, você está configurando sua solução para manter o aplicativo em execução no SLA fornecido mais alto possível.

Para a camada de aplicativo, Gerenciador de Tráfego deve ser configurado com perfis aninhados. Ao endossar esse design para o nível mais alto, você pode dimensionar as diferentes opções de aplicativo, por região. A implantação por região também tem uma abordagem de alta disponibilidade.

Desempenho

O desempenho do sistema é afetado por vários fatores no nível de computação e banco de dados. A SKU de um plano do Serviço de Aplicativo ou outra opção de computação afeta a memória e os núcleos disponíveis em cada região. Além disso, o número de regiões em que a camada de computação é implantada determina a escala que ela é capaz de lidar. A implantação de locais adicionais tira a pressão das regiões existentes e deve causar aumentos lineares na taxa de transferência máxima que o aplicativo pode atender.

Cosmos db deve ser configurado para que ele não cause um gargalo para os recursos da camada de computação. Cada banco de dados e contêiner no Cosmos DB deve ser configurado para dimensionamento automático e deve ser fornecido com um valor máximo de unidade de solicitação que garante que Cosmos DB não limite solicitações. Para determinar os valores máximos de unidade de solicitação apropriados para as entidades Cosmos DB, você pode executar testes de carga quase a taxa de transferência máxima aproximada para o aplicativo. Quando comparados com suas contrapartes mais fortes, os níveis de consistência mais fracos oferecem maior taxa de transferência e benefícios de desempenho.

Crucialmente, ao implementar a lógica no código que lê e grava no BD Cosmos, seja por meio do SDK, Azure Functions bindings e assim por diante, deve ser usado para que cada API regional encaminhe solicitações para a região de banco de dados Cosmos PreferredLocations mais próxima. Com base na configuração da conta do Azure Cosmos DB, na disponibilidade regional atual e na lista de preferências especificada, o SDK escolhe o ponto de extremidade mais ideal para executar as operações de leitura e gravação. Esse processo resulta em aumentos significativos de desempenho.

Resiliência

Para maior resiliência, você pode usar zonas de disponibilidade para implantações Cosmos BD do Azure. A resiliência também depende das opções de nível de consistência que você faz na implantação Cosmos banco de dados. Dependendo desse nível de consistência, você atingirá um nível diferente de resiliência (consulte Consistência, disponibilidade e trocas de desempenho para obter mais informações).

Escalabilidade

O dimensionamento é baseado em vários níveis neste diagrama. O Azure Cosmos DB foi desenvolvido para escala elástica e desempenho previsível. No nível do aplicativo, você precisa ver o modelo de computação usado. Azure Functions e o Serviço de Aplicativo podem fazer o autoescala. Para Máquinas Virtuais do Azure, você pode usar Conjuntos de Dimensionmento de Máquinas Virtuais do Azure. Quando você estiver ciente dessa necessidade, sempre deverá considerar uma opção sem servidor, quando possível.

Segurança

De uma perspectiva de segurança, conduza para um sistema baseado em identidade, em que Azure Active Directory pode ser usado para proteger o acesso ao ambiente. No back-end, o aplicativo é (por melhor design) acessado por meio de Identidades Gerenciadas, embora também seja possível considerar a abordagem de usar Azure Active Directory Usuários e Azure Key Vault para proteger o acesso. Além disso, a instância Cosmos db deve ser protegida ainda mais, de modo que as únicas entidades capazes de ler e escrever nele sejam os vários back-ends implantados em regiões diferentes. A restrição de IP pode ser aplicada à conta usando o firewall interno.

Também damos suporte Azure Active Directory RBAC diretamente no Cosmos DB SQL API.

Próximas etapas

Mais sobre o BD Cosmos Azure:

Mais sobre Gerenciador de Tráfego do Azure:

Ideias de solução relacionadas:

Arquiteturas completas relacionadas:

Diretrizes de arquitetura relacionadas: