{"id":95403,"date":"2020-09-28T19:43:15","date_gmt":"2020-09-28T17:43:15","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3"},"modified":"2020-09-28T19:43:15","modified_gmt":"2020-09-28T17:43:15","slug":"vybor-arhitekturnogo-stilya-chast-3","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","title":{"rendered":"Escolha do estilo arquitet\u00f4nico (parte 3)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Ol\u00e1, Habr. Hoje eu continuo a s\u00e9rie de publica\u00e7\u00f5es que escrevi especialmente para o in\u00edcio do novo fluxo do curso <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/z0Ur\/\">Arquitetura de Software<\/a><\/noindex>.<\/i><\/b><\/p>\n<p><\/p>\n<h2>Introdu\u00e7\u00e3o<\/h2>\n<p>\nA escolha do estilo arquitet\u00f4nico \u00e9 uma das decis\u00f5es t\u00e9cnicas fundamentais na constru\u00e7\u00e3o de um sistema de informa\u00e7\u00e3o. Nesta s\u00e9rie de artigos, proponho analisar os estilos arquitet\u00f4nicos mais populares para a constru\u00e7\u00e3o de aplica\u00e7\u00f5es e responder \u00e0 pergunta de quando determinado estilo arquitet\u00f4nico \u00e9 mais prefer\u00edvel. Durante a exposi\u00e7\u00e3o, tentarei tra\u00e7ar uma linha l\u00f3gica que explica a evolu\u00e7\u00e3o dos estilos arquitet\u00f4nicos, desde mon\u00f3litos at\u00e9 microsservi\u00e7os. <\/p>\n<p>Na \u00faltima vez, falamos sobre os diferentes tipos de mon\u00f3litos e o uso de componentes para constru\u00ed-los, tanto os componentes de montagem quanto os componentes de implanta\u00e7\u00e3o. Analisamos a arquitetura orientada a servi\u00e7os.<\/p>\n<p>Agora, finalmente vamos definir as principais caracter\u00edsticas da arquitetura de microsservi\u00e7os. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Rela\u00e7\u00e3o das arquiteturas<\/h2>\n<p>\n\u00c9 importante entender que, com base nos dados dos artigos anteriores, qualquer servi\u00e7o \u00e9 um componente, mas nem todo servi\u00e7o \u00e9 um microsservi\u00e7o. <\/p>\n<h2>Caracter\u00edsticas da arquitetura de microsservi\u00e7os<\/h2>\n<p>\nAs principais caracter\u00edsticas da arquitetura de microsservi\u00e7os s\u00e3o:<\/p>\n<ul>\n<li>Organiza\u00e7\u00e3o em torno das capacidades de neg\u00f3cios (Organized around Business Capabilities)<\/li>\n<li>Produtos, n\u00e3o projetos (Products not Projects)<\/li>\n<li>Pontos de entrada inteligentes e canais simples (Smart endpoints and dumb pipes)<\/li>\n<li>Governan\u00e7a descentralizada (Decentralized Governance)<\/li>\n<li>Gerenciamento de dados descentralizado (Decentralized Data Management)<\/li>\n<li>Automa\u00e7\u00e3o de infraestrutura (Infrastructure Automation)<\/li>\n<li>Design para falhas (Design for failure)<\/li>\n<li>Arquitetura com evolu\u00e7\u00e3o (Evolutionary Design)<\/li>\n<\/ul>\n<p>\nO primeiro ponto vem da arquitetura orientada a servi\u00e7os, pois os microsservi\u00e7os s\u00e3o um caso particular dos servi\u00e7os. Os outros pontos merecem uma considera\u00e7\u00e3o separada.<\/p>\n<h2>Organiza\u00e7\u00e3o em torno das capacidades de neg\u00f3cios (Organized around Business Capabilities)<\/h2>\n<p>\nAgora, \u00e9 necess\u00e1rio lembrar da Lei de Conway: organiza\u00e7\u00f5es que criam sistemas organizam sua arquitetura para refletir a estrutura de intera\u00e7\u00e3o dentro dessas organiza\u00e7\u00f5es. Um exemplo \u00e9 o caso de cria\u00e7\u00e3o de um compilador: uma equipe de sete pessoas desenvolveu um compilador de sete passagens, enquanto uma equipe de cinco desenvolveu um de cinco passagens.<\/p>\n<p>Se falarmos sobre mon\u00f3litos e microsservi\u00e7os, quando o desenvolvimento \u00e9 organizado por departamentos funcionais (backend, frontend, administradores de banco de dados), resulta em um mon\u00f3lito cl\u00e1ssico. <\/p>\n<p>Para obter microsservi\u00e7os, as equipes precisam ser organizadas em torno das capacidades de neg\u00f3cios (equipe de pedidos, expedi\u00e7\u00e3o, cat\u00e1logo). Essa organiza\u00e7\u00e3o permitir\u00e1 que as equipes se concentrem na cria\u00e7\u00e3o de partes espec\u00edficas da aplica\u00e7\u00e3o.<\/p>\n<h2>Produtos, n\u00e3o projetos (Products not Projects)<\/h2>\n<p>\nA abordagem de projeto em que a equipe transfere a funcionalidade desenvolvida para outras equipes em um cen\u00e1rio de arquitetura de microservi\u00e7os n\u00e3o \u00e9 adequada. A equipe deve manter o sistema ao longo de todo o seu ciclo de vida. A Amazon, uma das l\u00edderes na implementa\u00e7\u00e3o de microservi\u00e7os, afirmou: \"voc\u00ea constr\u00f3i o produto e voc\u00ea o executa\" (\"you build, you run it\"). A abordagem orientada ao produto permite que a equipe sinta as necessidades do neg\u00f3cio. <\/p>\n<h2>Pontos de entrada inteligentes e canais simples (Smart endpoints and dumb pipes)<\/h2>\n<p>\nA arquitetura SOA deu grande aten\u00e7\u00e3o aos canais de comunica\u00e7\u00e3o, especialmente ao Enterprise Service Bus (barramento de servi\u00e7os empresariais). Isso frequentemente leva ao Erroneous Spaghetti Box, ou seja, a complexidade do mon\u00f3lito se transforma na complexidade das intera\u00e7\u00f5es entre os servi\u00e7os. Na arquitetura de microservi\u00e7os, s\u00e3o utilizadas apenas maneiras simples de intera\u00e7\u00e3o.<\/p>\n<h2>Governan\u00e7a descentralizada (Decentralized Governance)<\/h2>\n<p>\nDecis\u00f5es-chave sobre microservi\u00e7os devem ser tomadas pelas pessoas que realmente os desenvolvem. Aqui, decis\u00f5es-chave se referem \u00e0 escolha<br \/>\nde linguagens de programa\u00e7\u00e3o, metodologias de implanta\u00e7\u00e3o, contratos de interfaces p\u00fablicas etc. <\/p>\n<h2>Gerenciamento de dados descentralizado (Decentralized Data Management)<\/h2>\n<p>\nA abordagem padr\u00e3o, onde o aplicativo depende de um \u00fanico banco de dados, n\u00e3o pode levar em conta as especificidades de cada servi\u00e7o. O MSA pressup\u00f5e uma gest\u00e3o descentralizada de dados, incluindo a aplica\u00e7\u00e3o de diferentes tecnologias.<\/p>\n<h2>Automa\u00e7\u00e3o de infraestrutura (Infrastructure Automation)<\/h2>\n<p>\nO MSA apoia processos de implanta\u00e7\u00e3o e entrega cont\u00ednuas. Isso s\u00f3 \u00e9 poss\u00edvel atrav\u00e9s da automa\u00e7\u00e3o dos processos. Nesse sentido, a implanta\u00e7\u00e3o de um grande n\u00famero de servi\u00e7os n\u00e3o parece mais algo assustador. O processo de implanta\u00e7\u00e3o deve se tornar rotineiro. O segundo aspecto est\u00e1 relacionado \u00e0 gest\u00e3o de servi\u00e7os em um ambiente de produto. Sem automa\u00e7\u00e3o, gerenciar processos que s\u00e3o executados em diferentes ambientes operacionais se torna imposs\u00edvel.<\/p>\n<h2>Design para falhas (Design for failure)<\/h2>\n<p>\nNumerosos servi\u00e7os MSA est\u00e3o sujeitos a falhas. Nesse caso, o tratamento de erros em um sistema distribu\u00eddo \u00e9 uma tarefa bastante n\u00e3o-trivial. A arquitetura das aplica\u00e7\u00f5es deve ser resiliente a tais falhas. Rebecca Parsons considera muito importante que n\u00e3o utilizemos mais nem mesmo a intera\u00e7\u00e3o intra-processo entre os servi\u00e7os; em vez disso, recorremos ao HTTP para comunica\u00e7\u00e3o, que n\u00e3o \u00e9, de forma alguma, t\u00e3o confi\u00e1vel.<\/p>\n<h2>Arquitetura com evolu\u00e7\u00e3o (Evolutionary Design)<\/h2>\n<p>\nA arquitetura do sistema MSA deve evoluir de forma gradual. \u00c9 prefer\u00edvel limitar as mudan\u00e7as necess\u00e1rias aos limites de um \u00fanico servi\u00e7o. Tamb\u00e9m \u00e9 importante considerar o impacto sobre outros servi\u00e7os. A abordagem tradicional consiste em tentar resolver esse problema por meio de gerenciamento de vers\u00f5es, mas o MSA sugere usar o gerenciamento de vers\u00f5es como<br \/>\numa medida extrema.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>\nAp\u00f3s tudo que foi dito, podemos definir o que s\u00e3o microservi\u00e7os. A arquitetura de microservi\u00e7os \u00e9 uma abordagem para desenvolver um aplicativo espec\u00edfico na forma de um conjunto de pequenos servi\u00e7os, cada um operando em seu pr\u00f3prio processo e interagindo por meio de mecanismos leves, frequentemente interfaces de API de recursos HTTP. Esses servi\u00e7os s\u00e3o constru\u00eddos com base em oportunidades de neg\u00f3cios e podem ser implantados independentemente por meio de um mecanismo de implanta\u00e7\u00e3o totalmente<br \/>\nautomatizado. Existe um n\u00edvel m\u00ednimo de gerenciamento centralizado desses servi\u00e7os, que podem ser escritos em diferentes linguagens de programa\u00e7\u00e3o e usar diferentes tecnologias de armazenamento de dados.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/z0Ur\/\"><img decoding=\"async\" alt=\"Escolha do estilo arquitet\u00f4nico (parte 3)\" src=\"\/wp-content\/uploads\/2020\/09\/f9ffd06c83921f64818842327c09108e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><i><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/519456\/\">Leia a parte 2<\/a><\/noindex><\/i><br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/520870\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e \u0441\u0435\u0440\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043a \u0441\u0442\u0430\u0440\u0442\u0443 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0412\u044b\u0431\u043e\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043e\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0449\u0438\u0445 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043f\u0440\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 \u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0441\u0442\u0438\u043b\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u043a\u043e\u0433\u0434\u0430 \u043a\u0430\u043a\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":95404,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-95403","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.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440.\" \/>\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\/vybor-arhitekturnogo-stilya-chast-3\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\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\u0412\u044b\u0431\u043e\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f (\u0447\u0430\u0441\u0442\u044c 3) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3\" \/>\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=\"2020-09-28T17:43:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-28T17:43:15+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\udd47Escolha do estilo arquitet\u00f4nico (parte 3) | ProHoster","description":"Ol\u00e1, Habr.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","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\u0412\u044b\u0431\u043e\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f (\u0447\u0430\u0441\u0442\u044c 3) | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440.","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","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":"2020-09-28T17:43:15+00:00","article:modified_time":"2020-09-28T17:43:15+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"95403","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 11:06:26","updated":"2022-10-01 11:38:49","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\/95403","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=95403"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/95403\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/95404"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=95403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=95403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=95403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}