{"id":1952,"date":"2025-05-22T00:55:16","date_gmt":"2025-05-22T00:55:16","guid":{"rendered":"https:\/\/mugnos-it.com\/?p=1952"},"modified":"2025-06-03T00:51:56","modified_gmt":"2025-06-03T00:51:56","slug":"comunicacao-sync-ou-async-qual-e-a-certa-pro-seu-sistema","status":"publish","type":"post","link":"https:\/\/mugnos-it.com\/pt\/comunicacao-sync-ou-async-qual-e-a-certa-pro-seu-sistema\/","title":{"rendered":"Comunica\u00e7\u00e3o Sync ou Async: Qual \u00e9 a certa pro seu sistema?"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"1952\" class=\"elementor elementor-1952\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-403f0886 e-flex e-con-boxed e-con e-parent\" data-id=\"403f0886\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-60baff8b elementor-widget elementor-widget-text-editor\" data-id=\"60baff8b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\n<p><\/p>\n\n\n\n<p>Era pra ser uma simples compra num app de delivery.<\/p>\n\n\n\n<p>O usu\u00e1rio clicou em \u201cfinalizar pedido\u201d, a tela ficou pensando\u2026 e pensando\u2026 e <em>nada<\/em>. Depois de 10 segundos, apareceu um erro. O usu\u00e1rio desistiu. Mas \u2014 surpresa \u2014 minutos depois, o pedido chegou mesmo assim. Sim, foi processado. O sistema s\u00f3 n\u00e3o soube como dizer isso direito.<\/p>\n\n\n\n<p>Ou pior: o usu\u00e1rio ficou esperando, perdeu a paci\u00eancia e decidiu comprar em outro lugar.<\/p>\n\n\n\n<p>Parece um bug, mas n\u00e3o \u00e9. \u00c9 s\u00f3 a escolha errada de comunica\u00e7\u00e3o: <strong>tudo feito de forma s\u00edncrona<\/strong>. E a\u00ed, bastou a API de pagamento oscilar por 3 segundos pra transformar um simples pedido em uma dor de cabe\u00e7a.<\/p>\n\n\n\n<p>(<em>&#8220;Ah, mas 3 segundos n\u00e3o \u00e9 nada!&#8221;<\/em> \u2014 \u00e9 o que muitos pensam\u2026 at\u00e9 ver o estrago que um retry autom\u00e1tico mal implementado pode causar. Inclusive, falo bastante disso na aula do CaD sobre <strong>Retries e falhas transit\u00f3rias<\/strong>. Spoiler: o problema n\u00e3o \u00e9 a falha em si, mas como voc\u00ea lida com ela. \ud83d\udd25)<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Sync parece mais r\u00e1pido, mas ser\u00e1 que \u00e9 melhor?<\/h2>\n\n\n\n<p>Na maioria dos sistemas que eu vejo por a\u00ed, <strong>comunica\u00e7\u00e3o s\u00edncrona ainda \u00e9 o muito comum<\/strong> \u2014 e com raz\u00e3o, em muitos casos ela \u00e9 mesmo necess\u00e1ria. Parece simples, direta: o sistema A chama o B, espera a resposta e pronto. A resposta chega \u201cna hora\u201d, o usu\u00e1rio tem um retorno imediato e tudo certo\u2026 certo?\u2026 Nem sempre.<\/p>\n\n\n\n<p>A verdade \u00e9 que nem todo \u201cimediato\u201d agrega valor. Na maioria das vezes, o usu\u00e1rio s\u00f3 quer <strong>uma confirma\u00e7\u00e3o de que o pedido foi recebido<\/strong>. Ele <strong>n\u00e3o precisa saber agora<\/strong> se a fatura foi emitida, se a notifica\u00e7\u00e3o foi enviada ou se o estoque foi debitado. E esperar 10 segundos por algo que ele nem precisava saber naquele momento pode ser mais frustrante do que receber um \u201cPedido\/Requisi\u00e7\u00e3o feita com sucesso, ela esta sendo processada\u201d<\/p>\n\n\n\n<p>Al\u00e9m disso, comunica\u00e7\u00e3o s\u00edncrona exige:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Compute dispon\u00edvel na hora<\/strong>;<\/li>\n\n\n\n<li><strong>Alta disponibilidade da cadeia inteira<\/strong>;<\/li>\n\n\n\n<li><strong>Tratamento de falhas imediato<\/strong>.<\/li>\n<\/ul>\n\n\n\n<p>Traduzindo: mais custo, mais complexidade, e mais pontos \u00fanicos de falha. E vou te dizer, n\u00e3o \u00e9 s\u00f3 sobre colocar 2x mais servidores ali na borda\u2026 na verdade voc\u00ea precisa garantir que TODA sua infra tenha capacidade de escalar de acordo com quantidade de TPS\u2026<\/p>\n\n\n\n<p>Com comunica\u00e7\u00e3o ass\u00edncrona, voc\u00ea consegue inclusive controlar o ritmo de processamento com base no compute dispon\u00edvel. E convenhamos\u2026 em muitos cen\u00e1rios, levar 1, 5, 10 ou at\u00e9 60 minutos n\u00e3o muda nada pro usu\u00e1rio. J\u00e1 reparou que alguns e-commerces processam o pagamento horas depois da compra? E t\u00e1 tudo bem.<\/p>\n\n\n\n<p>\u201cAh, mas se o pagamento demora 8 horas, eu posso atrasar a entrega por 8 horas tamb\u00e9m?\u201d<\/p>\n\n\n\n<p><strong>Depende.<\/strong> Essa \u00e9 uma decis\u00e3o de neg\u00f3cio \u2014 que precisa ser tomada com base em dados. E tem casos reais por a\u00ed onde entregar o produto antes mesmo da confirma\u00e7\u00e3o do pagamento saiu mais barato do que manter infraestrutura capaz de processar tudo em tempo real. \u00c9 isso mesmo.<\/p>\n\n\n\n<p>Cada escolha tem seu custo, seu risco e seus benef\u00edcios. O importante \u00e9 tomar decis\u00f5es baseadas em datapoints, e n\u00e3o s\u00f3 no \u201c\u00e9 melhor fazer na hora\u201d.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ent\u00e3o Async \u00e9 a bala de prata?<\/h2>\n\n\n\n<p>Nops\u2026A comunica\u00e7\u00e3o ass\u00edncrona \u2014 via eventos, mensagens, filas \u2014 resolve muito bem o cen\u00e1rio acima. Voc\u00ea <strong>n\u00e3o perde o evento<\/strong>, porque assim que ele \u00e9 recebido, ele entra numa fila e ser\u00e1 processado. Mesmo que o sistema de pagamento esteja fora do ar, voc\u00ea n\u00e3o precisa da intera\u00e7\u00e3o do usu\u00e1rio de novo. O pedido est\u00e1 l\u00e1, salvo, e ser\u00e1 processado quando poss\u00edvel.<\/p>\n\n\n\n<p>Mais do que isso:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Voc\u00ea pode <strong>reprocessar com retentativas<\/strong> (ex: retries autom\u00e1ticos via Kafka ou SQS);<\/li>\n\n\n\n<li>Pode escalar consumidores separadamente;<\/li>\n\n\n\n<li>Ganha resili\u00eancia contra falhas pontuais;<\/li>\n\n\n\n<li>E ainda desacopla os servi\u00e7os.<\/li>\n<\/ul>\n\n\n\n<p>Mas nem tudo s\u00e3o flores. Implementar comunica\u00e7\u00e3o ass\u00edncrona exige:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Garantia de <strong>idempot\u00eancia<\/strong> (sen\u00e3o voc\u00ea duplica tudo!);<\/li>\n\n\n\n<li>Visibilidade e rastreabilidade (debug de evento \u00e9 outra hist\u00f3ria);<\/li>\n\n\n\n<li>Tratamento de dead-letter queues e mensagens inv\u00e1lidas;<\/li>\n\n\n\n<li>Controle de ordena\u00e7\u00e3o (\u00e0s vezes a ordem importa e o async bagun\u00e7a isso).<\/li>\n\n\n\n<li>Mudan\u00e7a em componentes de arquitetura.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">E d\u00e1 pra usar os dois? Claro que sim.<\/h2>\n\n\n\n<p>Na pr\u00e1tica, os sistemas modernos usam <strong>um mix de sync e async<\/strong>.<\/p>\n\n\n\n<p>Exemplos de quando usar <em>s\u00edncrono<\/em>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Login\/autentica\u00e7\u00e3o<\/li>\n\n\n\n<li>Consulta de saldo ou limite de cr\u00e9dito<\/li>\n\n\n\n<li>Gera\u00e7\u00e3o de boleto ou c\u00f3digo Pix<\/li>\n\n\n\n<li>Visualiza\u00e7\u00e3o de pedidos ou dados pessoais<\/li>\n\n\n\n<li>Valida\u00e7\u00e3o de cupom de desconto<\/li>\n\n\n\n<li>C\u00e1lculo de frete em tempo real<\/li>\n\n\n\n<li>Autoriza\u00e7\u00e3o de cart\u00e3o em tempo real (pr\u00e9-aprova\u00e7\u00e3o)<\/li>\n\n\n\n<li>Confirma\u00e7\u00e3o de agendamento ou reserva de hor\u00e1rio<\/li>\n\n\n\n<li>Check-in em eventos ou locais com QR Code<\/li>\n\n\n\n<li>Atualiza\u00e7\u00e3o cr\u00edtica que precisa refletir instantaneamente na interface<\/li>\n<\/ul>\n\n\n\n<p>Exemplos de quando usar <em>ass\u00edncrono<\/em>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cria\u00e7\u00e3o de pedidos<\/li>\n\n\n\n<li>Upload de arquivos<\/li>\n\n\n\n<li>Emiss\u00e3o de nota fiscal<\/li>\n\n\n\n<li>Disparo de notifica\u00e7\u00f5es internas e externas<\/li>\n\n\n\n<li>Integra\u00e7\u00f5es com ERPs e sistemas legados<\/li>\n\n\n\n<li>Processamento de antifraude<\/li>\n\n\n\n<li>Enriquecimento de dados<\/li>\n\n\n\n<li>Gera\u00e7\u00e3o de relat\u00f3rios<\/li>\n\n\n\n<li>Envio de e-mails, SMS, push<\/li>\n\n\n\n<li>Processamento de faturas ou logs<\/li>\n\n\n\n<li>Atualiza\u00e7\u00e3o de dados cadastrais<\/li>\n\n\n\n<li>Sincroniza\u00e7\u00e3o com sistemas terceiros<\/li>\n\n\n\n<li>Solicita\u00e7\u00e3o de cancelamento<\/li>\n\n\n\n<li>\u2026<\/li>\n<\/ul>\n\n\n\n<p>Na d\u00favida, pergunte: <em>\u201cO usu\u00e1rio precisa dessa resposta <strong>agora<\/strong> ou s\u00f3 quer saber que a a\u00e7\u00e3o foi recebida?\u201d<\/em><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclus\u00e3o<\/h2>\n\n\n\n<p>Como sempre falo no CAD, n\u00e3o existe padr\u00e3o de arquitetura que n\u00e3o tenha nenhum tradeoff, sim toda escolha tem seu <em>tradeoff<\/em>.<\/p>\n\n\n\n<p>S\u00edncrono \u00e9 simples, direto\u2026 e fr\u00e1gil. Ass\u00edncrono \u00e9 robusto, escal\u00e1vel\u2026 e complexo.<\/p>\n\n\n\n<p>O papel da arquitetura n\u00e3o \u00e9 escolher o \u201cmelhor\u201d, mas o mais adequado pro seu cen\u00e1rio. E quanto mais voc\u00ea conhece os pr\u00f3s e contras de cada abordagem, melhor voc\u00ea consegue compor solu\u00e7\u00f5es que s\u00e3o modernas, resilientes e de alta qualidade.<\/p>\n\n\n\n<p>Se curtiu esse conte\u00fado e quer se aprofundar em decis\u00f5es arquiteturais que realmente fazem diferen\u00e7a no dia a dia, vem fazer parte da <strong>Comunidade de Arquitetura Descomplicada (CaD)<\/strong>.<\/p>\n\n\n\n<p>\ud83d\ude80 Saiba mais em: <a href=\"https:\/\/mugnos-it.com\/pt\/cad\/\">https:\/\/mugnos-it.com\/cad\/<\/a><\/p>\n\n\n\n<p>Abra\u00e7os,<\/p>\n\n\n\n<p>Douglas Mugnos<\/p>\n\n\n\n<p>MUGNOS-IT \ud83d\ude80<\/p>\n\n\n\n<p><\/p>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a9d68bc e-flex e-con-boxed e-con e-parent\" data-id=\"a9d68bc\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Era pra ser uma simples compra num app de delivery. O usu\u00e1rio clicou em \u201cfinalizar pedido\u201d, a tela ficou pensando\u2026 e pensando\u2026 e nada. Depois de 10 segundos, apareceu um erro. O usu\u00e1rio desistiu. Mas \u2014 surpresa \u2014 minutos depois, o pedido chegou mesmo assim. Sim, foi processado. O sistema s\u00f3 n\u00e3o soube como dizer [&hellip;]<\/p>","protected":false},"author":3,"featured_media":1953,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1952","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/mugnos-it.com\/wp-content\/uploads\/2025\/05\/13.-Comunicacao-Sync-ou-Async-Qual-e-a-certa-pro-seu-sistema.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts\/1952","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/comments?post=1952"}],"version-history":[{"count":4,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts\/1952\/revisions"}],"predecessor-version":[{"id":2052,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts\/1952\/revisions\/2052"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/media\/1953"}],"wp:attachment":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/media?parent=1952"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/categories?post=1952"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/tags?post=1952"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}