{"id":1948,"date":"2025-05-22T00:48:39","date_gmt":"2025-05-22T00:48:39","guid":{"rendered":"https:\/\/mugnos-it.com\/?p=1948"},"modified":"2025-06-03T00:51:25","modified_gmt":"2025-06-03T00:51:25","slug":"tight-vs-loose-coupling-o-que-devs-ignoram-e-arrependem-depois","status":"publish","type":"post","link":"https:\/\/mugnos-it.com\/pt\/tight-vs-loose-coupling-o-que-devs-ignoram-e-arrependem-depois\/","title":{"rendered":"Tight vs Loose Coupling: O Que Devs Ignoram e Arrependem Depois!"},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"1948\" class=\"elementor elementor-1948\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-22f77209 e-flex e-con-boxed e-con e-parent\" data-id=\"22f77209\" 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-6783a06c elementor-widget elementor-widget-text-editor\" data-id=\"6783a06c\" 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>Quantas vezes voc\u00ea \u2014 ou \u201cum amigo\u201d, caso n\u00e3o queira assumir a responsabilidade \ud83d\ude05 \u2014 j\u00e1 mexeu em um m\u00f3dulo de um mon\u00f3lito, ou at\u00e9 mesmo de um microsservi\u00e7o <em>(sim, tem muito microsservi\u00e7o por a\u00ed que mal consegue funcionar sem se comunicar com outros)<\/em>\u2026 e do nada come\u00e7aram a aparecer alguns erros em distintos lugares? Sim, sim&#8230; mesmo sendo s\u00f3 uma altera\u00e7\u00e3o simples. \ud83d\udc40<\/p>\n\n\n\n<p>Pois \u00e9. Isso \u00e9 o tal do <strong>alto acoplamento<\/strong> (ou <strong>Tight Coupling<\/strong>). E ele t\u00e1 mais presente do que voc\u00ea imagina \u2014 principalmente em sistemas legados, APIs diretas e integra\u00e7\u00f5es improvisadas que foram ficando \u201cpra depois\u201d, <em><s>tamb\u00e9m conhecido como \u201cprocrastina\u00e7\u00e3o\u201d<\/s><\/em>\u2026 digo, \u201cdebito t\u00e9cnico\u201d<\/p>\n\n\n\n<p>Hoje vamos falar sobre <strong>Tight vs Loose Coupling<\/strong> (alto vs baixo acoplamento), porque essa diferen\u00e7a define n\u00e3o s\u00f3 o quanto sua aplica\u00e7\u00e3o vai escalar\u2026 mas tamb\u00e9m <strong>o quanto voc\u00ea vai sofrer pra mant\u00ea-la<\/strong> no futuro, isso se j\u00e1 n\u00e3o estiverem sofrendo no presente. \ud83d\ude05<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">O que \u00e9 Acoplamento \/ Coupling?<\/h2>\n\n\n\n<p><strong>Coupling<\/strong> \u00e9 o grau de depend\u00eancia entre duas partes do seu sistema.<\/p>\n\n\n\n<p>Em termos simples:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Tight Coupling (alto acoplamento):<\/strong> Tudo est\u00e1 ligado diretamente. Se uma parte muda, as outras sentem.<\/li>\n\n\n\n<li><strong>Loose Coupling (baixo acoplamento):<\/strong> As partes s\u00e3o mais independentes. Mudou uma? A outra segue firme.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tight Coupling vs Loose Coupling<\/h2>\n\n\n\n<p>Imagina que voc\u00ea tem quatro microsservi\u00e7os \u2014 B, C, D e E \u2014 que consomem diretamente a mesma API de outro sistema (chamado A).<\/p>\n\n\n\n<p>Cada um desses servi\u00e7os implementa seu pr\u00f3prio client HTTP com valida\u00e7\u00f5es, formata\u00e7\u00f5es e autentica\u00e7\u00f5es <em>manualmente<\/em>. Bom, at\u00e9 ent\u00e3o ok, tudo funciona e a vida segue\u2026 at\u00e9 que o time do sistema A faz um novo deploy, mudaram o payload, o header, ou formato da resposta&#8230;<\/p>\n\n\n\n<p>Resultado?<\/p>\n\n\n\n<p>Voc\u00ea agora tem que editar <strong>quatro implementa\u00e7\u00f5es de Client HTTP em servi\u00e7os diferentes(B, C, D e E)<\/strong>, todos em pontos distintos do c\u00f3digo, cada um com seu jeito e lib. Voc\u00ea n\u00e3o tem <strong>um ponto \u00fanico de controle<\/strong>. Isso \u00e9 tight coupling na pr\u00e1tica.<\/p>\n\n\n\n<p>Agora imagina que, ao inv\u00e9s disso, voc\u00ea tivesse criado um <strong>adapter interno centralizado<\/strong> (um \u00fanico contrato local que fala com o sistema A). Nesse caso, mudar o comportamento pra outra vers\u00e3o exigiria s\u00f3 <strong>uma altera\u00e7\u00e3o e o<\/strong> resto seguiria igual. Isso \u00e9 <strong>loose coupling<\/strong> \u2014 e salva projetos, sprints e sua sanidade mental. \ud83d\ude05<\/p>\n\n\n\n<p>A imagem retirada do Imagem do site &nbsp;<a href=\"https:\/\/en.wikipedia.org\/wiki\/Coupling_%28computer_programming%29\">https:\/\/en.wikipedia.org\/wiki\/Coupling_(computer_programming)<\/a> demonstra exatamente o que acabei de falar:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"604\" height=\"526\" src=\"https:\/\/mugnos-it.com\/wp-content\/uploads\/2025\/05\/image-29.png\" alt=\"\" class=\"wp-image-1949\" srcset=\"https:\/\/mugnos-it.com\/wp-content\/uploads\/2025\/05\/image-29.png 604w, https:\/\/mugnos-it.com\/wp-content\/uploads\/2025\/05\/image-29-300x261.png 300w\" sizes=\"(max-width: 604px) 100vw, 604px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Como criar um sistema desacoplado?<\/h2>\n\n\n\n<p>Algumas das estrat\u00e9gias que funcionam muito bem na pr\u00e1tica s\u00e3o:<\/p>\n\n\n\n<p>\u2705 <strong>Ports and Adapters (Arquitetura Hexagonal):<\/strong> cria um n\u00facleo de neg\u00f3cio isolado das interfaces externas. Isso<\/p>\n\n\n\n<p>\u2705 <strong>Adapter + Anticorruption Layer:<\/strong> coloca um intermedi\u00e1rio entre sua aplica\u00e7\u00e3o e um sistema legado ou externo.<\/p>\n\n\n\n<p>\u2705 <strong>Event-Driven Architecture:<\/strong> servi\u00e7os se comunicam por eventos, sem depender da resposta um do outro.<\/p>\n\n\n\n<p>\u2705 <strong>Fila ou Bus de Mensagens:<\/strong> o produtor envia a mensagem e n\u00e3o precisa saber se o consumidor est\u00e1 online, dormindo ou em pane.<\/p>\n\n\n\n<p>\u2705 <strong>Reavaliar os dom\u00ednios das aplica\u00e7\u00f5es:<\/strong> se necess\u00e1rio, muitos casos exigem uma rearquitetura completa, um bom momento \u00e9 considerar pr\u00e1ticas como Domain Driven Design para garantir que voc\u00ea esta criando aplica\u00e7\u00f5es baseadas em dom\u00ednios e evitando depend\u00eancias que n\u00e3o fazem sentido para o neg\u00f3cio. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Devo sempre desacoplar minhas aplica\u00e7\u00f5es?<\/h2>\n\n\n\n<p>Como sempre falo no <strong>CaD<\/strong>, <strong>arquitetura \u00e9 feita de trade-offs<\/strong>.<\/p>\n\n\n\n<p>Loose Coupling traz grandes benef\u00edcios:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Facilita manuten\u00e7\u00e3o e testes<\/li>\n\n\n\n<li>Permite escalar partes do sistema de forma independente<\/li>\n\n\n\n<li>D\u00e1 mais resili\u00eancia e toler\u00e2ncia a falhas<\/li>\n\n\n\n<li>Torna refatora\u00e7\u00f5es e migra\u00e7\u00f5es muito mais seguras<\/li>\n\n\n\n<li>\u2026<\/li>\n<\/ul>\n\n\n\n<p>Mas, sim: <strong>tem um custo<\/strong>.<\/p>\n\n\n\n<p>Voc\u00ea vai adicionar uma camada a mais (\u00e0s vezes de c\u00f3digo, outras de infraestrutura), e precisa de <strong>disciplina de time<\/strong> pra manter os contratos limpos e bem definidos.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclus\u00e3o<\/h2>\n\n\n\n<p>Acoplamento \u00e9 algo muito vis\u00edvel quando se trabalha em projetos de moderniza\u00e7\u00e3o, migra\u00e7\u00e3o e refactor de arquiteturas. S\u00e3o coisas que fazem com que uma atividade de duas semanas vire dois meses facilmente devido o n\u00famero de depend\u00eancias envolvidas.<\/p>\n\n\n\n<p>Agora imagina quando falamos de aplica\u00e7\u00f5es que rodam em <strong>Mainframe<\/strong> ou at\u00e9 mesmo alguns <strong>monolitos<\/strong>?Eu j\u00e1 trabalhei em alguns projetos de moderniza\u00e7\u00e3o de workloads que estavam em mainframe, e devido ao <strong>n\u00edvel de acoplamento entre diferentes programas e transa\u00e7\u00f5es<\/strong>, uma simples <strong>strangler fig<\/strong> de um peda\u00e7o do c\u00f3digo levava <strong>meses<\/strong>&#8230;<\/p>\n\n\n\n<p>Foram <strong>alguns dias pra parte t\u00e9cnica<\/strong> \u2014 e <strong>semanas<\/strong> s\u00f3 pra alinhar com todos os envolvidos\ud83d\ude2d&nbsp;. E como falei antes: algo que deveria ser alterado <strong>em um \u00fanico lugar<\/strong>, acabava exigindo mudan\u00e7as <strong>em MUITOS outros<\/strong>. Uma cadeia de impacto absurda.<\/p>\n\n\n\n<p>Ent\u00e3o, pessoal\u2026 n\u00e3o joguem a sujeira pra debaixo do tapete. Cuidado com a prioriza\u00e7\u00e3o do curto prazo \u2014 porque criar acoplamento hoje \u00e9 o que vai te travar l\u00e1 na frente, justamente quando voc\u00ea mais precisar de agilidade. Acoplamento afeta diretamente a capacidade dos sistemas de entregar valor com velocidade e seguran\u00e7a. \u00c9 o tipo de d\u00edvida que cobra juros bem alto.<\/p>\n\n\n\n<p>E se voc\u00ea quer aprender mais sobre <strong>padr\u00f5es de arquitetura que fazem bastante diferen\u00e7a no mercado<\/strong>, vem pra <strong>Comunidade de Arquitetura Descomplicada (CaD)<\/strong>. Aqui a gente discute n\u00e3o s\u00f3 acoplamento, mas tamb\u00e9m <strong>resili\u00eancia, escalabilidade, testes, arquitetura de eventos, deploy seguro<\/strong>, e tudo que faz parte da vida real de quem projeta sistemas modernos.<\/p>\n\n\n\n<p>\ud83d\udc49 <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-fe4feec e-flex e-con-boxed e-con e-parent\" data-id=\"fe4feec\" 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>Quantas vezes voc\u00ea \u2014 ou \u201cum amigo\u201d, caso n\u00e3o queira assumir a responsabilidade \ud83d\ude05 \u2014 j\u00e1 mexeu em um m\u00f3dulo de um mon\u00f3lito, ou at\u00e9 mesmo de um microsservi\u00e7o (sim, tem muito microsservi\u00e7o por a\u00ed que mal consegue funcionar sem se comunicar com outros)\u2026 e do nada come\u00e7aram a aparecer alguns erros em distintos lugares? [&hellip;]<\/p>","protected":false},"author":3,"featured_media":1950,"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-1948","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\/12.-Tight-vs-Loose-Coupling-O-Que-Devs-Ignoram-e-Arrependem-Depois.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts\/1948","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=1948"}],"version-history":[{"count":4,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts\/1948\/revisions"}],"predecessor-version":[{"id":2049,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/posts\/1948\/revisions\/2049"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/media\/1950"}],"wp:attachment":[{"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/media?parent=1948"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/categories?post=1948"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mugnos-it.com\/pt\/wp-json\/wp\/v2\/tags?post=1948"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}