{"id":15305,"date":"2022-01-25T15:26:07","date_gmt":"2022-01-25T15:26:07","guid":{"rendered":"https:\/\/www.crossjoin.pt\/?p=15305"},"modified":"2026-07-07T13:35:53","modified_gmt":"2026-07-07T13:35:53","slug":"the-approach-to-optimise-a-clients-scheduler","status":"publish","type":"post","link":"https:\/\/crossjoin.com\/pt\/the-approach-to-optimise-a-clients-scheduler\/","title":{"rendered":"A Abordagem para Otimizar o Agendamento de um Cliente"},"content":{"rendered":"<h1 class=\"wp-block-heading\">A abordagem para otimizar um agendador de clientes<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ap\u00f3s uma primeira grande conquista, o nosso cliente pediu-nos para analisar o seu agendamento de lotes, onde os trabalhos em lote s\u00e3o iniciados automaticamente. O objetivo era fazer com que os lotes di\u00e1rios e mensais demorassem menos de 6 horas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O lote di\u00e1rio estava a demorar quase 24 horas (\u00e0s vezes mais) e o mensal estava a demorar mais de 30.<sup><\/sup><sup><\/sup><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ap\u00f3s solicitar os acessos necess\u00e1rios (ferramenta de agendamento, bases de dados envolvidas, servidores de lote, etc.), trabalh\u00e1mos para ter uma solu\u00e7\u00e3o est\u00e1vel que nos ajude a medir o caminho cr\u00edtico mais longo para o di\u00e1rio e o mensal <sup><\/sup>trabalhos, para serem menos propensos a erros manuais que poderiam ser aproveitados durante a longa dura\u00e7\u00e3o do projeto. Utilizamo-lo h\u00e1 quase 2 anos.<sup><\/sup><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Em breve depar\u00e1mo-nos com o <sup><\/sup>primeiro obst\u00e1culo. O m\u00e9todo de medi\u00e7\u00e3o utilizado pelo cliente para o lote mensal era diferente daquele que consider\u00e1vamos o mais eficaz. Nesse momento, a nossa vertente \u00abJOINER\u00bb tornou-se evidente. Propusemos realizar uma reuni\u00e3o para chegar a um acordo sobre a forma de medir o caminho cr\u00edtico. O acordo foi alcan\u00e7ado de forma bastante pac\u00edfica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por essa altura, j\u00e1 est\u00e1vamos preparados para definir o problema, respondendo \u00e0 pergunta: Quais s\u00e3o os principais contribuintes para a longa dura\u00e7\u00e3o dos lotes?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sempre que est\u00e3o envolvidos v\u00e1rios caminhos, o primeiro a ser tratado \u00e9 habitualmente o caminho cr\u00edtico. O caminho cr\u00edtico \u00e9 o caminho com o maior custo. Neste caso, o custo \u00e9 o tempo.<sup><\/sup><sup><\/sup><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u201cAo executar com perfei\u00e7\u00e3o, criamos o Tempo\u201d<sup><\/sup><sup><\/sup><\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A etapa de defini\u00e7\u00e3o do problema deve ser feita at\u00e9 \u00e0 parte mais at\u00f3mica poss\u00edvel. Numa primeira etapa, devem ser identificados os trabalhos mais longos e, em seguida, come\u00e7ar a analisar o interior dos trabalhos mais longos<sup><\/sup> para o t<sup><\/sup>L\u00e1 colaborador principal. Tal como as bonecas matrioskas, temos de continuar a desvendar at\u00e9 identificar o colaborador principal mais interior.<sup><\/sup><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>\u201cA defini\u00e7\u00e3o do problema pode ser mais de metade do esfor\u00e7o para encontrar uma solu\u00e7\u00e3o.\u201d<sup><\/sup><\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Depois de identificarmos todos os principais colaboradores para os lotes di\u00e1rios e mensais, come\u00e7\u00e1mos a contactar cada um deles para obter recomenda\u00e7\u00f5es claras sobre a melhoria do performance.<sup><\/sup><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por exemplo, no caminho cr\u00edtico, foi identificada a tarefa mais longa, tendo-se determinado que se tratava de uma chamada de procedimento de base de dados, na qual foi executada uma consulta 1 milh\u00e3o de vezes. A soma da dura\u00e7\u00e3o do tempo decorrido desta consulta constituiu o tempo total da tarefa. Assim, a causa raiz da dura\u00e7\u00e3o desta tarefa espec\u00edfica \u00e9 a consulta que \u00e9 executada 1 milh\u00e3o de vezes.<sup><\/sup><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Qual poder\u00e1 ser uma solu\u00e7\u00e3o? Melhorar o tempo de resposta da consulta, redesenhar a tarefa para evitar a execu\u00e7\u00e3o de 1 milh\u00e3o de vezes, executar em paralelo\u2026<sup><\/sup><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Foram utilizadas diversas abordagens para abordar o vasto leque de quest\u00f5es relacionadas com o performance que foram analisadas. Foram implementadas mais de 60 altera\u00e7\u00f5es<sup><\/sup>Mais tarde, os objetivos do lote di\u00e1rio foram atingidos e estamos muito bem encaminhados para alcan\u00e7ar os objetivos mensais a curto prazo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este foi um caso em que o perfil de resili\u00eancia da Crossjoin se destacou, ao ter sempre encontrado uma solu\u00e7\u00e3o e nunca ter desistido dos nossos objetivos comuns com o cliente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Artigo por:<\/strong> Paulo Maia <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Consultor da Performance<\/em><\/p>","protected":false},"excerpt":{"rendered":"<p>The approach to optimise a client scheduler After a first big achievement, our client requested us to take a look into their batch scheduler, where the<span class=\"excerpt-hellip\"> [\u2026]<\/span><\/p>\n","protected":false},"author":2,"featured_media":15392,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"rs_blank_template":"","rs_page_bg_color":"#ffffff","slide_template_v7":"","footnotes":""},"categories":[74],"tags":[],"class_list":["post-15305","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles"],"acf":[],"_links":{"self":[{"href":"https:\/\/crossjoin.com\/pt\/wp-json\/wp\/v2\/posts\/15305","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/crossjoin.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/crossjoin.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/crossjoin.com\/pt\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/crossjoin.com\/pt\/wp-json\/wp\/v2\/comments?post=15305"}],"version-history":[{"count":2,"href":"https:\/\/crossjoin.com\/pt\/wp-json\/wp\/v2\/posts\/15305\/revisions"}],"predecessor-version":[{"id":27469,"href":"https:\/\/crossjoin.com\/pt\/wp-json\/wp\/v2\/posts\/15305\/revisions\/27469"}],"wp:attachment":[{"href":"https:\/\/crossjoin.com\/pt\/wp-json\/wp\/v2\/media?parent=15305"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/crossjoin.com\/pt\/wp-json\/wp\/v2\/categories?post=15305"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/crossjoin.com\/pt\/wp-json\/wp\/v2\/tags?post=15305"}],"curies":[{"name":"bom jogo","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}