Computação de bases de dados sem servidor com o Azure Cosmos DB e Funções do Azure

APLICA-SE A: NoSQL

A computação sem servidor tem tudo a ver com a capacidade de se concentrar em partes de lógica individuais que são repetíveis e sem estado. Estas peças não necessitam de gestão da infraestrutura e consomem recursos apenas durante os segundos ou milissegundos para os quais são executadas. No centro do movimento de computação sem servidor estão as funções, que são disponibilizadas no ecossistema do Azure por Funções do Azure. Para saber mais sobre outros ambientes de execução sem servidor no Azure, veja a página sem servidor no Azure .

Com a integração nativa entre o Azure Cosmos DB e o Funções do Azure, pode criar acionadores de base de dados, enlaces de entrada e enlaces de saída diretamente a partir da sua conta do Azure Cosmos DB. Com o Funções do Azure e o Azure Cosmos DB, pode criar e implementar aplicações sem servidor condicionadas por eventos com acesso de baixa latência a dados avançados para uma base de utilizadores global.

Descrição Geral

O Azure Cosmos DB e o Funções do Azure permitem-lhe integrar as bases de dados e as aplicações sem servidor das seguintes formas:

  • Crie um acionador de Funções do Azure baseado em eventos para o Azure Cosmos DB. Este acionador baseia-se em fluxos de feed de alterações para monitorizar o contentor do Azure Cosmos DB para obter alterações. Quando são efetuadas alterações a um contentor, o fluxo do feed de alterações é enviado para o acionador, que invoca a Função do Azure.
  • Em alternativa, vincule uma Função do Azure a um contentor do Azure Cosmos DB com um enlace de entrada. Os enlaces de entrada leem dados de um contentor quando uma função é executada.
  • Vincular uma função a um contentor do Azure Cosmos DB com um enlace de saída. Os enlaces de saída escrevem dados num contentor quando uma função é concluída.

Nota

Atualmente, Funções do Azure acionador, enlaces de entrada e enlaces de saída do Azure Cosmos DB são suportados para utilização apenas com a API para NoSQL. Para todas as outras APIs do Azure Cosmos DB, deve aceder à base de dados a partir da sua função com o cliente estático da sua API.

O diagrama seguinte ilustra cada uma destas três integrações:

Como o Azure Cosmos DB e o Funções do Azure se integram

O acionador Funções do Azure, o enlace de entrada e o enlace de saída do Azure Cosmos DB podem ser utilizados nas seguintes combinações:

  • Um Funções do Azure acionador do Azure Cosmos DB pode ser utilizado com um enlace de saída para um contentor do Azure Cosmos DB diferente. Depois de uma função efetuar uma ação num item no feed de alterações, pode escrevê-la noutro contentor (escrevê-la no mesmo contentor de origem criaria efetivamente um ciclo recursivo). Em alternativa, pode utilizar um acionador de Funções do Azure para o Azure Cosmos DB para migrar de forma eficaz todos os itens alterados de um contentor para um contentor diferente, com a utilização de um enlace de saída.
  • Os enlaces de entrada e os enlaces de saída do Azure Cosmos DB podem ser utilizados na mesma Função do Azure. Isto funciona bem nos casos em que pretende localizar determinados dados com o enlace de entrada, modificá-lo na Função do Azure e, em seguida, guardá-lo no mesmo contentor ou num contentor diferente, após a modificação.
  • Um enlace de entrada para um contentor do Azure Cosmos DB pode ser utilizado na mesma função que um acionador de Funções do Azure para o Azure Cosmos DB e também pode ser utilizado com ou sem um enlace de saída. Pode utilizar esta combinação para aplicar informações de troca de moeda atualizadas (extraídas com um enlace de entrada para um contentor de troca) ao feed de alterações de novas encomendas no seu serviço de carrinho de compras. O total do carrinho de compras atualizado, com a conversão de moeda atual aplicada, pode ser escrito num terceiro contentor através de um enlace de saída.

Casos de utilização

Os seguintes casos de utilização demonstram algumas formas de tirar o máximo partido dos seus dados do Azure Cosmos DB ao ligar os seus dados a Funções do Azure condicionadas por eventos.

Caso de utilização do IoT – Funções do Azure enlace de saída e acionador para o Azure Cosmos DB

