{"id":2781,"date":"2021-07-18T21:12:23","date_gmt":"2021-07-19T00:12:23","guid":{"rendered":"https:\/\/elemarjr.com\/arquiteturadesoftware\/?p=2781"},"modified":"2024-01-11T17:57:38","modified_gmt":"2024-01-11T20:57:38","slug":"em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0","status":"publish","type":"volume-1","link":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/","title":{"rendered":"Em busca da assertividade na pr\u00e1tica arquitetural \/ Cap\u00edtulo 15 v 1.0"},"content":{"rendered":"<strong>A boa arquitetura de software \u00e9 a arte de resolver <em>trade-offs<\/em>.<\/strong>\n<hr \/>\n<p><strong>N\u00e3o h\u00e1 padr\u00e3o, estilo ou solu\u00e7\u00e3o &#8220;bala de prata&#8221;.<\/strong> Toda decis\u00e3o implica em vantagens e desvantagens marcantes. Priorizar resili\u00eancia sacrifica performance. Melhorar a seguran\u00e7a pode comprometer disponibilidade. Combater o acoplamento frequentemente vai na dire\u00e7\u00e3o contr\u00e1ria do reuso. <strong>N\u00e3o h\u00e1 almo\u00e7o gr\u00e1tis!<\/strong><\/p>\nN\u00e3o se pode perder de vista que o objetivo das pr\u00e1ticas de arquitetura de software \u00e9, sempre, atender as expectativas do neg\u00f3cio, respeitando restri\u00e7\u00f5es e atingir atributos de qualidade, tudo isso com o menor custo poss\u00edvel, mitigando riscos. <strong>A melhor solu\u00e7\u00e3o arquitetural geralmente ser\u00e1 aquela que tiver a melhor rela\u00e7\u00e3o de custo e risco, conforme o contexto.<\/strong>\n<h2>O problema da &#8220;arquitetura limpa&#8221;<\/h2>\n<p>De tempos em tempos surgem &#8220;receitas de bolo&#8221; para a elabora\u00e7\u00e3o de arquiteturas. Elas emergem a despeito de seus proponentes e se estabelecem como o &#8220;jeito certo&#8221; de organizar componentes, distribuir responsabilidades e estabelecer rela\u00e7\u00f5es. J\u00e1 foi assim com a &#8220;arquitetura hexagonal&#8221;, tamb\u00e9m foi assim com &#8220;microsservi\u00e7os&#8221; e, recentemente, est\u00e1 sendo assim com a &#8220;mania&#8221; da arquitetura limpa &#8211; uma forma de organizar sistemas em camadas propostas por Robert Martin.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/miro.medium.com\/max\/880\/1*O4pMWCi5kZi20SNOR6V33Q.png\" alt=\"Implementando Clean Architecture no ReactJS | by Jo\u00e3o Guilherme Berti Sczip | Medium\" width=\"780\" height=\"551\" \/><\/p>\nNa pr\u00e1tica, a &#8220;arquitetura limpa&#8221; proposta pelo &#8220;Uncle Bob&#8221; \u00e9 uma releitura opinativa do estilo em camadas. Ela \u00e9 \u00fatil para, provavelmente para a grande maioria dos cen\u00e1rios de desenvolvimento, em times pequenos ou m\u00e9dios, para solu\u00e7\u00f5es menores e bem isoladas. <strong>\u00c9 um &#8220;jeito certo&#8221; para fazer software, mas est\u00e1 longe de ser o &#8220;\u00fanico jeito certo&#8221;. Ali\u00e1s, \u00e9, sem d\u00favidas, o &#8220;jeito errado&#8221; para cen\u00e1rios complexos, com times grandes, que demandam, por exemplo, microsservi\u00e7os.<\/strong>\n<h2>Principais desafios para a assertividade<\/h2>\n<h4>Predile\u00e7\u00e3o por modismos<\/h4>\n<p><strong>O favoritismo por estilos arquiteturais muda de tempos em tempos.<\/strong> Eventualmente, os &#8220;pontos de dor&#8221; dos estilos arquiteturais vigentes s\u00e3o mitigados em novas propostas. \u00c9 o caso, por exemplo, do &#8220;desacoplamento extremo&#8221; dos microsservi\u00e7os confrontado com camadas. A tend\u00eancia ao reuso do passado foi sendo substitu\u00edda pelo desejo de criar componentes com baixo acoplamento. <strong>Tudo \u00e9 transit\u00f3rio.<\/strong><\/p>\n<h4>Tecnologias que mudam<\/h4>\n<p><strong>As verdades de ontem sequer s\u00e3o consideradas hoje.<\/strong> H\u00e1 relativamente pouco tempo, sequer existiam ferramentas como <a href=\"https:\/\/kubernetes.io\/pt-br\/\">Kubernetes<\/a> ou <a href=\"https:\/\/www.docker.com\/\">Docker<\/a>, embora cont\u00eaineres fossem tecnicamente poss\u00edvel h\u00e1 d\u00e9cadas. Em alguns anos, <a href=\"https:\/\/www.docker.com\/\">Docker<\/a> e <a href=\"https:\/\/kubernetes.io\/pt-br\/\">Kubernetes<\/a> tamb\u00e9m ser\u00e3o tecnologias ultrapassadas.<\/p>\n<h4>&#8230; r\u00e1pido<\/h4>\n<p><strong>Nos anos recentes, ali\u00e1s, n\u00e3o s\u00f3 a mudan\u00e7a \u00e9 uma certeza, mas tamb\u00e9m est\u00e1 cada vez mais acelerada.<\/strong> O sentimento de &#8220;melhor ferramenta\/tecnologia\/paradigma de todos os tempos da \u00faltima semana&#8221; com frequ\u00eancia causa desgaste sem compensa\u00e7\u00f5es razo\u00e1veis para o neg\u00f3cio.<\/p>\n<h4>Escopos (de dom\u00ednio) cada vez mais complexos<\/h4>\n<p>Cada vez mais, se espera software mais onipresente, inteligente e integrado. Ali\u00e1s, software melhor tem autorizado pr\u00e1ticas mais complexas no dom\u00ednio, que por sua vez tem demandado software ainda melhor, em um ciclo as vezes virtuoso, outras vezes vicioso.<\/p>\nDe fato, as expectativas em torno do software crescem em ritmo acelerado exigindo a ado\u00e7\u00e3o de n\u00edveis de abstra\u00e7\u00e3o cada vez mais altos no desenvolvimento de sistemas. N\u00e3o raro, projetar software parece &#8220;montar lego&#8221; pela predomin\u00e2ncia de componentes prontos, principalmente na utiliza\u00e7\u00e3o da nuvem.\n<h4>Ambientes (potencialmente) hostis<\/h4>\n<p>Em contextos controlados, mudan\u00e7as nas regula\u00e7\u00f5es implicam em desafios para cumprimento de prazos que, frequentemente, ignoram as dificuldades na atualiza\u00e7\u00e3o dos sistemas.<\/p>\n<p>Sistemas dependentes em demasia de componentes externos podem ser fortemente impactos com ajustes de pol\u00edticas comerciais ou com custos de licenciamento.<\/p>\n<p>Estruturas organizacionais doentes ou inadequadas podem impossibilitar a utiliza\u00e7\u00e3o de estilos arquiteturais como desdobramento da lei de Conway.<\/p>\n<h2>Identificando e adotando &#8220;abordagens certas&#8221;<\/h2>\n<p><b>Arquitetos, como \u201ctrabalhadores do conhecimento\u201d, trabalham para \u201cresolver problemas\u201d. <\/b>Todo sistema a ser desenvolvido pode ser descrito como um conjunto de problemas que esperam solu\u00e7\u00f5es.<\/p>\nPadr\u00f5es e estilos arquiteturais s\u00e3o abstra\u00e7\u00f5es de solu\u00e7\u00f5es recorrentes para problemas comuns. Entretanto, para serem efetivos, devem ser escolhidos a luz de suas for\u00e7as e fraquezas relacionadas, sobretudo, ao contexto.\n<hr \/>\n<p>Saber reconhecer a \u201cnatureza\u201d de um problema ajuda a definir a estrat\u00e9gia mais efetiva para o resolver, maximizando o desempenho\/resultado e minimizando o esfor\u00e7o\/trabalho. Os cinco dom\u00ednios do framework Cynefin &#8211; um <em>framework\u00a0<\/em>desenvolvido por David Snowden na IBM &#8211; ajudam na classifica\u00e7\u00e3o de problemas, direcionando abordagem para solu\u00e7\u00e3o.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter\" src=\"https:\/\/www.eximia.co\/wp-content\/uploads\/2019\/09\/01FCD380-5ACC-4867-AAB0-E931EF8EA433.png\" \/><\/p>\n<p>A proposta central do framework Cynefin \u00e9 classificar problemas em cinco dom\u00ednios diferentes.<\/p>\n<p><strong>O primeiro dom\u00ednio, \u201c\u00d3bvio\u201d ou \u201cSimples\u201d, \u00e9 aquele ao qual pertencem os problemas que tem clara rela\u00e7\u00e3o entre causa e efeito.<\/strong> Sabe-se, com relativa precis\u00e3o, qual a\u00e7\u00e3o precisa ser realizada para atingir um determinado resultado<b>.\u00a0<\/b>Problemas desse dom\u00ednio podem ser corrigidos, evitados ou mitigados atrav\u00e9s da aplica\u00e7\u00e3o de melhores pr\u00e1ticas. Al\u00e9m disso, quem os tratar\u00e1 precisa apenas de treinamento e capacidade anal\u00edtica para detectar, categorizar e aplicar solu\u00e7\u00f5es. <strong>Raramente ser\u00e1 o caso na arquitetura de software. Eventualmente, no desenvolvimento de ferramentas utilit\u00e1rias.<\/strong><\/p>\n<p><strong>O segundo dom\u00ednio, \u201cComplicado\u201d, \u00e9 aquele ao qual pertencem os problemas que tamb\u00e9m tem rela\u00e7\u00e3o clara entre causa e efeito, por\u00e9m, geralmente, onde diferentes a\u00e7\u00f5es podem atingir um mesmo resultado<\/strong>. Problemas desse dom\u00ednio s\u00e3o, geralmente, melhor resolvidos por pessoas com experi\u00eancia, que conseguem julgar os pr\u00f3s e contras de diversas alternativas e escolher o que \u00e9 mais adequado ao contexto.<strong> Problemas complicados s\u00e3o comuns no <em>design<\/em> n\u00e3o arquitetural.<\/strong><\/p>\n<p><strong>O terceiro dom\u00ednio, \u201cComplexo\u201d, \u00e9 aquele onde tamb\u00e9m \u00e9 poss\u00edvel estabelecer rela\u00e7\u00e3o de causa e efeito. Entretanto, apenas depois de aplicada uma a\u00e7\u00e3o<\/strong>. Esses s\u00e3o aqueles problemas que precisam de experimenta\u00e7\u00e3o para serem resolvidos. Afinal, o n\u00famero de vari\u00e1veis \u00e9 t\u00e3o grande que impossibilita previs\u00e3o 100% segura.<strong> Nesse dom\u00ednio encontra-se, por exemplo, o desenvolvimento de neg\u00f3cios e a maioria dos desafios arquiteturais.\u00a0<\/strong><\/p>\n<p><strong>O quarto dom\u00ednio, \u201cCa\u00f3tico\u201d, \u00e9 aquele onde n\u00e3o \u00e9 poss\u00edvel determinar, com clareza, rela\u00e7\u00f5es de causa e efeito, nem antes, nem depois de adotada uma a\u00e7\u00e3o.<\/strong> S\u00e3o problemas onde o n\u00famero de vari\u00e1veis \u00e9 muito grande e \u00e9 imposs\u00edvel de determinar causalidades. Problemas desse dom\u00ednio costumam ocorrer em situa\u00e7\u00f5es at\u00edpicas, geralmente associadas a circunst\u00e2ncias cr\u00edticas. <strong>Sistemas distribu\u00eddos elaborados de maneira descuidada tendem ao caos. Sistemas ca\u00f3ticos podem ser &#8220;influenciados&#8221;, mas nunca &#8220;determinados&#8221;.<\/strong><\/p>\n<p><b>Categorias diferentes de problemas exigem abordagens diferentes para determinar uma solu\u00e7\u00e3o.<\/b><\/p>\n<h4>Abordagens complicadas n\u00e3o suportam solu\u00e7\u00f5es complexas<\/h4>\n<p>A \u201cmentalidade bin\u00e1ria\u201d empregada para resolver problemas \u201c\u00f3bvios\u201d geralmente conduz a paralisia por an\u00e1lise em cen\u00e1rios complexos. Afinal, cen\u00e1rios \u201c\u00f3bvios\u201d s\u00e3o resolvidos com conhecimento e \u201cfor\u00e7a bruta\u201d, enquanto cen\u00e1rios \u201ccomplexos\u201d s\u00f3 podem ser resolvidos com \u201ctentativa-aprendizado-e-erro\u201d.<\/p>\n<h4>A urg\u00eancia de pr\u00e1ticas \u00e1geis<\/h4>\n<p>\u00c9 a natureza complexa do neg\u00f3cio que \u00e9 a respons\u00e1vel por n\u00e3o ser poss\u00edvel que metodologias \u201ccascata\u201d funcionem para o desenvolvimento de software. Metodologias \u00e1geis s\u00e3o uma tentativa de facilitar experimenta\u00e7\u00e3o durante o desenvolvimento de software, sem comprometer efici\u00eancia.<\/p>\n<h2>Principais aspectos influenciadores<\/h2>\n<p><strong>Na pr\u00e1tica, as dificuldades das decis\u00f5es arquiteturais s\u00e3o mitigadas pela redu\u00e7\u00e3o da quantidade de vari\u00e1veis (dimensionalidade) que podem influenciar na tomada de decis\u00f5es arquiteturais.<\/strong> Quanto menos &#8220;aspectos discut\u00edveis&#8221;, mais delimitadas s\u00e3o as alternativas que precisam ser consideradas e mais assertivas s\u00e3o as decis\u00f5es.<\/p>\n<p>Sabendo-se, por exemplo, que o objetivo n\u00e3o \u00e9 &#8220;escalar times&#8221;, descarta-se a utiliza\u00e7\u00e3o de microsservi\u00e7os. Quando times n\u00e3o podem ser &#8220;tecnicamente&#8221; apartados, descarta-se a ado\u00e7\u00e3o de modelos simples de camadas. <strong>Logo, estrutura organizacional, considerando tamanho e forma de organizar os times s\u00e3o dois aspectos influenciadores fundamentais.<\/strong><\/p>\n<p><strong>A forma como os dados est\u00e3o sendo gerenciados na organiza\u00e7\u00e3o tamb\u00e9m \u00e9 impactante<\/strong>. Dom\u00ednios que demandam &#8220;dados quentes&#8221; para organiza\u00e7\u00e3o t\u00e1tica e estrat\u00e9gica s\u00e3o menos tolerantes para sistemas distribu\u00eddos e tamb\u00e9m tendem a n\u00e3o suportar bem a escala. Dados centralizados se convertem em gargalo. Dados distribu\u00eddos oferecem desafios a consist\u00eancia.<\/p>\n<p><strong>Restri\u00e7\u00f5es com fornecedores e regula\u00e7\u00e3o invariavelmente restringem op\u00e7\u00f5es arquiteturais relevantes.\u00a0<\/strong>Se h\u00e1 restri\u00e7\u00f5es de utiliza\u00e7\u00e3o de nuvem, por exemplo, restringe-se consideravelmente a ado\u00e7\u00e3o de componentes prontos.<\/p>\n<p><strong>Finalmente, \u00e9 importante observar o conhecimento dos times e a familiaridade com naturezas, tanto de problemas, como de <em>designs<\/em> propostos.\u00a0<\/strong>Por exemplo, se uma organiza\u00e7\u00e3o n\u00e3o tem maturidade na ado\u00e7\u00e3o de pr\u00e1ticas \u00e1geis, estilos arquiteturais que dependem dessas pr\u00e1ticas ir\u00e3o ter dificuldades de realiza\u00e7\u00e3o.<\/p>\n<h4>Isomorfismo entre dom\u00ednio e arquitetura<\/h4>\n<p><strong>Alguns dom\u00ednios de problema parecem ter\u00a0<em>match\u00a0<\/em>perfeito com alguns estilos arquiteturais.<\/strong>\u00a0<em>Pipes and Filters,\u00a0<\/em>por exemplo, encaixam perfeitamente com dom\u00ednios organizados em torno de sequ\u00eancias de atividades bem determinadas. <em>Microkernel<\/em>, outro estilo arquitetural<em>,\u00a0<\/em>\u00e9 perfeito para cen\u00e1rios que demandam customiza\u00e7\u00e3o.<\/p>\n<p><strong>Por outro lado, h\u00e1 dom\u00ednios de problema que conflitam evidentemente com alguns estilos arquiteturais. <\/strong>Dom\u00ednios que demandam alto n\u00edvel de &#8220;acoplamento sem\u00e2ntico&#8221; sofrem em estilos extremamente desacoplados ou distribu\u00eddos.<\/p>\n<h2>Sobre a necessidade de assumir d\u00edvidas t\u00e9cnicas<\/h2>\n<p><strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Technical_debt\">D\u00edvidas t\u00e9cnicas<\/a> surgem quando desenvolvedores de software, de forma deliberada ou n\u00e3o, abrem m\u00e3o de boas pr\u00e1ticas de desenvolvimento para ganhar algum tempo. Entretanto, acabam sofrendo, mais tarde, com os custos e tempos de manuten\u00e7\u00e3o mais altos.\u00a0<\/strong>Sob a perspectiva de arquitetura de software, elas acontecem quando decis\u00f5es de <em>design\u00a0<\/em>n\u00e3o \u00f3timas realizadas.<\/p>\n<p>Os \u201cjuros\u201d resultantes das d\u00edvidas t\u00e9cnicas, para programadores, costumam ficar evidentes em maior dificuldade para ler e entender o c\u00f3digo, fragilidade decorrente de acoplamento (mexer em uma parte do sistema, estraga outra), dificuldade para adicionar <em>features\u00a0<\/em>sem quebrar testes, etc. <strong>Para a arquitetura, os &#8220;juros&#8221; ficam evidentes pela incapacidade de atingir os objetivos do neg\u00f3cio, respeitar restri\u00e7\u00f5es ou atender atributos de qualidade.<\/strong><\/p>\n<p><strong>\u00c9 sempre importante ressaltar que, se n\u00e3o h\u00e1 \u201cjuro\u201d percebido, provavelmente n\u00e3o h\u00e1 d\u00edvida. <\/strong>Ou seja, se nenhum preju\u00edzo \u00e9 sentido pelo time t\u00e9cnico, ou pelo neg\u00f3cio, por causa de uma decis\u00e3o t\u00e9cnica que aparentava n\u00e3o ser boa, ent\u00e3o, talvez n\u00e3o haja nada de errado com ela!<\/p>\n<p>N\u00e3o \u00e9 incomum encontrar t\u00e9cnicos\u00a0 implementando solu\u00e7\u00f5es mais \u201csofisticadas\u201d justificando-as por pretensas boas pr\u00e1ticas, mas que, na verdade, adicionam pouco ou nenhum valor ao neg\u00f3cio. Ali\u00e1s, com frequ\u00eancia adicionam apenas complexidade e, consequentemente, custo.<\/p>\n<p><strong>Se um desenvolvedor ou arquiteto adota uma \u201cboa pr\u00e1tica\u201d sem saber justificar a raz\u00e3o para estar fazendo isso, ent\u00e3o, h\u00e1 chances grandes do efeito ser exatamente o oposto do que planeja.<\/strong>\u00a0Microsservi\u00e7os implementados para viabilizar escalabilidade, mas que n\u00e3o escalam. Reposit\u00f3rios isolando acesso a dados para permitir uma hipot\u00e9tica \u201ctroca do banco\u201d, que nunca ocorre.<\/p>\nQuando todo embasamento que um desenvolvedor ou arquiteto tem para adotar uma pr\u00e1tica \u00e9 a palavra de algu\u00e9m, ent\u00e3o, n\u00e3o tem embasamento algum.\n<h2>\/\/ TODO<\/h2>\n<p>Antes de avan\u00e7ar, convido-o as seguintes reflex\u00f5es:<\/p>\n<ol>\n<li>As solu\u00e7\u00f5es arquiteturais que seu time est\u00e3o adotando s\u00e3o as melhores, sob o ponto de vista de custo e risco?<\/li>\n<li>Quais s\u00e3o os principais desafios que tens enfrentado para a assertividade nas decis\u00f5es arquiteturais?<\/li>\n<li>Conforme o Cynefin, qual \u00e9 a categoria dos problemas que tens enfrentado com mais frequ\u00eancia?<\/li>\n<li>Trabalhou em algum projeto com isomorfismo entre arquitetura e dom\u00ednio?<\/li>\n<li>Quais s\u00e3o as principais d\u00edvidas t\u00e9cnicas que tens enfrentado em seu projeto recentemente? Elas s\u00e3o arquiteturais?<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n","protected":false},"featured_media":2810,"parent":0,"comment_status":"open","ping_status":"closed","template":"","url":[],"sessoes":[60],"apendices":[],"capitulos":[64],"class_list":["post-2781","volume-1","type-volume-1","status-publish","has-post-thumbnail","hentry","sessoes-secao-6","capitulos-capitulo-6-1"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Em busca da assertividade na pr\u00e1tica arquitetural \/ Cap\u00edtulo 15 v 1.0 - Manual do Arquiteto de Software<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Em busca da assertividade na pr\u00e1tica arquitetural \/ Cap\u00edtulo 15 v 1.0 - Manual do Arquiteto de Software\" \/>\n<meta property=\"og:description\" content=\"N\u00e3o h\u00e1 padr\u00e3o, estilo ou solu\u00e7\u00e3o &#8220;bala de prata&#8221;. Toda decis\u00e3o implica em vantagens e desvantagens marcantes. Priorizar resili\u00eancia sacrifica performance. Melhorar a seguran\u00e7a pode comprometer disponibilidade. Combater o acoplamento frequentemente vai na dire\u00e7\u00e3o contr\u00e1ria do reuso. N\u00e3o h\u00e1 almo\u00e7o gr\u00e1tis! O problema da &#8220;arquitetura limpa&#8221; De tempos em tempos surgem &#8220;receitas de bolo&#8221; para [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/\" \/>\n<meta property=\"og:site_name\" content=\"Manual do Arquiteto de Software\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/facebook.com\/eximiaco\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-11T20:57:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/07\/brett-jordan-Fp4ERdkR5jU-unsplash.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"768\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@eximiaco\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data1\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/\",\"url\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/\",\"name\":\"Em busca da assertividade na pr\u00e1tica arquitetural \/ Cap\u00edtulo 15 v 1.0 - Manual do Arquiteto de Software\",\"isPartOf\":{\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/07\/brett-jordan-Fp4ERdkR5jU-unsplash.jpg\",\"datePublished\":\"2021-07-19T00:12:23+00:00\",\"dateModified\":\"2024-01-11T20:57:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/#primaryimage\",\"url\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/07\/brett-jordan-Fp4ERdkR5jU-unsplash.jpg\",\"contentUrl\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/07\/brett-jordan-Fp4ERdkR5jU-unsplash.jpg\",\"width\":1024,\"height\":768},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Volume 1\",\"item\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Em busca da assertividade na pr\u00e1tica arquitetural \/ Cap\u00edtulo 15 v 1.0\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#website\",\"url\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/\",\"name\":\"Manual do Arquiteto de Software\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#organization\",\"name\":\"EximiaCo\",\"url\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/04\/simbolo-eximiaco.jpg\",\"contentUrl\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/04\/simbolo-eximiaco.jpg\",\"width\":150,\"height\":150,\"caption\":\"EximiaCo\"},\"image\":{\"@id\":\"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/facebook.com\/eximiaco\",\"https:\/\/x.com\/eximiaco\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Em busca da assertividade na pr\u00e1tica arquitetural \/ Cap\u00edtulo 15 v 1.0 - Manual do Arquiteto de Software","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/","og_locale":"pt_BR","og_type":"article","og_title":"Em busca da assertividade na pr\u00e1tica arquitetural \/ Cap\u00edtulo 15 v 1.0 - Manual do Arquiteto de Software","og_description":"N\u00e3o h\u00e1 padr\u00e3o, estilo ou solu\u00e7\u00e3o &#8220;bala de prata&#8221;. Toda decis\u00e3o implica em vantagens e desvantagens marcantes. Priorizar resili\u00eancia sacrifica performance. Melhorar a seguran\u00e7a pode comprometer disponibilidade. Combater o acoplamento frequentemente vai na dire\u00e7\u00e3o contr\u00e1ria do reuso. N\u00e3o h\u00e1 almo\u00e7o gr\u00e1tis! O problema da &#8220;arquitetura limpa&#8221; De tempos em tempos surgem &#8220;receitas de bolo&#8221; para [&hellip;]","og_url":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/","og_site_name":"Manual do Arquiteto de Software","article_publisher":"https:\/\/facebook.com\/eximiaco","article_modified_time":"2024-01-11T20:57:38+00:00","og_image":[{"width":1024,"height":768,"url":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/07\/brett-jordan-Fp4ERdkR5jU-unsplash.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_site":"@eximiaco","twitter_misc":{"Est. tempo de leitura":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/","url":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/","name":"Em busca da assertividade na pr\u00e1tica arquitetural \/ Cap\u00edtulo 15 v 1.0 - Manual do Arquiteto de Software","isPartOf":{"@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#website"},"primaryImageOfPage":{"@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/#primaryimage"},"image":{"@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/#primaryimage"},"thumbnailUrl":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/07\/brett-jordan-Fp4ERdkR5jU-unsplash.jpg","datePublished":"2021-07-19T00:12:23+00:00","dateModified":"2024-01-11T20:57:38+00:00","breadcrumb":{"@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/#primaryimage","url":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/07\/brett-jordan-Fp4ERdkR5jU-unsplash.jpg","contentUrl":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2021\/07\/brett-jordan-Fp4ERdkR5jU-unsplash.jpg","width":1024,"height":768},{"@type":"BreadcrumbList","@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/em-busca-da-assertividade-na-pratica-arquitetural-capitulo-15-v-1-0\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/"},{"@type":"ListItem","position":2,"name":"Volume 1","item":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/volume-1\/"},{"@type":"ListItem","position":3,"name":"Em busca da assertividade na pr\u00e1tica arquitetural \/ Cap\u00edtulo 15 v 1.0"}]},{"@type":"WebSite","@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#website","url":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/","name":"Manual do Arquiteto de Software","description":"","publisher":{"@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#organization","name":"EximiaCo","url":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#\/schema\/logo\/image\/","url":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/04\/simbolo-eximiaco.jpg","contentUrl":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-content\/uploads\/2022\/04\/simbolo-eximiaco.jpg","width":150,"height":150,"caption":"EximiaCo"},"image":{"@id":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/facebook.com\/eximiaco","https:\/\/x.com\/eximiaco"]}]}},"_links":{"self":[{"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/volume-1\/2781","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/volume-1"}],"about":[{"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/types\/volume-1"}],"replies":[{"embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/comments?post=2781"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/media\/2810"}],"wp:attachment":[{"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/media?parent=2781"}],"wp:term":[{"taxonomy":"url","embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/url?post=2781"},{"taxonomy":"sessoes","embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/sessoes?post=2781"},{"taxonomy":"apendices","embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/apendices?post=2781"},{"taxonomy":"capitulos","embeddable":true,"href":"https:\/\/elemarjr.com\/livros\/arquiteturadesoftware\/wp-json\/wp\/v2\/capitulos?post=2781"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}