{"id":36518,"date":"2019-10-31T22:12:07","date_gmt":"2019-10-31T19:12:07","guid":{"rendered":"https:\/\/prohoster.info\/blog\/programmnaya-arhitektura-i-proektirovanie-sistem-obshhaya-kartina-i-putevoditel-po-resursam\/"},"modified":"2019-10-31T22:12:07","modified_gmt":"2019-10-31T19:12:07","slug":"programmnaya-arhitektura-i-proektirovanie-sistem-obshhaya-kartina-i-putevoditel-po-resursam","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/programmnaya-arhitektura-i-proektirovanie-sistem-obshhaya-kartina-i-putevoditel-po-resursam","title":{"rendered":"Arquitetura de software e design de sistemas: uma vis\u00e3o geral e guia de recursos","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ol\u00e1, colegas.<\/p>\n<p>Hoje, apresentamos a tradu\u00e7\u00e3o do artigo de Tugberk Ugurlu, que se prop\u00f4s a expor de maneira relativamente concisa os princ\u00edpios de design de sistemas de software modernos. Aqui est\u00e1 o que o autor menciona sobre si mesmo de forma resumida:<\/p>\n<p><img decoding=\"async\" alt=\"Arquitetura de software e design de sistemas: uma vis\u00e3o geral e guia de recursos\" src=\"\/wp-content\/uploads\/2019\/07\/30de77ffad15171ce493ce5003c99360.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nComo \u00e9 claramente imposs\u00edvel abranger em um artigo t\u00e3o curto um tema colossal como padr\u00f5es arquiteturais + padr\u00f5es de design at\u00e9 2019, recomendamos n\u00e3o apenas o texto do senhor Ugurlu, mas tamb\u00e9m os in\u00fameros links que ele gentilmente inseriu. Se voc\u00ea gostarem, publicaremos um texto mais especializado sobre o design de sistemas distribu\u00eddos.<\/p>\n<p><img decoding=\"async\" alt=\"Arquitetura de software e design de sistemas: uma vis\u00e3o geral e guia de recursos\" src=\"\/wp-content\/uploads\/2019\/07\/4ccec9506aedb91bb601ebc32b6762be.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<i>Imagem <noindex><a rel=\"nofollow\" href=\"https:\/\/unsplash.com\/photos\/6EnTPvPPL6I?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">de Isaac Smith<\/a><\/noindex> do site Unsplash<\/i><\/p>\n<p>Se voc\u00ea nunca teve que enfrentar desafios como o design de um sistema de software do zero, ao come\u00e7ar esse trabalho, pode ser at\u00e9 dif\u00edcil saber por onde come\u00e7ar. Eu acredito que, primeiro, \u00e9 necess\u00e1rio delinear os limites, para ter uma ideia do que exatamente voc\u00ea pretende projetar, e em seguida \u2013 arrega\u00e7ar as mangas e trabalhar dentro desses limites. Um bom ponto de partida pode ser um produto ou servi\u00e7o (idealmente, algo que voc\u00ea goste muito) e desvendar sua implementa\u00e7\u00e3o. Voc\u00ea pode se surpreender com a simplicidade aparente deste produto e com a imensa complexidade que est\u00e1 realmente oculta nele. N\u00e3o se esque\u00e7a: <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=k9Zbuuo51go\">o simples \u2013 geralmente \u00e9 complexo<\/a><\/noindex>, e isso \u00e9 normal.<\/p>\n<p>Acho que o melhor conselho que posso dar a quem est\u00e1 come\u00e7ando a projetar um sistema \u00e9: n\u00e3o fa\u00e7a suposi\u00e7\u00f5es! Desde o in\u00edcio, \u00e9 preciso concretizar os fatos conhecidos sobre esse sistema e as expectativas associadas a ele. Aqui est\u00e3o algumas boas perguntas cujas respostas ajudar\u00e3o voc\u00ea a come\u00e7ar o design:<\/p>\n<ul>\n<li>Qual \u00e9 o problema que estamos tentando resolver? <\/li>\n<li>Qual \u00e9 o n\u00famero m\u00e1ximo de usu\u00e1rios que interagir\u00e3o com nosso sistema?<\/li>\n<li>Quais padr\u00f5es de grava\u00e7\u00e3o e leitura de dados ser\u00e3o usados? <\/li>\n<li>Quais s\u00e3o os casos esperados de falhas, e como pretendemos lidar com eles?<\/li>\n<li>Quais expectativas existem em rela\u00e7\u00e3o \u00e0 consist\u00eancia e disponibilidade do sistema? <\/li>\n<li>Devem ser considerados requisitos relacionados \u00e0 auditoria externa e regulamenta\u00e7\u00e3o durante o trabalho?<\/li>\n<li>Quais tipos de dados confidenciais pretendemos armazenar?<\/li>\n<\/ul>\n<p>\nEssas s\u00e3o apenas algumas perguntas que foram \u00fateis tanto para mim quanto para as equipes nas quais participei ao longo da minha carreira profissional. Se voc\u00ea souber as respostas para essas perguntas (e para outras que sejam relevantes no contexto em que voc\u00ea est\u00e1 trabalhando), ent\u00e3o pode-se come\u00e7ar a aprofundar nos detalhes t\u00e9cnicos da tarefa.<\/p>\n<p><b>Definindo o n\u00edvel base<\/b><\/p>\n<p>O que eu entendo aqui por \"n\u00edvel base\"? De fato, na nossa \u00e9poca, a maioria dos problemas na ind\u00fastria de software podem ser resolvidos com m\u00e9todos e tecnologias j\u00e1 existentes. Assim, ao se orientar nesse cen\u00e1rio, voc\u00ea ganha uma vantagem ao enfrentar desafios que algu\u00e9m j\u00e1 teve que resolver antes de voc\u00ea. N\u00e3o esque\u00e7amos que os programas s\u00e3o desenvolvidos para resolver problemas de neg\u00f3cios e usu\u00e1rios, portanto, buscamos abordar a tarefa da maneira mais direta e simples (do ponto de vista do usu\u00e1rio) poss\u00edvel. Por que isso \u00e9 importante? Talvez, em sua perspectiva, voc\u00ea goste de encontrar solu\u00e7\u00f5es \u00fanicas para cada tarefa, acreditando que \"que tipo de programador sou eu se sigo padr\u00f5es em tudo\"? Na verdade, <b>a arte aqui reside em decidir onde e o que fazer<\/b>. Certamente, todos n\u00f3s temos que enfrentar problemas \u00fanicos de vez em quando, cada um dos quais \u00e9 um verdadeiro desafio. No entanto, se nosso n\u00edvel base estiver bem definido, saberemos onde investir nossos esfor\u00e7os: na busca de solu\u00e7\u00f5es prontas para a tarefa proposta ou em um estudo mais aprofundado e na compreens\u00e3o mais profunda da mesma.<\/p>\n<p>Acredito que consegui convenc\u00ea-lo de que, se um especialista compreende bem a arquitetura de alguns sistemas de software not\u00e1veis, esse conhecimento ser\u00e1 indispens\u00e1vel para dominar a arte de ser arquiteto e construir uma s\u00f3lida base nesse campo.<\/p>\n<p>Muito bem, por onde come\u00e7ar? No caso de <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\">Donna Martin<\/a><\/noindex> , h\u00e1 um reposit\u00f3rio no GitHub chamado <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\">system-design-primer<\/a><\/noindex>, atrav\u00e9s do qual voc\u00ea poder\u00e1 aprender a projetar sistemas em larga escala e se preparar para entrevistas sobre esse tema. No reposit\u00f3rio, h\u00e1 uma se\u00e7\u00e3o com exemplos <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/tree\/1144b8ef4c441af73f7cbfd51f56b8eb62350a66#real-world-architectures\">de arquiteturas reais<\/a><\/noindex>, onde, entre outras coisas, \u00e9 abordado como algumas empresas bem conhecidas se aproximam do design de seus sistemas <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/tree\/1144b8ef4c441af73f7cbfd51f56b8eb62350a66#company-architectures\">como Twitter, Uber, etc.<\/a><\/noindex>. No entanto, antes de passar para este material, vamos explorar mais detalhadamente os desafios arquitet\u00f4nicos mais importantes que voc\u00ea enfrentar\u00e1 na pr\u00e1tica. Isso \u00e9 importante porque \u00e9 necess\u00e1rio especificar MUITOS aspectos de um problema complexo e multifacetado e, em seguida, resolv\u00ea-lo dentro das regulamenta\u00e7\u00f5es vigentes neste sistema.<\/p>\n<p>Jackson Gabbard <noindex><a rel=\"nofollow\" href=\"https:\/\/jg.gg\/\">, ex-funcion\u00e1rio do Facebook, gravou<\/a><\/noindex>um v\u00eddeo de 50 minutos sobre entrevistas dedicadas ao design de sistemas <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=ZgdS0EUmn70\">, onde compartilhou suas experi\u00eancias ao revisar centenas de candidatos. Embora o v\u00eddeo aborde especificamente o design de grandes sistemas e os crit\u00e9rios de sucesso importantes ao selecionar um candidato para tal posi\u00e7\u00e3o, ainda assim, servir\u00e1 como um recurso abrangente sobre o que \u00e9 mais importante no design de sistemas. Tamb\u00e9m proponho<\/a><\/noindex>um resumo <noindex><a rel=\"nofollow\" href=\"https:\/\/jg.gg\/2016\/07\/31\/architecture-and-systems-design-interview\/\">desse v\u00eddeo.<\/a><\/noindex> Adquira conhecimento sobre armazenamento e recupera\u00e7\u00e3o de dados<\/p>\n<p><b>Normalmente, sua decis\u00e3o sobre como armazenar e fornecer seus dados a longo prazo tem um impacto cr\u00edtico no desempenho do sistema. Portanto, voc\u00ea precisa entender primeiro as caracter\u00edsticas esperadas de grava\u00e7\u00e3o e leitura de dados em seu sistema. Em seguida, \u00e9 necess\u00e1rio avaliar esses indicadores e fazer escolhas com base nas avalia\u00e7\u00f5es feitas. No entanto, voc\u00ea s\u00f3 conseguir\u00e1 lidar com essa tarefa de forma eficaz se entender os padr\u00f5es existentes de armazenamento de dados. Isso implica ter um conhecimento firme relacionado \u00e0<\/b> <\/p>\n<p>escolha do banco de dados. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#database\">Os bancos de dados podem ser considerados estruturas de dados que possuem escalabilidade e durabilidade excepcionais. Portanto, o conhecimento das estruturas de dados deve ser muito \u00fatil tamb\u00e9m na escolha de um banco de dados espec\u00edfico. Por exemplo,<\/a><\/noindex>. <\/p>\n<p>Bancos de dados podem ser considerados estruturas de dados que possuem escalabilidade e durabilidade excepcionais. Portanto, o conhecimento sobre estruturas de dados deve ser bastante \u00fatil na escolha de um banco de dados espec\u00edfico. Por exemplo, <noindex><a rel=\"nofollow\" href=\"https:\/\/redis.io\/topics\/data-types-intro\">Redis<\/a><\/noindex> \u2013 \u00e9 um servidor de estruturas de dados que suporta v\u00e1rios tipos de valores. Ele permite trabalhar com estruturas de dados como listas e conjuntos, ler dados usando algoritmos conhecidos, como <noindex><a rel=\"nofollow\" href=\"https:\/\/redis.io\/topics\/lru-cache\">LRU<\/a><\/noindex>, organizando esse trabalho de forma duradoura e de alta disponibilidade. <\/p>\n<p><img decoding=\"async\" alt=\"Arquitetura de software e design de sistemas: uma vis\u00e3o geral e guia de recursos\" src=\"\/wp-content\/uploads\/2019\/07\/8e30da0e8edd592609466f3c6c6f66d1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Imagem <noindex><a rel=\"nofollow\" href=\"https:\/\/unsplash.com\/photos\/JuFcQxgCXwA?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Samuel Zeller<\/a><\/noindex> do site Unsplash<\/i><\/p>\n<p>Quando voc\u00ea j\u00e1 estiver familiarizado com os v\u00e1rios padr\u00f5es de armazenamento de dados \u2013 comece a estudar a consist\u00eancia e a disponibilidade dos dados. Primeiro, voc\u00ea precisar\u00e1 entender <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#cap-theorem\">o teorema CAP<\/a><\/noindex> pelo menos de forma geral, e depois aperfei\u00e7oar esse conhecimento, examinando mais detalhadamente os padr\u00f5es estabelecidos de <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#consistency-patterns\">consist\u00eancia<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#availability-patterns\">disponibilidade<\/a><\/noindex>. Assim, voc\u00ea ampliar\u00e1 sua vis\u00e3o nessa \u00e1rea e entender\u00e1 que ler e gravar dados s\u00e3o, na verdade, duas quest\u00f5es muito diferentes, cada uma com seus pr\u00f3prios desafios. Armado com alguns padr\u00f5es que garantem consist\u00eancia e disponibilidade, voc\u00ea poder\u00e1 aumentar significativamente o desempenho do sistema, garantindo ao mesmo tempo um fornecimento ininterrupto de dados para suas aplica\u00e7\u00f5es.<\/p>\n<p>Por fim, ao concluir a discuss\u00e3o sobre quest\u00f5es de armazenamento de dados, \u00e9 importante mencionar a caching. Deve ser feito simultaneamente no cliente e no servidor? Quais dados voc\u00ea ter\u00e1 em cache? E por qu\u00ea? Como voc\u00ea organizar\u00e1 a invalida\u00e7\u00e3o do cache? Ser\u00e1 feita regularmente, em determinados intervalos de tempo? Se sim \u2013 com que frequ\u00eancia? Recomendo iniciar a discuss\u00e3o sobre esses t\u00f3picos com <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#cache\">a pr\u00f3xima se\u00e7\u00e3o<\/a><\/noindex> do mencionado manual de design de sistemas. <\/p>\n<p><b>Padr\u00f5es de comunica\u00e7\u00e3o<\/b><\/p>\n<p>Os sistemas s\u00e3o compostos de v\u00e1rios componentes; podem ser diferentes processos operando dentro do mesmo n\u00f3 f\u00edsico ou diferentes m\u00e1quinas atuando em partes diferentes da sua rede. Alguns desses recursos em sua rede podem ser privados, mas outros devem ser p\u00fablicos e acess\u00edveis a consumidores que os acessam externamente.<\/p>\n<p>\u00c9 necess\u00e1rio garantir a comunica\u00e7\u00e3o entre esses recursos, bem como a troca de informa\u00e7\u00f5es entre todo o sistema e o mundo exterior. No contexto do design de sistemas, novamente nos deparamos com um conjunto de novos desafios \u00fanicos. Vamos entender como os <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#asynchronism\">fluxos de trabalho ass\u00edncronos<\/a><\/noindex>, e quais s\u00e3o r<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#communication\">h\u00e1 uma variedade de padr\u00f5es de comunica\u00e7\u00e3o dispon\u00edveis<\/a><\/noindex>. <\/p>\n<p><img decoding=\"async\" alt=\"Arquitetura de software e design de sistemas: uma vis\u00e3o geral e guia de recursos\" src=\"\/wp-content\/uploads\/2019\/07\/e4dc98256b755acf931097d218f8b0dd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Imagem <noindex><a rel=\"nofollow\" href=\"https:\/\/unsplash.com\/photos\/DgZxBnZeQo8?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Tony Stoddard<\/a><\/noindex> do site Unsplash<\/i><\/p>\n<p>Ao organizar a comunica\u00e7\u00e3o com o mundo exterior, \u00e9 sempre muito importante <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer\/#security\">seguran\u00e7a<\/a><\/noindex>, para a qual tamb\u00e9m \u00e9 necess\u00e1rio abordar com a m\u00e1xima seriedade e atuar ativamente. <\/p>\n<p><b>Distribui\u00e7\u00e3o de conex\u00f5es<\/b><\/p>\n<p>N\u00e3o tenho certeza se destacar este t\u00f3pico em uma se\u00e7\u00e3o independente ser\u00e1 justificado para todos. No entanto, vou expor essa concep\u00e7\u00e3o de forma abrangente e considero que o material desta se\u00e7\u00e3o \u00e9 mais bem descrito pelo termo \"distribui\u00e7\u00e3o de conex\u00f5es\" (connection distribution).<\/p>\n<p>Os sistemas se formam por meio da conex\u00e3o correta de v\u00e1rios componentes, e a comunica\u00e7\u00e3o entre eles \u00e9 frequentemente organizada com base em protocolos estabelecidos, como TCP e UDP. No entanto, esses protocolos, por si s\u00f3, muitas vezes n\u00e3o s\u00e3o suficientes para atender todas as necessidades dos sistemas modernos, que frequentemente operam sob alta carga e tamb\u00e9m dependem muito das necessidades dos usu\u00e1rios. Muitas vezes, \u00e9 necess\u00e1rio encontrar maneiras de distribuir conex\u00f5es para lidar com cargas t\u00e3o altas no sistema.<\/p>\n<p>Na base dessa distribui\u00e7\u00e3o est\u00e1 a bem conhecida <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/DNS\">sistema de nomes de dom\u00ednio<\/a><\/noindex> (DNS). Esse sistema permite transformar um nome de dom\u00ednio, por exemplo, um algoritmo de rota\u00e7\u00e3o ponderada (weighted round robin) e m\u00e9todos baseados em lat\u00eancias, ajudando a distribuir a carga. <\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%91%D0%B0%D0%BB%D0%B0%D0%BD%D1%81%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BD%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B8\">O balanceamento de carga<\/a><\/noindex> \u00e9 fundamental, e praticamente qualquer sistema grande na Internet com o qual lidamos hoje est\u00e1 atr\u00e1s de um ou mais balanceadores de carga. Os balanceadores de carga ajudam a distribuir as solicita\u00e7\u00f5es dos clientes entre v\u00e1rias inst\u00e2ncias dispon\u00edveis. Os balanceadores de carga podem ser tanto de hardware quanto de software, mas, na pr\u00e1tica, frequentemente lidamos mais com os de software, como o <noindex><a rel=\"nofollow\" href=\"http:\/\/www.haproxy.org\/\">HAProxy<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/aws.amazon.com\/ru\/elasticloadbalancing\/\">ELB<\/a><\/noindex>. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer#reverse-proxy-web-server\">Os proxies reversos<\/a><\/noindex> tamb\u00e9m s\u00e3o conceitualmente muito semelhantes aos balanceadores de carga, embora haja uma s\u00e9rie de <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/donnemartin\/system-design-primer#load-balancer-vs-reverse-proxy\">diferen\u00e7as distintas<\/a><\/noindex>. Essas diferen\u00e7as devem ser consideradas ao projetar um sistema que atenda \u00e0s suas necessidades.<\/p>\n<p>Tamb\u00e9m \u00e9 importante conhecer as <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Content_Delivery_Network\">redes de entrega de conte\u00fado<\/a><\/noindex> (CDN). A CDN \u00e9 uma rede de servidores proxy distribu\u00edda globalmente, que fornece informa\u00e7\u00f5es a partir de n\u00f3s localizados geograficamente mais pr\u00f3ximos de um usu\u00e1rio espec\u00edfico. Redes CDN s\u00e3o prefer\u00edveis quando voc\u00ea est\u00e1 lidando com arquivos est\u00e1ticos escritos em JavaScript, CSS e HTML. Al\u00e9m disso, hoje s\u00e3o comuns servi\u00e7os em nuvem que oferecem gerenciadores de tr\u00e1fego, como <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/traffic-manager\/traffic-manager-overview?ranMID=24542&amp;ranEAID=je6NUbpObpQ&amp;ranSiteID=je6NUbpObpQ-9vzliSFGJdQqkHaqdUFnUQ&amp;epi=je6NUbpObpQ-9vzliSFGJdQqkHaqdUFnUQ&amp;irgwc=1&amp;OCID=AID2000142_aff_7593_1243925&amp;tduid=(ir__ntizratyeckfrlt1kk0sohz30m2xjibo1hl6incq00)(7593)(1243925)(je6NUbpObpQ-9vzliSFGJdQqkHaqdUFnUQ)()&amp;irclickid=_ntizratyeckfrlt1kk0sohz30m2xjibo1hl6incq00\">Azure Traffic Manager<\/a><\/noindex>, que garantem distribui\u00e7\u00e3o global e lat\u00eancias reduzidas ao trabalhar com conte\u00fado din\u00e2mico. No entanto, tais servi\u00e7os costumam ser \u00fateis em casos onde \u00e9 necess\u00e1rio trabalhar com web services sem estado. <\/p>\n<p><b>Vamos falar sobre a l\u00f3gica de neg\u00f3cios. Estruturar a l\u00f3gica de neg\u00f3cios, fluxos de tarefas e componentes<\/b><\/p>\n<p>Ent\u00e3o, j\u00e1 discutimos v\u00e1rios aspectos de infraestrutura do sistema. Provavelmente, o usu\u00e1rio nem pensa em todos esses elementos do seu sistema e, francamente, n\u00e3o se preocupa com eles. O que interessa ao usu\u00e1rio \u00e9 como \u00e9 interagir com o seu sistema, o que \u00e9 poss\u00edvel realizar ao agir dessa forma, e tamb\u00e9m como o sistema executa os comandos do usu\u00e1rio, o que ele faz e como manipula os dados do usu\u00e1rio.<\/p>\n<p>Como \u00e9 evidente pelo t\u00edtulo deste artigo, eu planejava falar sobre arquitetura de software e design de sistemas. Portanto, n\u00e3o planejei abordar padr\u00f5es de design de software, que descrevem como os componentes de software s\u00e3o criados. Contudo, quanto mais eu reflito sobre isso, mais parece que a linha entre padr\u00f5es de design de software e padr\u00f5es arquiteturais \u00e9 muito t\u00eanue, e essas duas concep\u00e7\u00f5es est\u00e3o intimamente ligadas. Vamos considerar, por exemplo, <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/eaaDev\/EventSourcing.html\">o registro de eventos<\/a><\/noindex> (event sourcing). Assim que voc\u00ea adota esse padr\u00e3o arquitetural, ele impacta praticamente todos os aspectos do seu sistema: armazenamento de dados a longo prazo, n\u00edvel de consist\u00eancia aplicado no seu sistema, a estrutura de seus componentes, etc., e assim por diante. Portanto, decidi mencionar alguns padr\u00f5es arquiteturais que est\u00e3o diretamente relacionados \u00e0 l\u00f3gica de neg\u00f3cios. Mesmo que neste artigo esteja restrito a uma simples lista, recomendo que voc\u00ea se familiarize com ela e reflita sobre as ideias associadas a esses padr\u00f5es. Aqui est\u00e1:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/SOLID_(%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)\">Princ\u00edpios SOLID<\/a><\/noindex> <\/li>\n<li>Conceitos <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5\">Design orientado a dom\u00ednio<\/a><\/noindex>, em particular, <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/ingeniouslysimple\/aggregates-in-domain-driven-design-5aab3ef9901d\">agregados<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/ingeniouslysimple\/command-vs-event-in-domain-driven-design-be6c45be52a9\">equipes e eventos<\/a><\/noindex> <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/267125\/\">Arquitetura hexagonal<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/CQRS.html\">Separa\u00e7\u00e3o de responsabilidade entre equipes e comandos (CQRS)<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/eaaDev\/EventSourcing.html\">Registro de eventos<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/doc.akka.io\/docs\/akka\/2.5\/guide\/actors-intro.html\">Modelo ator<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/215605\/\">Padr\u00f5es de design MVC, MVVM e MVP<\/a><\/noindex><\/li>\n<\/ul>\n<p>\n<b>Abordagens colaborativas<\/b><\/p>\n<p>\u00c9 extremamente improv\u00e1vel que voc\u00ea seja o membro do projeto que individualmente \u00e9 respons\u00e1vel pelo processo de design do sistema. Pelo contr\u00e1rio, \u00e9 mais prov\u00e1vel que voc\u00ea tenha que interagir com colegas que trabalham tanto dentro da sua tarefa quanto al\u00e9m dela. Nessa situa\u00e7\u00e3o, pode ser necess\u00e1rio avaliar as solu\u00e7\u00f5es tecnol\u00f3gicas escolhidas em conjunto com seus colegas, identificar as necessidades de neg\u00f3cios e entender como melhor paralelizar as tarefas.<\/p>\n<p><img decoding=\"async\" alt=\"Arquitetura de software e design de sistemas: uma vis\u00e3o geral e guia de recursos\" src=\"\/wp-content\/uploads\/2019\/07\/ad39e031dcac8e69fafb637603043bfb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<i>Imagem <noindex><a rel=\"nofollow\" href=\"https:\/\/unsplash.com\/photos\/3V8xo5Gbusk?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText\">Kaleidico<\/a><\/noindex> do site Unsplash<\/i><\/p>\n<p>Em primeiro lugar, ser\u00e1 necess\u00e1rio desenvolver uma compreens\u00e3o precisa e amplamente reconhecida de qual \u00e9 o objetivo de neg\u00f3cios que voc\u00ea est\u00e1 tentando alcan\u00e7ar e com quais elementos din\u00e2micos voc\u00ea ter\u00e1 que lidar. T\u00e9cnicas de modelagem em grupo, em particular, <noindex><a rel=\"nofollow\" href=\"https:\/\/techbeacon.com\/devops\/introduction-event-storming-easy-way-achieve-domain-driven-design\">tempestade de eventos<\/a><\/noindex> ajudam a acelerar significativamente esse processo e aumentam suas chances de sucesso. Esse trabalho pode ser realizado antes ou depois de voc\u00ea delinear <noindex><a rel=\"nofollow\" href=\"https:\/\/www.infoq.com\/news\/2015\/02\/service-boundaries-healthcare\/\">as fronteiras dos seus servi\u00e7os<\/a><\/noindex>, e ent\u00e3o aprofund\u00e1-lo \u00e0 medida que o produto amadurece. Com base no n\u00edvel de concord\u00e2ncia que ser\u00e1 alcan\u00e7ado aqui, voc\u00ea tamb\u00e9m poder\u00e1 formular <noindex><a rel=\"nofollow\" href=\"https:\/\/martinfowler.com\/bliki\/UbiquitousLanguage.html\">uma linguagem comum<\/a><\/noindex> para o contexto restrito em que voc\u00ea est\u00e1 trabalhando. Quando precisar falar sobre a arquitetura do seu sistema, uma <noindex><a rel=\"nofollow\" href=\"https:\/\/c4model.com\/\">modelo C4<\/a><\/noindex>, sugerido <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/simonbrown\">por Simon Brown<\/a><\/noindex>, especialmente quando precisar entender at\u00e9 que ponto voc\u00ea ter\u00e1 que se aprofundar nos detalhes do problema, visualizando as coisas que deseja comunicar.<\/p>\n<p>Provavelmente, nesta quest\u00e3o tamb\u00e9m existe outra tecnologia madura, t\u00e3o \u00fatil quanto o design orientado a dom\u00ednio. No entanto, de qualquer forma, voltamos \u00e0 compreens\u00e3o do dom\u00ednio, portanto, conhecimentos e experi\u00eancias na \u00e1rea <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9F%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5\">de design orientado a dom\u00ednio<\/a><\/noindex> devem ser \u00fateis para voc\u00ea.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/piter\/blog\/461283\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043a\u043e\u043b\u043b\u0435\u0433\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0430 \u0432\u0430\u0448 \u0441\u0443\u0434 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u0422\u0443\u0433\u0431\u0435\u0440\u043a\u0430 \u0423\u0433\u0443\u0440\u043b\u0443 (Tugberk Ugurlu), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0437\u044f\u043b\u0441\u044f \u0432 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043e\u0431\u044a\u0435\u043c\u0435 \u0438\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u0444\u0442\u0432\u0435\u0440\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c. \u0412\u043e\u0442 \u0447\u0442\u043e \u0430\u0432\u0442\u043e\u0440 \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u0441\u0435\u0431\u0435 \u0432 \u0441\u0443\u0445\u043e\u043c \u043e\u0441\u0442\u0430\u0442\u043a\u0435: \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0440\u0435\u0448\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043e\u0445\u0432\u0430\u0442\u0438\u0442\u044c \u0432 \u0445\u0430\u0431\u0440\u043e\u0441\u0442\u0430\u0442\u044c\u0435 \u0442\u0430\u043a\u0443\u044e \u043a\u043e\u043b\u043e\u0441\u0441\u0430\u043b\u044c\u043d\u0443\u044e \u0442\u0435\u043c\u0443, \u043a\u0430\u043a \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b + \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044e \u043d\u0430 2019 \u0433\u043e\u0434, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":27331,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36518","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043a\u043e\u043b\u043b\u0435\u0433\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0430 \u0432\u0430\u0448 \u0441\u0443\u0434 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u0422\u0443\u0433\u0431\u0435\u0440\u043a\u0430 \u0423\u0433\u0443\u0440\u043b\u0443 (Tugberk Ugurlu), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0437\u044f\u043b\u0441\u044f \u0432 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043e\u0431\u044a\u0435\u043c\u0435 \u0438\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u0444\u0442\u0432\u0435\u0440\u043d\u044b\u0445.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/programmnaya-arhitektura-i-proektirovanie-sistem-obshhaya-kartina-i-putevoditel-po-resursam\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c: \u043e\u0431\u0449\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u0430 \u0438 \u043f\u0443\u0442\u0435\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043f\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043a\u043e\u043b\u043b\u0435\u0433\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0430 \u0432\u0430\u0448 \u0441\u0443\u0434 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u0422\u0443\u0433\u0431\u0435\u0440\u043a\u0430 \u0423\u0433\u0443\u0440\u043b\u0443 (Tugberk Ugurlu), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0437\u044f\u043b\u0441\u044f \u0432 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043e\u0431\u044a\u0435\u043c\u0435 \u0438\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u0444\u0442\u0432\u0435\u0440\u043d\u044b\u0445.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/programmnaya-arhitektura-i-proektirovanie-sistem-obshhaya-kartina-i-putevoditel-po-resursam\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:12:07+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:12:07+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Arquitetura de Software e Design de Sistemas: Vis\u00e3o Geral e Guia de Recursos | ProHoster","description":"Ol\u00e1, colegas. Hoje, apresento a voc\u00eas a tradu\u00e7\u00e3o do artigo de Tugberk Ugurlu, que se prop\u00f4s a expor de forma relativamente breve os princ\u00edpios do design de software moderno.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/programmnaya-arhitektura-i-proektirovanie-sistem-obshhaya-kartina-i-putevoditel-po-resursam","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0430\u044f \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c: \u043e\u0431\u0449\u0430\u044f \u043a\u0430\u0440\u0442\u0438\u043d\u0430 \u0438 \u043f\u0443\u0442\u0435\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043f\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c | ProHoster","og:description":"\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u043a\u043e\u043b\u043b\u0435\u0433\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043d\u0430 \u0432\u0430\u0448 \u0441\u0443\u0434 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u0422\u0443\u0433\u0431\u0435\u0440\u043a\u0430 \u0423\u0433\u0443\u0440\u043b\u0443 (Tugberk Ugurlu), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0437\u044f\u043b\u0441\u044f \u0432 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043e\u0431\u044a\u0435\u043c\u0435 \u0438\u0437\u043b\u043e\u0436\u0438\u0442\u044c \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u044b \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0441\u043e\u0444\u0442\u0432\u0435\u0440\u043d\u044b\u0445.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/programmnaya-arhitektura-i-proektirovanie-sistem-obshhaya-kartina-i-putevoditel-po-resursam","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:12:07+00:00","article:modified_time":"2019-10-31T19:12:07+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36518","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 03:40:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:43:33","updated":"2026-01-22 03:40:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/36518","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=36518"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/36518\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/27331"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=36518"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=36518"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=36518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}