{"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\/es\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","title":{"rendered":"Selecci\u00f3n del estilo arquitect\u00f3nico (parte 3)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Hola, Habr. Hoy continuo la serie de publicaciones que escrib\u00ed especialmente para el inicio de un nuevo flujo del curso. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/z0Ur\/\">\u00abArquitecto de Software\u00bb<\/a><\/noindex>.<\/i><\/b><\/p>\n<p><\/p>\n<h2>Introducci\u00f3n<\/h2>\n<p>\nLa elecci\u00f3n del estilo arquitect\u00f3nico es una de las decisiones t\u00e9cnicas fundamentales al construir un sistema de informaci\u00f3n. En esta serie de art\u00edculos, propongo analizar los estilos arquitect\u00f3nicos m\u00e1s populares para la construcci\u00f3n de aplicaciones y responder a la pregunta de cu\u00e1ndo es preferible un estilo arquitect\u00f3nico en particular. A lo largo de la exposici\u00f3n, intentar\u00e9 establecer una cadena l\u00f3gica que explique el desarrollo de estilos arquitect\u00f3nicos desde monolitos hasta microservicios. <\/p>\n<p>La vez pasada hablamos sobre los diferentes tipos de monolitos y sobre el uso de componentes para su construcci\u00f3n, tanto de componentes de ensamblaje como de despliegue. Analizamos la arquitectura orientada a servicios.<\/p>\n<p>Ahora finalmente definiremos las caracter\u00edsticas principales de la arquitectura de microservicios. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Relaci\u00f3n de arquitecturas<\/h2>\n<p>\nEs necesario entender que, seg\u00fan los datos de los art\u00edculos anteriores, cualquier servicio es un componente, pero no cualquier servicio es un microservicio. <\/p>\n<h2>Caracter\u00edsticas de la arquitectura de microservicios<\/h2>\n<p>\nLas caracter\u00edsticas principales de la arquitectura de microservicios son:<\/p>\n<ul>\n<li>Organizaci\u00f3n en torno a las capacidades del negocio (Organized around Business Capabilities)<\/li>\n<li>Productos, no proyectos (Products not Projects)<\/li>\n<li>Puntos de entrada inteligentes y canales tontos (Smart endpoints and dumb pipes)<\/li>\n<li>Gobernanza descentralizada (Decentralized Governance)<\/li>\n<li>Gesti\u00f3n descentralizada de datos (Decentralized Data Management)<\/li>\n<li>Automatizaci\u00f3n de la infraestructura (Infrastructure Automation)<\/li>\n<li>Dise\u00f1o para la falla (Design for failure)<\/li>\n<li>Arquitectura con desarrollo evolutivo (Evolutionary Design)<\/li>\n<\/ul>\n<p>\nEl primer punto proviene de la arquitectura orientada a servicios, porque los microservicios son un caso particular de los servicios. Los otros puntos merecen consideraci\u00f3n aparte.<\/p>\n<h2>Organizaci\u00f3n en torno a las capacidades del negocio (Organized around Business Capabilities)<\/h2>\n<p>\nAhora es necesario recordar la ley de Conway: las organizaciones que crean sistemas organizan su arquitectura de manera que imita la estructura de interacci\u00f3n dentro de esas organizaciones. Como ejemplo, podemos recordar el caso de la creaci\u00f3n de un compilador: un equipo de siete personas desarroll\u00f3 un compilador de siete pasadas, mientras que un equipo de cinco hizo uno de cinco pasadas.<\/p>\n<p>Si hablamos de monolitos y microservicios, en el caso de que el desarrollo est\u00e9 organizado por departamentos funcionales (backend, frontend, administradores de bases de datos), se obtiene un monolito cl\u00e1sico. <\/p>\n<p>Para obtener microservicios, es necesario organizar los equipos en torno a las capacidades del negocio (equipo de pedidos, env\u00edos, cat\u00e1logo). Esta organizaci\u00f3n permitir\u00e1 a los equipos centrarse en la creaci\u00f3n de partes espec\u00edficas de la aplicaci\u00f3n.<\/p>\n<h2>Productos, no proyectos (Products not Projects)<\/h2>\n<p>\nEl enfoque de proyecto en el que un equipo transfiere funcionalidad desarrollada a otros equipos en el caso de una arquitectura de microservicios no es adecuado. El equipo debe mantener el sistema a lo largo de todo su ciclo de vida. Amazon, uno de los pioneros en la implementaci\u00f3n de microservicios, declar\u00f3: \u00abusted construye el producto y tambi\u00e9n lo lanza\u00bb (\u00abyou build, you run it\u00bb). Este enfoque centrado en el producto permite al equipo sentir las necesidades del negocio. <\/p>\n<h2>Puntos de entrada inteligentes y canales tontos (Smart endpoints and dumb pipes)<\/h2>\n<p>\nLa arquitectura SOA prestaba mucha atenci\u00f3n a los canales de comunicaci\u00f3n, en particular a la Enterprise Service Bus (autob\u00fas de servicio empresarial). Esto a menudo conduce a un Erroneous Spaghetti Box, es decir, la complejidad del monolito se transforma en la complejidad de las relaciones entre servicios. En una arquitectura de microservicios se utilizan \u00fanicamente m\u00e9todos simples de interacci\u00f3n.<\/p>\n<h2>Gobernanza descentralizada (Decentralized Governance)<\/h2>\n<p>\nLas decisiones clave sobre los microservicios deben ser tomadas por las personas que realmente desarrollan los microservicios. Aqu\u00ed, las decisiones clave se refieren a la elecci\u00f3n<br \/>\nde lenguajes de programaci\u00f3n, metodolog\u00eda de implementaci\u00f3n, contratos de interfaces p\u00fablicas, etc. <\/p>\n<h2>Gesti\u00f3n descentralizada de datos (Decentralized Data Management)<\/h2>\n<p>\nEl enfoque est\u00e1ndar, en el que una aplicaci\u00f3n se basa en una \u00fanica base de datos, no puede tener en cuenta las particularidades de cada servicio espec\u00edfico. MSA implica una gesti\u00f3n descentralizada de los datos, incluso utilizando diferentes tecnolog\u00edas.<\/p>\n<h2>Automatizaci\u00f3n de la infraestructura (Infrastructure Automation)<\/h2>\n<p>\nMSA apoya procesos de despliegue y entrega continua. Esto solo es posible mediante la automatizaci\u00f3n de procesos. De este modo, el despliegue de una gran cantidad de servicios ya no se percibe como algo aterrador. El proceso de despliegue debe volverse rutinario. El segundo aspecto est\u00e1 relacionado con la gesti\u00f3n de servicios en un entorno de producci\u00f3n. Sin automatizaci\u00f3n, la gesti\u00f3n de procesos en diferentes entornos operativos se vuelve inviable.<\/p>\n<h2>Dise\u00f1o para la falla (Design for failure)<\/h2>\n<p>\nLos numerosos servicios de MSA son propensos a fallos. Sin embargo, el manejo de errores en un sistema distribuido es una tarea bastante no trivial. La arquitectura de las aplicaciones debe ser resistente a tales fallos. Rebecca Parsons considera muy importante que ya no utilicemos ni siquiera la interacci\u00f3n dentro del proceso entre servicios; en su lugar, recurrimos a HTTP, que no es ni de cerca tan confiable.<\/p>\n<h2>Arquitectura con desarrollo evolutivo (Evolutionary Design)<\/h2>\n<p>\nLa arquitectura del sistema MSA debe evolucionar de manera gradual. Es preferible limitar los cambios necesarios a los l\u00edmites de un solo servicio. Tambi\u00e9n es importante considerar el impacto en otros servicios. El enfoque tradicional consiste en intentar resolver este problema mediante la gesti\u00f3n de versiones, pero MSA sugiere utilizar la gesti\u00f3n de versiones como<br \/>\nuna medida extrema.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>\nDespu\u00e9s de todo lo anterior, se puede definir qu\u00e9 son los microservicios. La arquitectura de microservicios es un enfoque para el desarrollo de una aplicaci\u00f3n individual como un conjunto de peque\u00f1os servicios, cada uno de los cuales funciona en su propio proceso e interact\u00faa a trav\u00e9s de mecanismos ligeros, a menudo mediante una interfaz de programaci\u00f3n de aplicaciones (API) sobre recursos HTTP. Estos servicios est\u00e1n construidos sobre capacidades comerciales y pueden ser desplegados de manera independiente utilizando un mecanismo de despliegue completamente<br \/>\nautomatizado. Existe un nivel m\u00ednimo de gesti\u00f3n centralizada de estos servicios, que pueden estar escritos en diferentes lenguajes de programaci\u00f3n y utilizar diversas tecnolog\u00edas de almacenamiento de datos.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/z0Ur\/\"><img decoding=\"async\" alt=\"Selecci\u00f3n del estilo arquitect\u00f3nico (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\/\">Leer parte 2<\/a><\/noindex><\/i><br \/>\n<br \/>Fuente: <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.2 - 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\/es\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\/es\/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\udd47Selecci\u00f3n del estilo arquitect\u00f3nico (parte 3) | ProHoster","description":"Hola, Habr.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/95403","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=95403"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/95403\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/95404"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=95403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=95403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=95403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}