{"id":92810,"date":"2020-08-31T07:42:09","date_gmt":"2020-08-31T05:42:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1"},"modified":"2020-08-31T07:42:09","modified_gmt":"2020-08-31T05:42:09","slug":"vybor-arhitekturnogo-stilya-chast-1","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1","title":{"rendered":"Elecci\u00f3n del estilo arquitect\u00f3nico (parte 1)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Hola, Habr. En este momento, OTUS est\u00e1 aceptando inscripciones para un nuevo grupo del curso <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/5RTk\/\">\u00abArquitecto de Software\u00bb<\/a><\/noindex>. Antes del inicio del curso, quiero compartir con ustedes mi art\u00edculo autoral.<\/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. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Un poco de historia<\/h2>\n<p>\nSi intentas preguntar a los desarrolladores: \u00ab\u00bfPara qu\u00e9 sirven los microservicios?\u00bb, recibir\u00e1s las respuestas m\u00e1s diversas. Escuchar\u00e1s que los microservicios mejoran la escalabilidad, simplifican la comprensi\u00f3n del c\u00f3digo, mejoran la tolerancia a fallos, y a veces, se menciona que permiten \u00ablimpiar el c\u00f3digo\u00bb. Vamos a remitirnos a la historia para entender qu\u00e9 objetivo persegu\u00eda la aparici\u00f3n de los microservicios.<\/p>\n<p>En resumen, los microservicios, en nuestra comprensi\u00f3n actual, surgieron de la siguiente manera: en 2011, James Lewis, al analizar el trabajo de diversas empresas, not\u00f3 la aparici\u00f3n de un nuevo patr\u00f3n \u00abmicro-app\u00bb que optimizaba SOA desde el punto de vista de la aceleraci\u00f3n de la implementaci\u00f3n de servicios. Un poco m\u00e1s tarde, en 2012, en la cumbre arquitect\u00f3nica, el patr\u00f3n fue renombrado como microservicio. Por lo tanto, el objetivo inicial de la implementaci\u00f3n de microservicios fue mejorar el famoso <b>time to market<\/b>.<\/p>\n<p>En la \u00abola del 'hype'\u00bb, los microservicios estuvieron de moda en 2015. Seg\u00fan algunas investigaciones, ninguna conferencia se llevaba a cabo sin una presentaci\u00f3n sobre microservicios. Adem\u00e1s, algunas conferencias se dedicaron exclusivamente a microservicios. Hoy en d\u00eda, muchos proyectos comienzan utilizando este estilo arquitect\u00f3nico, y si un proyecto contiene toneladas de c\u00f3digo heredado, seguramente est\u00e1 en proceso de migraci\u00f3n a microservicios.<\/p>\n<p>A pesar de lo mencionado, todav\u00eda hay un n\u00famero relativamente peque\u00f1o de desarrolladores que pueden definir el concepto de \u00abmicroservicio\u00bb. Pero de esto hablaremos m\u00e1s adelante...<\/p>\n<h2>Monolito<\/h2>\n<p>\nEl estilo arquitect\u00f3nico que se contrapone a los microservicios es el monolito (o \"todo en uno\"). Explicar qu\u00e9 es un monolito quiz\u00e1s no tenga sentido, as\u00ed que enumerar\u00e9 de inmediato las desventajas de este estilo arquitect\u00f3nico que han impulsado el desarrollo de otros estilos arquitect\u00f3nicos: tama\u00f1o, acoplamiento, despliegue, escalabilidad, fiabilidad y rigidez. A continuaci\u00f3n, propongo familiarizarse con cada una de estas desventajas por separado.<\/p>\n<h3>Tama\u00f1o<\/h3>\n<p>\nEl monolito es muy grande y normalmente interact\u00faa con una base de datos muy extensa. La aplicaci\u00f3n se vuelve demasiado grande para que un solo desarrollador pueda comprenderla por completo. Solo aquellos que han pasado mucho tiempo con este c\u00f3digo pueden trabajar bien con el monolito, mientras que los nuevos gastar\u00e1n mucho tiempo tratando de entenderlo y no hay garant\u00eda de que lo logren. Normalmente, siempre hay alg\u00fan \"senior\" (condicional) que conoce el monolito m\u00e1s o menos bien y controla a los nuevos desarrolladores durante un a\u00f1o o a\u00f1o y medio. Naturalmente, este senior condicional es un \u00fanico punto de fallo, y su salida puede llevar a la ca\u00edda del monolito. <\/p>\n<h3>Acoplamiento<\/h3>\n<p>\nEl monolito se asemeja a un \"gran bulto de barro\" (big ball of mud), donde los cambios pueden tener consecuencias impredecibles. Al realizar cambios en un lugar, se puede da\u00f1ar el monolito en otro (es como rascarse la oreja y que @* se caiga). Esto se debe a que los componentes del monolito tienen relaciones muy complejas y, lo m\u00e1s importante, poco evidentes.<\/p>\n<h3>Despliegue<\/h3>\n<p>\nEl despliegue del monolito, debido a las complejas interrelaciones entre sus componentes, es un proceso largo con su propio ritual. Este ritual normalmente no est\u00e1 completamente estandarizado y se transmite \"de boca en boca\". <\/p>\n<h3>Escalabilidad<\/h3>\n<p>\nLos m\u00f3dulos del monolito pueden tener necesidades conflictivas de recursos, lo que obliga a buscar un compromiso en t\u00e9rminos de hardware. Imag\u00ednese que su monolito consiste en los servicios A y B. El servicio A es exigente en cuanto al tama\u00f1o del disco duro, mientras que el servicio B lo es en cuanto a la memoria RAM. En este caso, la m\u00e1quina en la que se instala el monolito debe satisfacer los requisitos de ambos servicios, o bien ser\u00e1 necesario desconectar manualmente uno de los servicios.<\/p>\n<p>Otro ejemplo (m\u00e1s cl\u00e1sico): el servicio A es mucho m\u00e1s popular que el servicio B, por lo que deseas tener 100 instancias del servicio A y 10 del servicio B. Nuevamente, hay dos opciones: o desplegamos 100 monolitos completos, o en algunos de ellos tendremos que desactivar manualmente los servicios B. <\/p>\n<h3>Fiabilidad<\/h3>\n<p>\nDado que todos los servicios est\u00e1n juntos, si el monolito falla, todos los servicios caen de inmediato. En realidad, esto puede no ser tan malo, al menos no habr\u00e1 fallos parciales en un sistema distribuido, pero por otro lado, debido a un error en una funcionalidad que utiliza el 0.001% de los usuarios, podr\u00edas perder a todos los usuarios de tu sistema. <\/p>\n<h3>Rigidez<\/h3>\n<p>\nDebido al tama\u00f1o del monolito, es dif\u00edcil migrar a nuevas tecnolog\u00edas. Como consecuencia, surge la tarea de retener a ese senior en particular. El stack tecnol\u00f3gico elegido al inicio del proyecto puede convertirse en un obst\u00e1culo que impida el desarrollo del producto. <\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>\nLa pr\u00f3xima vez hablaremos sobre c\u00f3mo las personas intentaron resolver los problemas mencionados al pasar a componentes y SOA.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/5RTk\/\"><img decoding=\"async\" alt=\"Elecci\u00f3n del estilo arquitect\u00f3nico (parte 1)\" src=\"\/wp-content\/uploads\/2020\/08\/d1582a83ad9cf8722a035dfd9a212aa5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<blockquote>\n<h4>Leer m\u00e1s:<\/h4>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/504144\/\">Por qu\u00e9 SQL Server no garantiza el orden de los resultados sin ORDER BY<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/508206\/\">Arquitectura para desarrolladores y administradores: \u00bfqu\u00e9 habilidades necesita cada uno?<\/a><\/noindex><\/li>\n<\/ul>\n<\/blockquote>\n<p>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/516880\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb. \u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430 \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u0441\u0432\u043e\u0435\u0439 \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439. \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 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92811,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92810","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, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb.\" \/>\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-1\" \/>\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 1) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1\" \/>\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-08-31T05:42:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-31T05:42:09+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\udd47Elecci\u00f3n del estilo arquitect\u00f3nico (parte 1) | ProHoster","description":"Hola, Habr. En este momento, OTUS est\u00e1 abriendo inscripciones para un nuevo curso de 'Arquitecto de Software'.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1","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 1) | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb.","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1","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-08-31T05:42:09+00:00","article:modified_time":"2020-08-31T05:42:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92810","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 12:00:37","updated":"2022-10-03 23:14:42","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\/92810","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=92810"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/92810\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/92811"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=92810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=92810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=92810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}