As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Configuração de um roteador celular sem servidor para uma arquitetura baseada em células
Mian Tariq e Ioannis Lioupras, Amazon Web Services
Resumo
Como ponto de entrada para um sistema global de aplicações baseado em células, o roteador celular é responsável por atribuir eficientemente os usuários às células apropriadas e fornecer os endpoints aos usuários. O roteador celular executa funções como armazenar user-to-cell mapeamentos, monitorar a capacidade da célula e solicitar novas células quando necessário. É importante manter a funcionalidade do roteador celular durante possíveis interrupções.
A estrutura de design do roteador celular neste padrão se concentra na resiliência, escalabilidade e otimização geral da performance. O padrão usa roteamento estático, em que os clientes armazenam os endpoints no login inicial e se comunicam diretamente com as células. Esse desacoplamento aumenta a resiliência do sistema, ajudando a garantir a funcionalidade ininterrupta da aplicação baseado em células durante uma deficiência no roteador celular.
Esse padrão usa um AWS CloudFormation modelo para implantar a arquitetura. Para obter detalhes sobre o que o modelo implanta ou sobre como implantar a mesma configuração usando o Console de gerenciamento da AWS, consulte a seção Informações adicionais.
Importante
A demonstração, o código e o CloudFormation modelo apresentados nesse padrão são destinados apenas para fins explicativos. O material fornecido tem o único objetivo de ilustrar o padrão de design e auxiliar na compreensão. A demonstração e o código não estão prontos para produção e não devem ser usados para nenhuma atividade de produção ao vivo. Qualquer tentativa de usar o código ou a demonstração em um ambiente de produção é fortemente desencorajada e é por sua conta e risco. Recomendamos consultar os profissionais adequados e realizar testes completos antes de implementar esse padrão ou qualquer um de seus componentes em um ambiente de produção.
Pré-requisitos e limitações
Pré-requisitos
Uma conta da Amazon Web Services (AWS) ativa
A versão mais recente do AWS Command Line Interface (AWS CLI)
Credenciais da AWS com as permissões necessárias para criar a CloudFormation pilha, AWS Lambda as funções e os recursos relacionados
Versões do produto
Python 3.12
Arquitetura
O diagrama a seguir mostra um design de alto nível do roteador celular.

