Cobrança das Durable Functions
As Durable Functions são cobradas da mesma forma que o Azure Functions. Para saber mais, confira Preços do Azure Functions.
Ao executar funções de orquestrador no plano de Consumo do Azure Functions, é necessário ter conhecimento de alguns comportamentos de cobrança. As seções a seguir descrevem esses comportamentos e seu efeito mais detalhadamente.
Cobrança de reprodução da função funções de orquestrador
As funções de orquestrador podem ser reproduzidas várias vezes durante o tempo de vida de uma orquestração. Cada reprodução é exibida pelo Azure Functions Runtime como uma invocação de função distinta. Por esse motivo, no plano de Consumo do Azure Functions, você será cobrado por cada reprodução da função de orquestrador. Outros tipos de plano não são cobrados pela reprodução da função do orquestrador.
Aguardar e gerar em funções de orquestrador
Quando uma função de orquestrador aguarda a conclusão de uma tarefa assíncrona, o runtime considera que a invocação de função específica será concluída. A cobrança da função de orquestrador é interrompida nesse momento. Ele não é retomado até a próxima reprodução da função de orquestrador. Você não é cobrado por nenhum tempo gasto esperando ou gerando em uma função funções de orquestrador.
Observação
Funções que chamam outras funções são consideradas um antipadrão sem servidor por algumas pessoas. Isso ocorre devido a um problema conhecido como cobrança dupla. Quando uma função chama outra função diretamente, as duas são executadas ao mesmo tempo. A função chamada está executando ativamente o código, enquanto a função chamadora está aguardando uma resposta. Nesse caso, é necessário pagar pelo tempo que a função chamadora gasta aguardando a execução da função chamada.
Não há dupla cobrança em funções de orquestrador. Uma cobrança da função de orquestrador é interrompida enquanto aguarda o resultado de uma função de atividade ou suborquestração.
Sondagem HTTP durável
As funções de orquestrador podem realizar chamadas HTTP de longa execução a pontos de extremidade externos, conforme descrito no artigo recursos HTTP. As APIs "call HTTP" podem sondar internamente um ponto de extremidade HTTP enquanto segue o padrão assíncrono 202.
No momento, não há cobrança direta para operações internas de sondagem HTTP. No entanto, a sondagem interna pode fazer a função de orquestrador ser reproduzida periodicamente. Você será cobrado pelas cobranças padrão dessas repetições de função internas.
Transações do Armazenamento do Microsoft Azure
As Durable Functions usam o Armazenamento do Azure por padrão para manter o estado persistente, processar mensagens e gerenciar partições por meio de concessões de blob. Como você é proprietário desta conta de armazenamento, os custos de transação são cobrados de sua assinatura do Azure. Para obter mais informações sobre os artefatos do Armazenamento do Azure usados pelas Durable Functions, confira o artigo Hubs de tarefas.
Vários fatores contribuem para os custos reais do Armazenamento do Azure incorridos pelo seu aplicativo Durable Functions:
- Um único aplicativo de funções é associado a um único hub de tarefas, que compartilha um conjunto de recursos do Armazenamento do Azure. Esses recursos são usados por todas as Durable Functions em um aplicativo de funções. O número real de funções no aplicativo de funções não tem efeito sobre os custos de transação do Armazenamento do Azure.
- Cada instância do aplicativo de funções sonda internamente várias filas na conta de armazenamento usando um algoritmo de sondagem de retirada exponencial. Uma instância de aplicativo ociosa sonda as filas com menos frequência do que um aplicativo ativo, o que resulta em menos custos de transação. Para obter mais informações sobre o comportamento de sondagem de fila do Durable Functions ao usar o provedor de Armazenamento do Microsoft Azure, consulte a seção de sondagem de fila da documentação do provedor de Armazenamento do Microsoft Azure.
- Ao executar nos planos Consumo ou Premium do Azure Functions, o controlador de escala do Azure Functions sonda regularmente todas as filas do hub de tarefas em segundo plano. Se um aplicativo de funções estiver em escala leve a moderada, apenas uma instância do controlador de escala única sondará essas filas. Se o aplicativo de funções for expandido para um grande número de instâncias, mais instâncias de controlador de escala poderão ser adicionadas. Essas instâncias adicionais do controlador de escala podem aumentar os custos totais da transação de fila.
- Cada instância do aplicativo de funções compete para um conjunto de concessões de blob. Essas instâncias farão chamadas periodicamente para o serviço Blob do Azure para renovar as concessões mantidas ou tentar adquirir novas concessões. A contagem de partições configurada do hub de tarefas determina o número de concessões de blob. Expandir para um número maior de instâncias do aplicativo de funções provavelmente aumenta os custos de transação do Armazenamento do Azure associados a essas operações de concessão.
Você pode encontrar mais informações sobre os preços do Armazenamento do Azure na documentação de preços do Armazenamento do Azure.