Nas implementações de IoT, pode invocar uma função quando a luz do motor de verificação é apresentada num carro ligado.

Implementação: Utilizar um acionador de Funções do Azure e um enlace de saída para o Azure Cosmos DB

  1. Um Funções do Azure acionador do Azure Cosmos DB é utilizado para acionar eventos relacionados com alertas de automóveis, como a luz do motor de verificação que se acende num carro ligado.
  2. Quando a luz do motor de verificação é fornecida, os dados do sensor são enviados para o Azure Cosmos DB.
  3. O Azure Cosmos DB cria ou atualiza novos documentos de dados do sensor e, em seguida, essas alterações são transmitidas para o Funções do Azure acionador do Azure Cosmos DB.
  4. O acionador é invocado em todas as alterações de dados à recolha de dados do sensor, uma vez que todas as alterações são transmitidas através do feed de alterações.
  5. É utilizada uma condição de limiar na função para enviar os dados do sensor para o departamento de garantia.
  6. Se a temperatura também for superior a um determinado valor, também será enviado um alerta ao proprietário.
  7. O enlace de saída na função atualiza o registo do automóvel noutro contentor do Azure Cosmos DB para armazenar informações sobre o evento do motor de verificação.

A imagem seguinte mostra o código escrito na portal do Azure para este acionador.

Criar um acionador de Funções do Azure para o Azure Cosmos DB no portal do Azure

Caso de utilização financeira – Acionador de temporizador e enlace de entrada

Em implementações financeiras, pode invocar uma função quando o saldo de uma conta bancária é inferior a um determinado montante.

Implementação: Um acionador de temporizador com um enlace de entrada do Azure Cosmos DB

  1. Com um acionador de temporizador, pode obter as informações de saldo da conta bancária armazenadas num contentor do Azure Cosmos DB em intervalos temporizados com um enlace de entrada.
  2. Se o saldo estiver abaixo do limiar de saldo baixo definido pelo utilizador, siga uma ação da Função do Azure.
  3. O enlace de saída pode ser uma integração do SendGrid que envia um e-mail de uma conta de serviço para os endereços de e-mail identificados para cada uma das contas de saldo baixo.

As imagens seguintes mostram o código na portal do Azure para este cenário.

Index.js ficheiro para um acionador de Temporizador para um cenário financeiro

Ficheiro Run.csx para um acionador de Temporizador para um cenário financeiro

Caso de utilização de jogos – acionador Funções do Azure e enlace de saída para o Azure Cosmos DB

Nos jogos, quando um novo utilizador é criado, pode procurar outros utilizadores que possam conhecê-los através do Azure Cosmos DB para Gremlin. Em seguida, pode escrever os resultados numa base de dados SQL ou do Azure Cosmos DB para facilitar a obtenção.

Implementação: Utilizar um acionador de Funções do Azure e um enlace de saída para o Azure Cosmos DB

  1. Com uma base de dados de gráficos do Azure Cosmos DB para armazenar todos os utilizadores, pode criar uma nova função com um acionador Funções do Azure para o Azure Cosmos DB.
  2. Sempre que um novo utilizador é inserido, a função é invocada e, em seguida, o resultado é armazenado com um enlace de saída.
  3. A função consulta a base de dados de gráficos para procurar todos os utilizadores que estão diretamente relacionados com o novo utilizador e devolve esse conjunto de dados à função.
  4. Estes dados são então armazenados no Azure Cosmos DB, que pode ser facilmente obtido por qualquer aplicação de front-end que mostre ao novo utilizador os seus amigos ligados.

Caso de utilização de revenda - Várias funções

Nas implementações de revenda, quando um utilizador adiciona um item ao respetivo cesto, tem agora a flexibilidade de criar e invocar funções para componentes opcionais do pipeline de negócio.

Implementação: Vários Funções do Azure acionadores para o Azure Cosmos DB escutar um contentor

  1. Pode criar vários Funções do Azure ao adicionar Funções do Azure acionadores para o Azure Cosmos DB a cada um, todos os quais ouvem o mesmo feed de alterações de dados do carrinho de compras. Quando várias funções escutam o mesmo feed de alterações, é necessária uma nova coleção de concessão para cada função. Para obter mais informações sobre coleções de concessões, veja Compreender a biblioteca processador do Feed de Alterações.
  2. Sempre que um novo item é adicionado a um carrinho de compras de utilizadores, cada função é invocada de forma independente pelo feed de alterações do contentor do carrinho de compras.
    • Uma função pode utilizar o conteúdo do cesto atual para alterar a apresentação de outros itens em que o utilizador possa estar interessado.

    • Outra função pode atualizar os totais de inventário.

    • Outra função pode enviar informações ao cliente de determinados produtos para o departamento de marketing, que lhes envia um mailer promocional.

      Qualquer departamento pode criar uma Funções do Azure para o Azure Cosmos DB ao ouvir o feed de alterações e certifique-se de que não irá atrasar os eventos críticos de processamento de encomendas no processo.

Em todos estes casos de utilização, uma vez que a função desacoplou a própria aplicação, não precisa de criar sempre novas instâncias de aplicações. Em vez disso, Funções do Azure cria funções individuais para concluir processos discretos conforme necessário.

Ferramentas

A integração nativa entre o Azure Cosmos DB e Funções do Azure está disponível no portal do Azure e no Visual Studio.

Porquê escolher Funções do Azure integração para computação sem servidor?

Funções do Azure fornece a capacidade de criar unidades de trabalho dimensionáveis ou partes concisas de lógica que podem ser executadas a pedido, sem aprovisionar ou gerir infraestruturas. Ao utilizar Funções do Azure, não tem de criar uma aplicação completa para responder a alterações na sua base de dados do Azure Cosmos DB, pode criar pequenas funções reutilizáveis para tarefas específicas. Além disso, também pode utilizar dados do Azure Cosmos DB como entrada ou saída para uma Função do Azure em resposta a eventos como pedidos HTTP ou um acionador temporizado.

O Azure Cosmos DB é a base de dados recomendada para a arquitetura de computação sem servidor pelos seguintes motivos:

  • Acesso instantâneo a todos os seus dados: tem acesso granular a todos os valores armazenados porque o Azure Cosmos DB indexa automaticamente todos os dados por predefinição e torna esses índices imediatamente disponíveis. Isto significa que consegue consultar, atualizar e adicionar constantemente novos itens à base de dados e ter acesso instantâneo através de Funções do Azure.

  • Sem esquema. O Azure Cosmos DB não tem esquemas, pelo que consegue processar exclusivamente qualquer saída de dados de uma Função do Azure. Esta abordagem "processar tudo" torna mais simples criar várias Funções que produzem para o Azure Cosmos DB.

  • Débito dimensionável. O débito pode ser aumentado e reduzido verticalmente instantaneamente no Azure Cosmos DB. Se tiver centenas ou milhares de Funções a consultar e a escrever no mesmo contentor, pode aumentar verticalmente as RU/s para processar a carga. Todas as funções podem funcionar em paralelo com as RU/s alocadas e é garantido que os seus dados são consistentes.

  • Replicação global. Pode replicar dados do Azure Cosmos DB em todo o mundo para reduzir a latência, localizando geográficos os seus dados mais próximos do local onde estão os seus utilizadores. Tal como acontece com todas as consultas do Azure Cosmos DB, os dados dos acionadores orientados por eventos são dados de leitura do Azure Cosmos DB mais próximos do utilizador.

Se pretender integrar-se com Funções do Azure para armazenar dados e não precisar de uma indexação profunda ou se precisar de armazenar anexos e ficheiros de multimédia, o acionador de Armazenamento de Blobs do Azure poderá ser uma opção melhor.

Vantagens da Funções do Azure:

  • Condicionada por eventos. Funções do Azure é condicionada por eventos e pode ouvir um feed de alterações do Azure Cosmos DB. Isto significa que não precisa de criar lógica de escuta, basta ficar atento às alterações que está a escutar.

  • Sem limites. As funções são executadas em paralelo e o serviço aumenta o número de vezes que precisar. Pode definir os parâmetros.

  • Bom para tarefas rápidas. O serviço cria novas instâncias de funções sempre que um evento é acionado e fecha-as assim que a função for concluída. Paga apenas o tempo em que as suas funções estão em execução.

Se não tiver a certeza se o Flow, o Logic Apps, o Funções do Azure ou o WebJobs são os melhores para a sua implementação, consulte Escolher entre Flow, Logic Apps, Funções e WebJobs.

Passos seguintes

Agora, vamos ligar o Azure Cosmos DB e Funções do Azure de forma real: