Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A computação sem servidor tem tudo a ver com a capacidade de se concentrar em partes individuais da lógica que são repetíveis e sem estado. Esses componentes não exigem gerenciamento de infraestrutura e consomem recursos apenas durante os segundos ou milissegundos em que são executados. No núcleo da movimentação de computação sem servidor estão as funções, que são disponibilizadas no ecossistema do Azure pelo Azure Functions. Para saber mais sobre outros ambientes de execução sem servidor no Azure, consulte sem servidor na página do Azure .
Com a integração nativa entre o Azure Cosmos DB e o Azure Functions, você pode criar gatilhos de banco de dados, associações de entrada e associações de saída diretamente da sua conta do Azure Cosmos DB. Usando o Azure Functions e o Azure Cosmos DB, você pode criar e implantar aplicativos sem servidor controlados por eventos com acesso de baixa latência a dados avançados para uma base de usuários global.
O Azure Functions poderá criar conexões de banco de dados isoladas por invocação se o cliente de banco de dados não for gerenciado corretamente, o que pode afetar o desempenho da conexão sob alta simultaneidade, especialmente no plano de consumo. No entanto, ao usar associações ou gatilhos do Cosmos DB, o Azure Functions reutiliza internamente um cliente compartilhado do SDK do Cosmos DB, garantindo um pool de conexões eficiente em várias invocações. O Azure Cosmos DB dá suporte a modos de conectividade baseados em HTTP e TCP. Essa arquitetura dá suporte a cargas de trabalho escalonáveis e de alto desempenho que exigem acesso dinâmico a dados.
Visão geral
O Azure Cosmos DB e o Azure Functions permitem que você integre seus bancos de dados e aplicativos sem servidor das seguintes maneiras:
- Crie um gatilho do Azure Functions controlado por eventos para o Azure Cosmos DB. Esse gatilho depende de fluxos do feed de alterações para monitorar o contêiner do Azure Cosmos DB em busca de alterações. Quando quaisquer alterações são feitas em um contêiner, o fluxo de feed de alterações é enviado para o disparador, que invoca a função Azure.
- Como alternativa, associe uma Função do Azure a um contêiner do Azure Cosmos DB usando uma associação de entrada. As associações de entrada leem dados de um contêiner quando uma função é executada.
- Associe uma função a um contêiner do Azure Cosmos DB usando uma associação de saída. As associações de saída gravam dados em um contêiner quando uma função é concluída.
Observação
Atualmente, o gatilho, as associações de entrada e as de saída do Azure Functions para Azure Cosmos DB têm suporte apenas para uso com a API para NoSQL. Para todas as outras APIs do Azure Cosmos DB, você deve acessar o banco de dados de sua função usando o cliente estático para sua API.
O diagrama a seguir ilustra cada uma dessas três integrações:
O gatilho do Azure Functions, a associação de entrada e a associação de saída para o Azure Cosmos DB podem ser usados nas seguintes combinações:
- É possível usar um gatilho do Azure Functions para Azure Cosmos DB com uma associação de saída para um contêiner diferente do Azure Cosmos DB. Depois que uma função executa uma ação em um item no feed de alterações, você pode gravá-la em outro contêiner (gravá-la no mesmo contêiner de onde ela veio efetivamente criaria um loop recursivo). Ou você pode usar um gatilho do Azure Functions para o Azure Cosmos DB para migrar efetivamente todos os itens alterados de um contêiner para outro contêiner diferente, utilizando uma vinculação de saída.
- Associações de entrada e associações de saída para o Azure Cosmos DB podem ser usadas na mesma Função do Azure. Isso funciona bem nos casos em que você deseja encontrar determinados dados com a associação de entrada, modificá-los na Função do Azure e salvá-los no mesmo contêiner ou em um contêiner diferente, após a modificação.
- Uma associação de entrada a um contêiner do Azure Cosmos DB pode ser usada na mesma função que um gatilho do Azure Functions para o Azure Cosmos DB e também pode ser usada com ou sem uma associação de saída. Você pode usar essa combinação para aplicar informações de câmbio atualizadas (obtidas com uma associação de entrada a um contêiner de câmbio) ao feed de alterações de novos pedidos no serviço de carrinho de compras. O total do carrinho de compras atualizado, com a conversão de moeda atual aplicada, pode ser gravado em um terceiro contêiner usando uma associação de saída.
Casos de uso
Os casos de uso a seguir demonstram algumas maneiras de aproveitar ao máximo seus dados do Azure Cosmos DB conectando seus dados ao Azure Functions controlado por eventos.
Caso de uso de IoT – gatilho do Azure Functions e associação de saída para Azure Cosmos DB
Em implementações de IoT, você pode invocar uma função quando a luz de advertência do motor é exibida em um carro conectado.
Implementação: use um gatilho do Azure Functions e uma associação de saída para Azure Cosmos DB
- Um gatilho do Azure Functions para Azure Cosmos DB é usado para disparar eventos relacionados a alertas de carro, como a luz do motor de verificação proveniente de um carro conectado.
- Quando a luz de verificação do motor acende, os dados do sensor são enviados para o Azure Cosmos DB.
- O Azure Cosmos DB cria ou atualiza novos documentos de dados do sensor e, em seguida, essas alterações são transmitidas para o gatilho do Azure Functions para o Azure Cosmos DB.
- O gatilho é invocado a cada alteração de dados na coleta de dados dos sensores, pois todas as alterações são transmitidas em fluxo contínuo por meio do feed de alterações.
- Uma condição de limite é usada na função para enviar os dados do sensor para o departamento de garantia.
- Se a temperatura também estiver acima de um determinado valor, um alerta também será enviado ao proprietário.
- A associação de saída na função atualiza o registro do carro em outro contêiner do Azure Cosmos DB para armazenar informações sobre o evento do mecanismo de verificação.
A imagem a seguir mostra o código escrito no portal do Azure para esse gatilho.
Caso de uso financeiro – gatilho de temporizador e vinculação de entrada
Em implementações financeiras, você pode invocar uma função quando um saldo de conta bancária estiver abaixo de um determinado valor.
Implementação: um gatilho de temporizador com uma associação de entrada do Azure Cosmos DB
- Usando um gatilho de temporizador, você pode recuperar as informações de saldo de conta bancária armazenadas em um contêiner do Azure Cosmos DB em intervalos cronometrados usando uma associação de entrada.
- Se o saldo estiver abaixo do limite de saldo baixo definido pelo usuário, siga com uma ação da Função do Azure.
- A associação de saída pode ser uma integração do SendGrid que envia um email de uma conta de serviço para os endereços de email identificados para cada uma das contas de baixo saldo.
As imagens a seguir mostram o código no portal do Azure para esse cenário.
Caso de uso em jogos – gatilho do Azure Functions e associação de saída para Azure Cosmos DB
Em jogos, quando um novo usuário é criado, você pode pesquisar outros usuários que possam conhecê-los usando o Azure Cosmos DB para Gremlin. Em seguida, você pode gravar os resultados em um banco de dados SQL ou do Azure Cosmos DB para facilitar a recuperação.
Implementação: use um gatilho do Azure Functions e uma associação de saída para Azure Cosmos DB
- Usando um banco de dados de grafo do Azure Cosmos DB para armazenar todos os usuários, você pode criar uma nova função com um gatilho do Azure Functions para Azure Cosmos DB.
- Sempre que um novo usuário é inserido, a função é invocada e, em seguida, o resultado é armazenado usando uma associação de saída.
- A função consulta o banco de dados do grafo para pesquisar todos os usuários diretamente relacionados ao novo usuário e retorna esse conjunto de dados para a função.
- Esses dados são armazenados no Azure Cosmos DB, que pode ser facilmente recuperado por qualquer aplicativo front-end que mostre ao novo usuário seus amigos conectados.
Caso de uso de varejo – várias funções
Em implementações de varejo, quando um usuário adiciona um item à cesta, agora você tem a flexibilidade de criar e invocar funções para componentes opcionais de pipeline de negócios.
Implementação: vários gatilhos do Azure Functions para Azure Cosmos DB escutando um contêiner
- É possível criar vários Azure Functions adicionando gatilhos do Azure Functions para Azure Cosmos DB a cada um – todos eles escutam o mesmo feed de alterações de dados de um carrinho de compras. Observe que, quando várias funções escutam o mesmo feed de alterações, uma nova coleção de concessão é necessária para cada uma delas. Para obter mais informações sobre coleções de concessão, confira Noções básicas sobre a biblioteca de processador do feed de alterações.
- Sempre que um novo item é adicionado a um carrinho de compras de usuários, cada função é invocada independentemente pelo feed de alterações do contêiner do carrinho de compras.
Uma função pode usar o conteúdo da cesta atual para alterar a exibição de outros itens em que o usuário pode estar interessado.
Outra função pode atualizar os totais de inventário.
Outra função pode enviar informações do cliente para determinados produtos para o departamento de marketing, que envia um mailer promocional.
Qualquer departamento pode criar um gatilho do Azure Functions para Azure Cosmos DB ouvindo o feed de alterações para garantir que ele não atrase eventos críticos de processamento de pedido no processo.
Em todos esses casos de uso, como a função desacopla o próprio aplicativo, você não precisa criar novas instâncias de aplicativo o tempo todo. Em vez disso, o Azure Functions cria funções individuais para concluir processos discretos conforme necessário.
Tooling
A integração nativa entre o Azure Cosmos DB e o Azure Functions está disponível no portal do Azure e no Visual Studio.
No portal do Azure Functions, você pode criar um gatilho. Para obter instruções de início rápido, consulte Criar um gatilho do Azure Functions para o Azure Cosmos DB no portal do Azure.
No portal do Azure Cosmos DB, você pode adicionar um gatilho do Azure Functions para o Azure Cosmos DB a um aplicativo existente do Azure Functions no mesmo grupo de recursos.
No Visual Studio, você pode criar o gatilho usando as Ferramentas do Azure Functions:
Por que escolher a integração do Azure Functions para computação sem servidor?
O Azure Functions fornece a capacidade de criar unidades escalonáveis de trabalho ou partes concisas de lógica que podem ser executados sob demanda, sem provisionar ou gerenciar a infraestrutura. Usando o Azure Functions, você não precisa criar um aplicativo completo para responder a alterações no banco de dados do Azure Cosmos DB, pode criar pequenas funções reutilizáveis para tarefas específicas. Além disso, você também pode usar dados do Azure Cosmos DB como entrada ou saída para uma Função do Azure em resposta a eventos como solicitações HTTP ou um gatilho cronometrado.
O Azure Cosmos DB é o banco de dados recomendado para sua arquitetura de computação sem servidor pelos seguintes motivos:
Acesso instantâneo a todos os seus dados: você tem acesso granular a todos os valores armazenados porque o Azure Cosmos DB indexa automaticamente todos os dados por padrão e disponibiliza esses índices imediatamente. Isso significa que você pode consultar, atualizar e adicionar novos itens constantemente ao banco de dados e ter acesso instantâneo por meio do Azure Functions.
Sem esquema. O Azure Cosmos DB não tem esquema, portanto, ele é capaz exclusivamente de lidar com qualquer saída de dados de uma Função do Azure. Essa abordagem de "manipular qualquer coisa" torna simples criar várias Funções que geram todas as saídas para o Azure Cosmos DB.
Taxa de transferência escalonável. A taxa de transferência pode ser ampliada e reduzida instantaneamente no Azure Cosmos DB. Caso você tenha centenas ou milhares de funções consultando e gravando no mesmo contêiner, expanda as RU/s para lidar com a carga. Todas as funções podem funcionar em paralelo usando suas RU/s alocadas e seus dados têm a garantia de serem consistentes.
Replicação global. Você pode replicar dados do Azure Cosmos DB em todo o mundo para reduzir a latência, localizando geograficamente seus dados mais próximos de onde seus usuários estão. Assim como em todas as consultas do Azure Cosmos DB, os dados de gatilhos acionados por eventos são lidos do Azure Cosmos DB mais próximo do usuário.
Se você estiver procurando se integrar ao Azure Functions para armazenar dados e não precisar de indexação profunda ou se precisar armazenar anexos e arquivos de mídia, o gatilho do Armazenamento de Blobs do Azure poderá ser uma opção melhor.
Benefícios do Azure Functions:
Controlado por eventos. O Azure Functions é controlado por eventos e pode ouvir um feed de alterações do Azure Cosmos DB. Isso significa que você não precisa criar a lógica de escuta, apenas ficar atento às alterações que você está escutando.
Sem limites. O Functions é executado em paralelo e o serviço cria o número de funções que forem necessárias. Você define 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 é concluída. Você só paga pelo tempo em que suas funções estão em execução.
Se você não tiver certeza se Flow, Aplicativos Lógicos, Azure Functions ou WebJobs são melhores para sua implementação, consulte Escolher entre Fluxo, Aplicativos Lógicos, Funções e WebJobs.
Próximas etapas
Agora, vamos conectar o Azure Cosmos DB e o Azure Functions de verdade: