{"id":1981,"date":"2021-08-18T10:15:06","date_gmt":"2021-08-18T13:15:06","guid":{"rendered":"https:\/\/www.rua-asistencia.com.uy\/?p=1981"},"modified":"2021-08-18T10:15:09","modified_gmt":"2021-08-18T13:15:09","slug":"microservicios-agilidad-y-escalabilidad-para-el-negocio","status":"publish","type":"post","link":"https:\/\/rua-asistencia.com.uy\/2021\/08\/18\/microservicios-agilidad-y-escalabilidad-para-el-negocio\/","title":{"rendered":"Microservicios: Agilidad y escalabilidad para el negocio"},"content":{"rendered":"\n<p><em>Por Dorian Bonanata, Gerente de Tecnolog\u00eda<\/em><\/p>\n\n\n\n<p>Cuando me incorpor\u00e9 a\u00a0<a rel=\"noreferrer noopener\" href=\"https:\/\/www.rua-asistencia.com.uy\/\" target=\"_blank\">Grupo RUA<\/a>,\u00a0en 2020 con el desaf\u00edo de gerenciar el \u00e1rea de Tecnolog\u00eda\u00a0lo primero que hicimos fue un an\u00e1lisis del estado general de las \u00e1reas tecnol\u00f3gicas en la compa\u00f1\u00eda a todo nivel, con la intenci\u00f3n de entender todas las\u00a0<strong>oportunidades de mejora<\/strong>\u00a0que hab\u00eda y la\u00a0<strong>mitigaci\u00f3n de riesgos<\/strong>\u00a0que deb\u00edamos atacar primero.\u00a0<\/p>\n\n\n\n<p>Algo que&nbsp;cabe&nbsp;destacar ante un an\u00e1lisis de este tipo, es la necesidad intr\u00ednseca de una participaci\u00f3n activa de los colaboradores que, al fin y al cabo, son los que viven en el d\u00eda a d\u00eda la entrega de valor desde las \u00e1reas de TI.&nbsp;Tambi\u00e9n,&nbsp;el costo\/dificultad que le acarrea al equipo de desarrollo la&nbsp;<strong>deuda t\u00e9cnica<\/strong>.&nbsp;<\/p>\n\n\n\n<p>Uno de los principales desaf\u00edos que encontramos para&nbsp;uno&nbsp;de nuestros principales productos, al cual pretend\u00edamos&nbsp;<strong>internacionalizar y escalar<\/strong>, era el de desacoplar o descomponer toda la l\u00f3gica del negocio de un&nbsp;<strong>API monol\u00edtico<\/strong>&nbsp;(un solo repositorio de c\u00f3digo con todas las responsabilidades centralizadas)&nbsp;hacia una&nbsp;<strong>arquitectura de microservicios<\/strong>, donde cada uno de estos conociera y fuera responsable de una peque\u00f1a parte del negocio. Es decir, un microservicio espec\u00edfico para la autenticaci\u00f3n (SignUp,&nbsp;SignIn,&nbsp;logins, etc.), otro para la administraci\u00f3n de contenidos (fotos, banners, etc.), otro para la l\u00f3gica de cupones de descuentos y as\u00ed sucesivamente.&nbsp;<\/p>\n\n\n\n<p>La manera en que funcionan&nbsp;estos componentes se da generalmente por la \u00ab<strong>orquestaci\u00f3n<\/strong>\u00bb desde un componente espec\u00edfico (como un API) que hace las peticiones a diferentes microservicios.&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" src=\"https:\/\/media-exp1.licdn.com\/dms\/image\/C4E12AQGHiaVG7h8W4g\/article-inline_image-shrink_1500_2232\/0\/1629137563885?e=1634774400&amp;v=beta&amp;t=Go49Zky9Y8RbfZMqJXvypqYcr_45X72Oc6bwxRw36-o\" alt=\"No hay texto alternativo para esta imagen\" width=\"444\" height=\"592\"\/><\/figure>\n\n\n\n<p>Lo que se intenta lograr con esta arquitectura es obtener \u00abpeque\u00f1os\u00bb componentes interactuando entre s\u00ed y\/o con otros componentes, cada uno&nbsp;<strong>aut\u00f3nomo y especializado<\/strong>&nbsp;en ejecutar sus propios procesos asociados a un problema, servicio o funcionalidad espec\u00edfica, sin dejar de estar dentro de la l\u00f3gica general del negocio,&nbsp;haci\u00e9ndolo m\u00e1s sencillo de&nbsp;<strong>mantener<\/strong>, con varias virtudes:&nbsp;&nbsp;<\/p>\n\n\n\n<ul><li><strong>Escalar independientemente<\/strong>:&nbsp;cada microservicio puede ser mantenido y\/o mejorado de manera independiente al resto del producto, minimizando riesgos durante despliegues.&nbsp;<\/li><li><strong>Elasticidad<\/strong>:&nbsp;es relativamente sencillo levantar m\u00e1s instancias de estos ante picos de demanda.&nbsp;<\/li><li><strong>Agilidad en el desarrollo<\/strong>:&nbsp;incorporando peque\u00f1as mejoras y agregando valor en iteraciones acotadas de tiempo.&nbsp;<\/li><li><strong>Independencia tecnol\u00f3gica<\/strong>:&nbsp;si bien cada MS interact\u00faa con otros componentes, estos pueden usar&nbsp;stacks&nbsp;o lenguajes diferentes seg\u00fan la caracter\u00edstica del mismo. Algunos requieren tecnolog\u00edas m\u00e1s robustas que otros, diferentes&nbsp;DBs, etc.&nbsp;<\/li><li><strong>Reciclado de c\u00f3digo<\/strong>: Se reutilizan l\u00f3gicas evitando reescribir m\u00faltiples veces lo mismo, como ejemplo simple, un microservicio de autenticaci\u00f3n, que es responsable de todos los registros y accesos.<\/li><li><strong>Despliegue y entrega continua<\/strong>: los tiempos de despliegue son mucho menores y los errores son f\u00e1ciles de revertir, lo que permite hacer \u00abrollbacks\u00bb de manera r\u00e1pida, ayudando a la experimentaci\u00f3n y aprendizaje.&nbsp;&nbsp;<\/li><\/ul>\n\n\n\n<p>Todo esto es algo en lo que se avanz\u00f3 en Grupo RUA y en lo que seguiremos trabajando cada vez que una unidad de negocio requiera una nueva funcionalidad o mejora en la l\u00f3gica actual.<\/p>\n\n\n\n<p>Es importante aclarar que no todo es color de rosas en esta arquitectura, tiene sus&nbsp;desaf\u00edos:<\/p>\n\n\n\n<ul><li>Aumenta la&nbsp;<strong>complejidad del sistema<\/strong>&nbsp;que se desacopla.&nbsp;<\/li><li>Conlleva un esfuerzo adicional respecto a&nbsp;<strong>monitorizaci\u00f3n y gesti\u00f3n de errores<\/strong>.&nbsp;<\/li><li>Requiere de m\u00e1s recursos:&nbsp;<strong>Hardware&nbsp;f\u00edsico o virtual<\/strong>&nbsp;(cloud o hybrid\/cloud).&nbsp;<\/li><li>Deben definirse nuevo Roles como el&nbsp;<strong>DevOps<\/strong>, responsables de la provisi\u00f3n, despliegue y&nbsp;release&nbsp;continuos que se hacen imprescindibles.&nbsp;<\/li><li>Implementaci\u00f3n de nuevas&nbsp;<strong>filosof\u00edas<\/strong>&nbsp;y&nbsp;<strong>metodolog\u00edas<\/strong>&nbsp;de trabajo.&nbsp;<\/li><\/ul>\n\n\n\n<p>En conclusi\u00f3n, para lograr el objetivo de un&nbsp;<strong>producto escalable e internacional<\/strong>&nbsp;con&nbsp;<strong>respuesta a los cambios,<\/strong>&nbsp;<strong>sostenible<\/strong>, con la posibilidad de&nbsp;<strong>crecer de manera \u00e1gil<\/strong>, la empresa toda debe cursar por cambios enfrentando grandes desaf\u00edos. Se debe salir de la zona de confort, aprender nuevas metodolog\u00edas y tecnolog\u00edas, modificar flujos de trabajo, ajustar roles y responsabilidades, etc.&nbsp;&nbsp;<\/p>\n\n\n\n<p>Desde mi perspectiva, el esfuerzo vale la&nbsp;pena, ya que habilita lo que buscamos los apasionados de la tecnolog\u00eda y los negocios:&nbsp;<strong>conformar estructuras y equipos de alto rendimiento que con la tecnolog\u00eda como aliada, genere impacto en el negocio y los clientes (internos o externos) con valor agregado a corto plazo.&nbsp;<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Por Dorian Bonanata, Gerente de Tecnolog\u00eda Cuando me incorpor\u00e9 a\u00a0Grupo RUA,\u00a0en 2020 con el desaf\u00edo de gerenciar el \u00e1rea de Tecnolog\u00eda\u00a0lo primero que hicimos fue un an\u00e1lisis del estado general de las \u00e1reas tecnol\u00f3gicas en la compa\u00f1\u00eda a todo nivel, con la intenci\u00f3n de entender todas las\u00a0oportunidades de mejora\u00a0que hab\u00eda y la\u00a0mitigaci\u00f3n de riesgos\u00a0que deb\u00edamos [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1982,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"off","_et_pb_old_content":"","_et_gb_content_width":"","_mi_skip_tracking":false},"categories":[4],"tags":[],"_links":{"self":[{"href":"https:\/\/www.rua-asistencia.com.uy\/wp-json\/wp\/v2\/posts\/1981"}],"collection":[{"href":"https:\/\/www.rua-asistencia.com.uy\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rua-asistencia.com.uy\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rua-asistencia.com.uy\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rua-asistencia.com.uy\/wp-json\/wp\/v2\/comments?post=1981"}],"version-history":[{"count":1,"href":"https:\/\/www.rua-asistencia.com.uy\/wp-json\/wp\/v2\/posts\/1981\/revisions"}],"predecessor-version":[{"id":1983,"href":"https:\/\/www.rua-asistencia.com.uy\/wp-json\/wp\/v2\/posts\/1981\/revisions\/1983"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.rua-asistencia.com.uy\/wp-json\/wp\/v2\/media\/1982"}],"wp:attachment":[{"href":"https:\/\/www.rua-asistencia.com.uy\/wp-json\/wp\/v2\/media?parent=1981"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rua-asistencia.com.uy\/wp-json\/wp\/v2\/categories?post=1981"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rua-asistencia.com.uy\/wp-json\/wp\/v2\/tags?post=1981"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}