O diagrama mostra o seguinte fluxo de trabalho:
O usuário entra em contato com o Amazon API Gateway, que serve como frente para os endpoints da API do roteador celular.
O Amazon Cognito gerencia a autenticação e a autorização.
O AWS Step Functions fluxo de trabalho consiste nos seguintes componentes:
Orchestrator ‒ Os
Orchestratorusos AWS Step Functions para criar um fluxo de trabalho ou máquina de estado. O fluxo de trabalho é acionado pela API do roteador celular. OOrchestratorexecuta funções do Lambda com base no caminho do recurso.Dispatcher: a função do Lambda
Dispatcheridentifica e atribui uma célula estática por novo usuário registrado. A função pesquisa a célula com o menor número de usuários, a atribui ao usuário e retorna os endpoints.Mapeador ‒ A
Mapperoperação manipula os user-to-cell mapeamentos no banco de dados doRoutingDBAmazon DynamoDB que foi criado pelo modelo. CloudFormation Quando acionada, a funçãoMapperfornece aos usuários já atribuídos seus endpoints.Scaler: a função
Scaleracompanha a ocupação da célula e a capacidade disponível. Quando necessário, a funçãoScalerpode enviar uma solicitação por meio do Amazon Simple Queue Service (Amazon SQS) para a camada de provisionamento e implantação para solicitar novas células.Validator: a função
Validatorvalida os endpoints da célula e detecta possíveis problemas.
Ele
RoutingDBarmazena informações e atributos da célula (endpoints de API Região da AWS, estado, métricas).Quando a capacidade disponível das células excede um limite, o roteador celular solicita serviços de provisionamento e implantação por meio do Amazon SQS para criar novas células.
Quando novas células são criadas, RoutingDB é atualizado com base na camada de provisionamento e implantação. No entanto, esse processo está além do escopo desse padrão. Para obter uma visão geral das premissas do projeto de arquitetura baseada em células e detalhes sobre o design do roteador celular usado neste padrão, consulte a seção Informações adicionais.
Ferramentas
Serviços da AWS
O Amazon API Gateway ajuda você a criar, publicar, manter, monitorar e proteger REST, HTTP e WebSocket APIs em qualquer escala.
AWS CloudFormationajuda você a configurar AWS recursos, provisioná-los de forma rápida e consistente e gerenciá-los durante todo o ciclo de vida em Contas da AWS e. Regiões da AWS
O Amazon Cognito fornece autenticação, autorização e gerenciamento de usuários para suas aplicações Web e móveis.
O Amazon DynamoDB é um serviço de banco de dados NoSQL totalmente gerenciado que fornece performance rápida, previsível e escalável.
O AWS Lambda é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.
O Amazon Simple Queue Service (Amazon SQS) fornece uma fila hospedada segura, durável e disponível que ajuda a integrar e desacoplar sistemas e componentes de software distribuídos.
AWS Step Functionsé um serviço de orquestração sem servidor que ajuda você a combinar funções do Lambda e outras para criar aplicativos essenciais para os negócios. Serviços da AWS
Outras ferramentas
Python
é uma linguagem de programação de computador de uso geral.
Repositório de código
O código desse padrão está disponível no repositório GitHub Serverless-Cell-Router
Práticas recomendadas
Para obter as melhores práticas ao criar arquiteturas baseadas em células, consulte a seguinte orientação do Well-Architected AWS :
Épicos
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Clone o repositório de código de exemplo. | Para clonar o Serverless-Cell-Router GitHub repositório no seu computador, use o seguinte comando:
| Desenvolvedor |
Configure credenciais AWS CLI temporárias. | Configure o AWS CLI com credenciais para o seu Conta da AWS. Este passo a passo usa credenciais temporárias fornecidas pela linha de comando do AWS IAM Identity Center ou pela opção de acesso programático. Isso define as variáveis de | Desenvolvedor |
Criar um bucket do S3. | Crie um bucket do S3 que será usado para armazenar e acessar as funções do Serverless-Cell-Router Lambda para implantação pelo CloudFormation modelo. Para criar o bucket do S3, use o seguinte comando:
| Desenvolvedor |
Criar os arquivos .zip. | Crie um arquivo .zip para cada função do Lambda localizada no diretório Functions
| Desenvolvedor |
Copie os arquivos .zip para o bucket do S3. | Para copiar todos os arquivos .zip da função do Lambda para o bucket do S3, use os seguintes comandos:
| Desenvolvedor |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Implante o CloudFormation modelo. | Para implantar o CloudFormation modelo, execute o seguinte AWS CLI comando:
| Desenvolvedor |
Verifique o andamento. | Faça login no Console de gerenciamento da AWS, abra o CloudFormation console em https://console.aws.amazon.com/cloudformation/e verifique o progresso do desenvolvimento da pilha. Quando o status for | Desenvolvedor |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Atribua células ao usuário. | Para iniciar o
A resposta da função
| Desenvolvedor |
Recupere as células do usuário. | Para usar o
O
| Desenvolvedor |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Limpe os recursos. | Para evitar encargos adicionais em sua conta, faça o seguinte:
| Desenvolvedor de aplicativos |
Recursos relacionados
Referências
Vídeo
Physalia: arquitetura baseada em células para fornecer maior disponibilidade no Amazon EBS
https://www.youtube-nocookie.com/embed/6 Eu sei? RZMFic controles = 0
Mais informações
Instalações de design de arquitetura baseada em células
Embora este padrão se concentre no roteador celular, é importante entender todo o ambiente. O ambiente é estruturado em três camadas distintas:
A camada de roteamento, ou camada fina, que contém o roteador celular
A camada celular, compreendendo várias células
A camada de provisionamento e implantação, que provisiona células e implanta a aplicação
Cada camada mantém a funcionalidade mesmo no caso de deficiências que afetem outras camadas. Contas da AWS serve como um limite de isolamento de falhas.
O diagrama a seguir mostra as camadas em alto nível. A camada celular e a camada de provisionamento e implantação estão fora do escopo deste padrão.

