Dynamics 365 – Limite de chamadas via API


Olá pessoal,

Há alguns dias o time da Microsoft publicou este polêmico artigo sobre limites em chamadas via API (Web services do Dynamics 365).

Falando um pouco sobre a principal mensagem do artigo consiste em avisar que a partir de 19 de março de 2018 teremos um limite de 60.000 chamadas a cada 5 minutos de intervalo por usuário. Leia bem o que escrevi anteriormente, o limite só será excedido se o mesmo usuário realizar mais de 60.000 chamadas de API em 5 minutos no Dynamics 365 Online! Após o limite ser atingido, uma exceção será lançada. Irei falar mais sobre os outros detalhes logo a seguir…

Como era de se esperar houve bastante barulho dentro da comunidade de Dynamics, pois muitas integrações e serviços/produtos de terceiros (third-party) fazem uso massivo de APIs, assim todos gostariam de saber como se preparar e qual a chance de ser impactado por este limite. A resposta para estas perguntas, também pode ser encontrada nos comentários do post original, onde o time do produto explica que a quantidade de organizações impactadas será muito baixa (na grande maioria já foram contactados pela Microsoft), e o principal motivo da imposição do limite é de separar organizações que estão usando muito recurso das demais em um mesmo container/conjunto de servidores. Para verificar os contadores de API, utilize o Organisation Insights.

Agora voltando um pouco aos detalhes de como o limite é aplicado… Como já disse anteriormente, o limite só vale para o mesmo usuário fazendo mais de 60.000 chamadas em menos de 5 minutos. É importante lembrar que os 5 minutos são sempre os últimos 5 minutos de operação, assim, esta “janela de tempo” está em constante movimento. Com isso dito, decidi criar um exemplo diferente do que existe no post da Microsoft, pois achei que eles não estão demonstrando tão bem como o intervalo de tempo versus as chamadas se deslocam com o tempo. Vejam se assim, fica mais fácil de entender (espero que sim!):

* A imagem acima não está considerando a armazenagem das chamadas que foram realizadas quando o limite já havia sido excedido, para maiores informações, continue a leitura do artigo.

Tentei demonstrar na figura acima, como que as quotas variam de acordo com o usuário e bem como o tempo (criei intervalos de 1 em 1 minuto, mas lembre-se de que a janela de 5 minutos está sempre se movendo, então na prática estamos falando de segundos).

Deixei destacado em vermelho os intervalos em que determinado usuário atingiu o limite de chamada. Vejam o usuário 2 como um exemplo de como os valores são calculados. No minuto 1 apenas 2.000 chamadas foram feitas, porém no minuto seguinte, 70.000 chamadas estão sendo feitas, assim, 12.000 chamadas (72.000 – 60.0000) irão retornar uma exceção. Todas as chamadas posteriores até o minuto 6 irão ser impactadas, so que no minuto 7, todas as chamadas do minuto 1 e 2 já estão foram do intervalo de 5 minutos, fazendo com o total seja de apenas 13.000.

Vale lembrar que podemos tratar as exceções e tentar realizar as chamadas novamente em determinado momento, deste modo, no exemplo anterior, no minuto 2, quando o número de chamadas ultrapassou em 12.000, podemos, acumular para futura execução, somando-se aos valores do minuto 3 (4.000), 4 (2.000), 5 (1.000) e 6 (4.000), o total de chamadas para ser processo no minuto 7 iria para 35.000 chamadas ao invés dos 13.000 na imagem acima; Onde 12.000 são referentes as chamadas restantes do minuto 2, mais os valores do minuto 3 ao 6 e por fim as chamadas do próprio minuto 7 (2.000).

Para facilitar um pouco mais o entendimento de como o limite é calculado, fiz um recorte utilizando o usuário 1 como referência:

Como podem ver nos 5 primeiros minutos (destacado em vermelho) que este usuário está requisitando as APIs existem apenas 7.000 chamadas acumuladas, quando chegamos no minuto 6, apenas consideramos as chamadas entre o minuto 2 até o minuto 6 (1500+2000+1000+1500+2000), assim, o valor acumulado vai para 8.000, note que não estamos considerando o número de chamadas realizado no minuto 1. Para os demais minutos a mesma regra se aplica, assim, apenas o acumulado durante o últimos 5 minutos irá ser considerado.

Alguns pontos importantes para serem considerados:

  • Consultas utilizando o ExecuteMultilpleRequesr ou ExecuteTransactionRequest irá consumir apenas como uma única chamada, desde modo, quando utilizamos código que já faz uso destas classes dificilmente irão ultrapassar o limite;
  • Chamadas realizadas nos seguintes componentes não irão incrementar o contador de chamadas:
    • Requests dentro de um plugin/entidade virtual;
    • Ações (Processo de Negócio);
    • Workflows;
    • Serviços do Sistema;

Bom é isso, espero ter ajudado a desmitificar o assunto e tranquilizar aqueles que estavam a procura de informação!

[]’s,

Tiago

Anúncios

Sobre Tiago Michelini Cardoso

I have been working with IT since 2006, almost of this time using Microsoft Dynamics CRM/365 as a source of solutions. I graduated in Bachelor of Information Systems at FIAP (Brazil) in 2012. I really love what I do! Technology has been my interest since always. Even in a tool different world of the current. When we didn't have internet, tablets, smartphones e social networks! Although I have worked in some roles, I can't give up "the developer life". Even so far of the greatest developers. Development in general is the thing that I love to work! I started my contributions about Dynamics in 2010. At the beginning, I used to help at MSDN and TechNet forums. But now, I'm dedicating all my time in my personal blog! Currently, I have the enormous honour of being the only Brazilian who got the award for Microsoft MVP (Most Valuable Professional) for Microsoft Dynamics CRM/365 product. I have been receiving the award since 2012.
Esse post foi publicado em Dynamics 365 e marcado , . Guardar link permanente.

2 respostas para Dynamics 365 – Limite de chamadas via API

  1. Ótimo post Tiago!!! Parabéns!!!

    Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.