Para obter mais informações sobre a arquitetura baseada em células, consulte Reducing the Scope of Impact with Cell-Based Architecture: Cell routing.
Padrão de design de roteador celular
O roteador celular é um componente compartilhado entre as células. Para mitigar possíveis impactos, é importante que a camada de roteamento use um design simplista e escalável horizontalmente que seja o mais fino possível. Servindo como ponto de entrada do sistema, a camada de roteamento consiste somente nos componentes necessários para atribuir eficientemente os usuários às células apropriadas. Os componentes dessa camada não se envolvem no gerenciamento ou na criação de células.
Este padrão usa roteamento estático, o que significa que o cliente armazena em cache os endpoints no login inicial e, posteriormente, estabelece comunicação direta com a célula. Interações periódicas entre o cliente e o roteador celular são iniciadas para confirmar o status atual ou recuperar quaisquer atualizações. Esse desacoplamento intencional permite operações ininterruptas para os usuários existentes em caso de inatividade do roteador celular e fornece funcionalidade e resiliência contínuas dentro do sistema.
Neste padrão, o roteador celular oferece suporte às seguintes funcionalidades:
Recuperar dados de células do banco de dados de células na camada de provisionamento e implantação e armazenar ou atualizar o banco de dados local.
Atribuir uma célula a cada novo usuário registrado da aplicação usando o algoritmo de atribuição de células.
Armazenando o user-to-cells mapeamento no banco de dados local.
Verificar a capacidade das células durante a atribuição do usuário e elevar um evento para a máquina de venda automática na camada de provisionamento e implantação para criar células.
Usar o algoritmo de critérios de criação de células para fornecer essa funcionalidade.
Responder às solicitações do usuário recém-registrado fornecendo as URLs células estáticas. Eles URLs serão armazenados em cache no cliente com um tempo de vida (TTL).
Responder às solicitações existentes do usuário de um URL inválido fornecendo um URL novo ou atualizado.
Para entender melhor o roteador celular de demonstração configurado pelo CloudFormation modelo, revise os seguintes componentes e etapas:
Definir e configurar o grupo de usuários do Amazon Cognito.
Definir e configurar a API do API Gateway para o roteador celular.
Crie uma tabela do DynamoDB.
Criar e configurar uma fila do SQS.
Implementar o
Orchestrator.Implemente as funções do Lambda:
Dispatcher,Scaler,Mapper,Validator.Avaliar e verificar.
O pressuposto é que a camada de provisionamento e implantação já esteja estabelecida. Os detalhes de implementação estão além do escopo desse artefato.
Como esses componentes são configurados e configurados por um CloudFormation modelo, as etapas a seguir são apresentadas de forma descritiva e de alto nível. A suposição é que você tenha as AWS habilidades necessárias para concluir a instalação e a configuração.
1. Definir e configurar o grupo de usuários do Amazon Cognito
Faça login no e abra Console de gerenciamento da AWS o console do Amazon Cognito em. https://console.aws.amazon.com/cognito/ Defina e configure um grupo de usuários do Amazon Cognito chamado CellRouterPool, com integração de aplicações, interface de usuário hospedada e as permissões necessárias.
2. Definir e configurar a API do API Gateway para o roteador celular
Abra o console do API Gateway em https://console.aws.amazon.com/apigateway/. Defina e configure uma API chamada CellRouter, usando um autorizador do Amazon Cognito integrado ao grupo de usuários CellRouterPool do Amazon Cognito. Implemente os seguintes elementos:
Recursos da API
CellRouter, incluindo os métodosPOSTIntegração com o fluxo de trabalho do Step Functions implementado na etapa 5
Autorização por meio do autorizador do Amazon Cognito
Mapeamentos de solicitações e respostas de integração
Alocação das permissões necessárias
3. Criar uma tabela do DynamoDB
Abra o console do DynamoDB https://console.aws.amazon.com/dynamodb/em e crie uma tabela padrão do DynamoDB chamada com a seguinte configuração: tbl_router
Chave de partição ‒
marketIdChave de classificação ‒
cellIdModo de capacidade: provisionada
Point-in-time recovery (PITR) ‒ Desligado
Na guia Índices, crie um índice secundário global chamado marketId-currentCapacity-index. A função do Lambda Scaler usará o índice para realizar pesquisas eficientes na célula com o menor número de usuários atribuídos.
Crie a estrutura da tabela com os seguintes atributos:
marketId: EuropacellId‒ cell-0002currentCapacity: 2endPoint_1: <seu endpoint da primeira região>endPoint_2: <seu endpoint da segunda região>IsHealthy: TruemaxCapacity: 10regionCode_1‒eu-north-1regionCode_2‒eu-central-1userIds‒ <seu endereço de e-mail>
4. Criar e configurar uma fila SQS
Abra o console do Amazon SQS em https://console.aws.amazon.com/sqs/e crie uma fila SQS padrão chamada configurada com criptografia de chave do CellProvisioning Amazon SQS.
5. Implementar o orquestrador
Desenvolva um fluxo de trabalho do Step Functions para servir como Orchestrator para o roteador. O fluxo de trabalho pode ser chamado por meio da API do roteador celular. O fluxo de trabalho executa as funções do Lambda designadas com base no caminho do recurso. Integre a função step com a API do API Gateway para o roteador celular CellRouter e configure as permissões necessárias para invocar as funções do Lambda.
O diagrama mostra o fluxo de trabalho. O estado de escolha invoca uma das funções do Lambda. Se a função do Lambda for bem-sucedida, o fluxo de trabalho será encerrado. Se a função do Lambda falhar, o estado de falha será chamado.

6. Implementar as funções do Lambda
Implemente as funções Dispatcher, Mapper, Scaler e Validator. Ao configurar cada função na demonstração, defina uma função para a função e atribua as permissões necessárias para realizar as operações necessárias na tabela do DynamoDB tbl_router. Além disso, integre cada função ao fluxo de trabalho Orchestrator.
Função Dispatcher
A função Dispatcher é responsável por identificar e atribuir uma única célula estática para cada novo usuário cadastrado. Quando um novo usuário se registra na aplicação global, a solicitação vai para a função Dispatcher. A função processa a solicitação usando critérios de avaliação predefinidos, como os seguintes:
Região: selecione a célula no mercado em que o usuário está localizado. Por exemplo, se o usuário estiver acessando o aplicativo global da Europa, selecione uma célula que use Regiões da AWS na Europa.
Proximidade ou latência: selecione a célula mais próxima do usuário. Por exemplo, se o usuário estiver acessando a aplicação da Holanda, a função considera uma célula que usa Frankfurt e Irlanda. A decisão sobre qual célula está mais próxima é baseada em métricas como latência entre a localização do usuário e as regiões da célula. Neste exemplo de padrão, as informações são alimentadas estaticamente por meio da camada de provisionamento e implantação.
Integridade: a função
Dispatcherverifica se a célula selecionada está íntegra com base no estado da célula fornecido (Healthy = true ou false).Capacidade: a distribuição do usuário é baseada no menor número de usuários em uma lógica de célula, portanto, o usuário é atribuído à célula que tem o menor número de usuários.
nota
Esses critérios são apresentados apenas para explicar esse padrão de exemplo. Para uma implementação real de roteador celular, você pode definir critérios mais refinados e baseados em casos de uso.
O Orchestrator invoca a função Dispatcher para atribuir usuários às células. Nessa função de demonstração, o valor de mercado é um parâmetro estático definido como europe.
A função Dispatcher avalia se uma célula já está atribuída ao usuário. Se a célula já estiver atribuída, a função Dispatcher retornará os endpoints da célula. Se nenhuma célula for atribuída ao usuário, a função pesquisará a célula com o menor número de usuários, a atribuirá ao usuário e retornará os endpoints. A eficiência da consulta de pesquisa celular é otimizada usando o índice secundário global.
Função Mapper
A Mapper função supervisiona o armazenamento e a manutenção dos user-to-cell mapeamentos no banco de dados. Uma única célula é alocada para cada usuário registrado. Cada célula tem duas células distintas URLs — uma para cada região da AWS. Servindo como endpoints de API hospedados no API Gateway, eles URLs funcionam como pontos de entrada para o aplicativo global.
Quando a Mapper função recebe uma solicitação do aplicativo cliente, ela executa uma consulta na tbl_router tabela do DynamoDB para recuperar user-to-cell o mapeamento associado ao ID de e-mail fornecido. Se encontrar uma célula atribuída, a Mapper função fornecerá imediatamente as duas URLs células. A Mapper função também monitora ativamente as alterações na célula URLs e inicia notificações ou atualizações nas configurações do usuário.
Função Scaler
A função Scaler gerencia a capacidade residual da célula. Para cada nova solicitação de registro de usuário, a função Scaler avalia a capacidade disponível da célula que a função Dispatcher atribuiu ao usuário. Se a célula tiver atingido seu limite predeterminado de acordo com os critérios de avaliação especificados, a função iniciará uma solicitação por meio de uma fila do Amazon SQS para a camada de provisionamento e implantação, solicitando o provisionamento e a implantação de novas células. O dimensionamento das células pode ser executado com base em um conjunto de critérios de avaliação, como os seguintes:
Máximo de usuários: cada célula pode ter um número máximo de 500 usuários.
Capacidade do buffer: a capacidade do buffer de cada célula é de 20%, o que significa que cada célula pode ser atribuída a 400 usuários a qualquer momento. Os 20% restantes da capacidade de buffer são reservados para futuros casos de uso e tratamento de cenários inesperados (por exemplo, quando os serviços de criação e provisionamento de células não estão disponíveis).
Criação de células: assim que uma célula existente atinge 70% da capacidade, uma solicitação é acionada para criar uma célula adicional.
nota
Esses critérios são apresentados apenas para explicar esse padrão de exemplo. Para uma implementação real de roteador celular, você pode definir critérios mais refinados e baseados em casos de uso.
O código de demonstração Scaler é executado pelo Orchestrator depois que Dispatcher atribuir uma célula com sucesso ao usuário recém-registrado. Ao receber o ID da célula do Dispatcher, o Scaler avalia se a célula designada tem capacidade adequada para acomodar usuários adicionais, com base em critérios de avaliação predefinidos. Se a capacidade da célula for insuficiente, a função Scaler enviará uma mensagem para o serviço Amazon SQS. Essa mensagem é recuperada pelo serviço na camada de provisionamento e implantação, iniciando o provisionamento de uma nova célula.
Função Validador
A função Validator identifica e resolve problemas relacionados ao acesso à célula. Quando um usuário faz login no aplicativo global, o aplicativo recupera as células das configurações do perfil URLs do usuário e encaminha as solicitações do usuário para uma das duas regiões atribuídas dentro da célula. Se URLs estiverem inacessíveis, o aplicativo poderá enviar uma solicitação de URL de validação para o roteador celular. O roteador celular Orchestrator invoca o Validator. O Validator inicia o processo de validação. A validação pode incluir, entre outras verificações, o seguinte:
Célula de referência cruzada URLs na solicitação com URLs armazenada no banco de dados para identificar e processar possíveis atualizações
Executar uma verificação de integridade profunda (por exemplo, uma solicitação
HTTP GETpara o endpoint da célula)
Concluindo, a função Validator fornece respostas às solicitações da aplicação do cliente, fornecendo o status de validação junto com todas as etapas de remediação necessárias.
O Validator projetado para aprimorar a experiência do usuário. Considere um cenário em que determinados usuários tenham dificuldade em acessar a aplicação global porque um incidente faz com que as células fiquem temporariamente indisponíveis. Em vez de apresentar erros genéricos, a função Validator pode fornecer etapas instrutivas de correção. Essas etapas talvez incluam as seguintes ações:
Informe os usuários sobre o incidente.
Forneça um tempo de espera aproximado antes da disponibilidade do serviço.
Forneça um número de contato de suporte para obter informações adicionais.
O código de demonstração da Validator função verifica se a célula fornecida pelo usuário URLs na solicitação corresponde aos registros armazenados na tbl_router tabela. A função Validator também verifica se as células estão íntegras.