{"id":21043,"date":"2020-03-11T08:58:17","date_gmt":"2020-03-11T07:58:17","guid":{"rendered":"https:\/\/www.teldat.com\/sin-categorizar\/21043\/service-mesh-para-ayudar-a-desarrolladores-con-microservicios-y-sistemas-distribuidos\/"},"modified":"2023-11-22T11:41:40","modified_gmt":"2023-11-22T10:41:40","slug":"service-mesh-para-ayudar-a-desarrolladores-con-microservicios-y-sistemas-distribuidos","status":"publish","type":"post","link":"https:\/\/www.teldat.com\/es\/blog\/service-mesh-para-ayudar-a-desarrolladores-con-microservicios-y-sistemas-distribuidos\/","title":{"rendered":"\u00bfQu\u00e9 aporta service mesh a los microservicios?"},"content":{"rendered":"<p><img decoding=\"async\" class=\"alignleft wp-image-5426 size-medium\" src=\"https:\/\/www.teldat.com\/wp-content\/uploads\/2022\/06\/Guillermo-Lopez-II-marzo-2020-300x200.jpg\" alt=\"microservices\" width=\"300\" height=\"200\" title=\"\"><a href=\"https:\/\/www.teldat.com\/es\/blog\/service-mesh-arquitectura-de-microservicios\/\" target=\"_blank\" rel=\"noopener\">En el art\u00edculo de la semana pasada<\/a> describimos las dificultades a las que se enfrentan los desarrolladores al trabajar con arquitecturas distribuidas o de microservicios, en muchas ocasiones, sin el conocimiento detallado necesario en las <strong>tecnolog\u00edas de red subyacentes<\/strong> que hacen posible que las distintas piezas se comuniquen.<\/p>\n<p><!--more--><\/p>\n<p>Como ya analizamos, los mayores retos no est\u00e1n relacionados con la l\u00f3gica de negocio del software, sino con la forma en que los servicios interact\u00faan entre s\u00ed. Para eso estamos los<strong> ingenieros de infraestructuras<\/strong>, haciendo que <strong>ambas tecnolog\u00edas trabajen como una sola<\/strong>. En un ecosistema <em><strong>cloud-native<\/strong><\/em> como <strong>Kubernetes<\/strong>, estos desaf\u00edos pueden abordarse mediante la implementaci\u00f3n de una <strong>malla de servicios o service mesh.<\/strong><\/p>\n<h2>Service mesh y microservicios<\/h2>\n<p>Un service mesh se define como un<strong> sistema distribuido<\/strong> para abordar la problem\u00e1tica, a nivel de red, de los microservicios de manera integrada.<\/p>\n<p>El sistema completo proporciona <strong>funciones complementarias a Kubernetes<\/strong>. Est\u00e1 construido sobre la base de una capa dedicada que controla todas las interacciones de servicio en el <strong>orquestador<\/strong>. La capa generalmente se compone de <strong>servidores proxy de red desplegados junto al servicio<\/strong>, sin que este lo sepa.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-5425\" src=\"https:\/\/www.teldat.com\/wp-content\/uploads\/2022\/06\/guillermolopez1-300x160.png\" alt=\"microservices\" width=\"500\" height=\"266\" title=\"\"><\/p>\n<p>El objetivo de implementar una malla de servicios es tener una <strong>plataforma integrada<\/strong> que pueda <strong>monitorizar activamente todo el tr\u00e1fico de los servicios<\/strong>. Al hacerlo, un service mesh puede abordar las preocupaciones relacionadas con la <em>tolerancia a fallos, la seguridad del servicio y el monitoreo de aplicaciones.<\/em><\/p>\n<p>Esta herramienta proporciona una nueva forma no intrusiva de <strong>implementar comunicaciones de manera eficiente<\/strong>. En comparaci\u00f3n con los <em>frameworks<\/em> espec\u00edficos de los lenguajes,<strong> un service mesh aborda los problemas fuera de los servicios.<\/strong><\/p>\n<p>Estos sistemas son independientes del protocolo y operan en la capa 5 (sesi\u00f3n). De esta manera, se pueden integrar en un <em>entorno pol\u00edglota.<\/em> Dicha abstracci\u00f3n <strong>permite a los desarrolladores centrarse en la l\u00f3gica de negocio<\/strong> de sus aplicaciones y <strong>permite a los ingenieros de sistemas operar la infraestructura <\/strong>de manera eficiente<strong>.<\/strong> Esta es una situaci\u00f3n win-win para ambos. En general, una malla de servicios aborda las preocupaciones sobre estos desaf\u00edos y agrega los siguientes beneficios:<\/p>\n<ul>\n<li><strong>Control del tr\u00e1fico.<\/strong><\/li>\n<li><strong>Seguridad.<\/strong><\/li>\n<li><strong>Anal\u00edtica del flujo de las operaciones.<\/strong><\/li>\n<\/ul>\n<p>Los microservicios en un service mesh logran esto al reenviar cabeceras de seguimiento. De esta forma, <strong>el rastreo distribuido puede ayudar a visualizar las dependencias entre servicios.<\/strong> Una malla de servicio tambi\u00e9n <strong>captura m\u00e9tricas<\/strong> en torno a los <em>vol\u00famenes de solicitud y las tasas de fallo.<\/em><\/p>\n<p>Otro aspecto importante es el<strong> manejo de logs de servicio.<\/strong> En una aplicaci\u00f3n tradicional, a menudo hay un archivo de log que registra todo. En una arquitectura de microservicios, donde tenemos una serie de ficheros de log, necesitamos buscarlos todos para comprender el comportamiento de cualquier flujo. <strong>Una malla de servicios proporciona logs centralizados<\/strong> y paneles gr\u00e1ficos construidos sobre logs.<\/p>\n<h2>Malla de servicios en sistemas distribuidos<\/h2>\n<p>Asumiendo que existen los problemas descritos por James Glosling, en los sistemas distribuidos, \u00bfc\u00f3mo debemos atacarlos y en qu\u00e9 nos puede ayudar un service mesh?<\/p>\n<ul>\n<li><em><strong>La red no es robusta ni confiable.<\/strong><\/em> Como ingenieros o arquitectos de software necesitamos estar preparados para lidiar con estos escenarios, introduciendo suficiente redundancia en el sistema en el lado del servidor, pero tambi\u00e9n en el lado del cliente se necesita a\u00f1adir mecanismos de reintentos para poder manejar problemas de red transitorios.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li><em><strong>La latencia es alta<\/strong><\/em>. Patrones como circuit breaker tienen como objetivo manejar escenarios de latencias, encapsulando la llamada a un servicio remoto en un objeto que realiza un seguimiento de fallos, de tal forma que, si existen fallos, no se invocar\u00e1 m\u00e1s al servicio externo, y se devuelve instant\u00e1neamente un error al cliente. Si no se tienen en cuenta este tipo de consideraciones, estos fallos pueden tener un efecto cascada en el ecosistema completo.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li><strong><em>El ancho de banda es finito<\/em><\/strong>. Para superar situaciones como las del crecimiento de servicios, se hace necesario que las aplicaciones tengan un mecanismo de cuotas de alojamiento y trazabilidad de su consumo. Un crecimiento de microservicios tambi\u00e9n puede crear problemas de saturaci\u00f3n en los balanceadores de carga y as\u00ed degradar su rendimiento. Insertar balanceo de carga en el lado del cliente suele ser un buen enfoque para afrontar situaciones similares.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li><em><strong>La red no es segura.<\/strong> <\/em>En arquitecturas de microservicios, cada uno de los equipos de desarrollo debe responsabilizarse de la seguridad. La comunicaci\u00f3n entre microservicios necesita ser controlada. La autenticaci\u00f3n a nivel de servicio es imprescindible para filtrar conexiones desconocidas.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li><strong><em>La topolog\u00eda cambia<\/em><\/strong>. Como ya comentamos, un simple escalado horizontal en un servicio puede cambiar flujos de tr\u00e1fico e insertar fallos inesperados. Un sistema de descubrimiento de servicios puede solucionar este tipo de problemas en gran medida.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li><em><strong>Hay varios administradores del sistema.<\/strong> <\/em>Para tener \u00e9xito en este aspecto se necesita un acceso basado en roles o RBAC.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li><em><strong>El coste de transporte no es cero.<\/strong><\/em> La transmisi\u00f3n de datos puede incurrir tambi\u00e9n en costes. Los datos deben ser serializados entre extremos. Protocolos como SOAP\/XML son altamente ineficientes, JSON se considera mejor elecci\u00f3n, pero protocolos binarios como buffers de protocolo, independientes del lenguaje han mejorado JSON. Considerando que el intercambio de informaci\u00f3n ocurre entre aplicaciones, es preferible usar un protocolo binario para el ecosistema completo.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul>\n<li><em><strong>La red es heterog\u00e9nea<\/strong><\/em>. Una malla de servicio nos permite desacoplar la infraestructura del c\u00f3digo de la aplicaci\u00f3n. Tambi\u00e9n simplifica la topolog\u00eda de red subyacente, ya que la red solo proporciona la conexi\u00f3n f\u00edsica. Todos los firewalls, balanceadores de carga y subredes se pueden eliminar, dado que no quieren controlar ninguna interacci\u00f3n de servicio.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>En el art\u00edculo de la semana pasada describimos las dificultades a las que se enfrentan los desarrolladores al trabajar con arquitecturas distribuidas o de microservicios, en muchas ocasiones, sin el conocimiento detallado necesario en las tecnolog\u00edas de red subyacentes que hacen posible que las distintas piezas se comuniquen.<\/p>\n","protected":false},"author":183,"featured_media":19874,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"off","_et_pb_old_content":"<img class=\"alignleft wp-image-5426 size-medium\" src=\"https:\/\/www.teldat.com\/wp-content\/uploads\/2022\/06\/Guillermo-Lopez-II-marzo-2020-300x200.jpg\" alt=\"microservices\" width=\"300\" height=\"200\" \/><a href=\"https:\/\/www.teldat.com\/es\/blog\/service-mesh-arquitectura-de-microservicios\/\" target=\"_blank\" rel=\"noopener\">En el art\u00edculo de la semana pasada<\/a> describimos las dificultades a las que se enfrentan los desarrolladores al trabajar con arquitecturas distribuidas o de microservicios, en muchas ocasiones, sin el conocimiento detallado necesario en las <strong>tecnolog\u00edas de red subyacentes<\/strong> que hacen posible que las distintas piezas se comuniquen.\r\n\r\n<!--more-->\r\n\r\nComo ya analizamos, los mayores retos no est\u00e1n relacionados con la l\u00f3gica de negocio del software, sino con la forma en que los servicios interact\u00faan entre s\u00ed. Para eso estamos los<strong> ingenieros de infraestructuras<\/strong>, haciendo que <strong>ambas tecnolog\u00edas trabajen como una sola<\/strong>. En un ecosistema <em><strong>cloud-native<\/strong><\/em> como <strong>Kubernetes<\/strong>, estos desaf\u00edos pueden abordarse mediante la implementaci\u00f3n de una <strong>malla de servicios o service mesh.<\/strong>\r\n<h2>Service mesh y microservicios<\/h2>\r\nUn service mesh se define como un<strong> sistema distribuido<\/strong> para abordar la problem\u00e1tica, a nivel de red, de los microservicios de manera integrada.\r\n\r\nEl sistema completo proporciona <strong>funciones complementarias a Kubernetes<\/strong>. Est\u00e1 construido sobre la base de una capa dedicada que controla todas las interacciones de servicio en el <strong>orquestador<\/strong>. La capa generalmente se compone de <strong>servidores proxy de red desplegados junto al servicio<\/strong>, sin que este lo sepa.\r\n\r\n<img class=\"aligncenter wp-image-5425\" src=\"https:\/\/www.teldat.com\/wp-content\/uploads\/2022\/06\/guillermolopez1-300x160.png\" alt=\"microservices\" width=\"500\" height=\"266\" \/>\r\n\r\nEl objetivo de implementar una malla de servicios es tener una <strong>plataforma integrada<\/strong> que pueda <strong>monitorizar activamente todo el tr\u00e1fico de los servicios<\/strong>. Al hacerlo, un service mesh puede abordar las preocupaciones relacionadas con la <em>tolerancia a fallos, la seguridad del servicio y el monitoreo de aplicaciones.<\/em>\r\n\r\nEsta herramienta proporciona una nueva forma no intrusiva de <strong>implementar comunicaciones de manera eficiente<\/strong>. En comparaci\u00f3n con los <em>frameworks<\/em> espec\u00edficos de los lenguajes,<strong> un service mesh aborda los problemas fuera de los servicios.<\/strong>\r\n\r\nEstos sistemas son independientes del protocolo y operan en la capa 5 (sesi\u00f3n). De esta manera, se pueden integrar en un <em>entorno pol\u00edglota.<\/em> Dicha abstracci\u00f3n <strong>permite a los desarrolladores centrarse en la l\u00f3gica de negocio<\/strong> de sus aplicaciones y <strong>permite a los ingenieros de sistemas operar la infraestructura <\/strong>de manera eficiente<strong>.<\/strong> Esta es una situaci\u00f3n win-win para ambos. En general, una malla de servicios aborda las preocupaciones sobre estos desaf\u00edos y agrega los siguientes beneficios:\r\n<ul>\r\n \t<li><strong>Control del tr\u00e1fico.<\/strong><\/li>\r\n \t<li><strong>Seguridad.<\/strong><\/li>\r\n \t<li><strong>Anal\u00edtica del flujo de las operaciones.<\/strong><\/li>\r\n<\/ul>\r\nLos microservicios en un service mesh logran esto al reenviar cabeceras de seguimiento. De esta forma, <strong>el rastreo distribuido puede ayudar a visualizar las dependencias entre servicios.<\/strong> Una malla de servicio tambi\u00e9n <strong>captura m\u00e9tricas<\/strong> en torno a los <em>vol\u00famenes de solicitud y las tasas de fallo.<\/em>\r\n\r\nOtro aspecto importante es el<strong> manejo de logs de servicio.<\/strong> En una aplicaci\u00f3n tradicional, a menudo hay un archivo de log que registra todo. En una arquitectura de microservicios, donde tenemos una serie de ficheros de log, necesitamos buscarlos todos para comprender el comportamiento de cualquier flujo. <strong>Una malla de servicios proporciona logs centralizados<\/strong> y paneles gr\u00e1ficos construidos sobre logs.\r\n<h2>Malla de servicios en sistemas distribuidos<\/h2>\r\nAsumiendo que existen los problemas descritos por James Glosling, en los sistemas distribuidos, \u00bfc\u00f3mo debemos atacarlos y en qu\u00e9 nos puede ayudar un service mesh?\r\n<ul>\r\n \t<li><em><strong>La red no es robusta ni confiable.<\/strong><\/em> Como ingenieros o arquitectos de software necesitamos estar preparados para lidiar con estos escenarios, introduciendo suficiente redundancia en el sistema en el lado del servidor, pero tambi\u00e9n en el lado del cliente se necesita a\u00f1adir mecanismos de reintentos para poder manejar problemas de red transitorios.<\/li>\r\n<\/ul>\r\n\u00a0\r\n<ul>\r\n \t<li><em><strong>La latencia es alta<\/strong><\/em>. Patrones como circuit breaker tienen como objetivo manejar escenarios de latencias, encapsulando la llamada a un servicio remoto en un objeto que realiza un seguimiento de fallos, de tal forma que, si existen fallos, no se invocar\u00e1 m\u00e1s al servicio externo, y se devuelve instant\u00e1neamente un error al cliente. Si no se tienen en cuenta este tipo de consideraciones, estos fallos pueden tener un efecto cascada en el ecosistema completo.<\/li>\r\n<\/ul>\r\n\u00a0\r\n<ul>\r\n \t<li><strong><em>El ancho de banda es finito<\/em><\/strong>. Para superar situaciones como las del crecimiento de servicios, se hace necesario que las aplicaciones tengan un mecanismo de cuotas de alojamiento y trazabilidad de su consumo. Un crecimiento de microservicios tambi\u00e9n puede crear problemas de saturaci\u00f3n en los balanceadores de carga y as\u00ed degradar su rendimiento. Insertar balanceo de carga en el lado del cliente suele ser un buen enfoque para afrontar situaciones similares.<\/li>\r\n<\/ul>\r\n\u00a0\r\n<ul>\r\n \t<li><em><strong>La red no es segura.<\/strong> <\/em>En arquitecturas de microservicios, cada uno de los equipos de desarrollo debe responsabilizarse de la seguridad. La comunicaci\u00f3n entre microservicios necesita ser controlada. La autenticaci\u00f3n a nivel de servicio es imprescindible para filtrar conexiones desconocidas.<\/li>\r\n<\/ul>\r\n\u00a0\r\n<ul>\r\n \t<li><strong><em>La topolog\u00eda cambia<\/em><\/strong>. Como ya comentamos, un simple escalado horizontal en un servicio puede cambiar flujos de tr\u00e1fico e insertar fallos inesperados. Un sistema de descubrimiento de servicios puede solucionar este tipo de problemas en gran medida.<\/li>\r\n<\/ul>\r\n\u00a0\r\n<ul>\r\n \t<li><em><strong>Hay varios administradores del sistema.<\/strong> <\/em>Para tener \u00e9xito en este aspecto se necesita un acceso basado en roles o RBAC.<\/li>\r\n<\/ul>\r\n\u00a0\r\n<ul>\r\n \t<li><em><strong>El coste de transporte no es cero.<\/strong><\/em> La transmisi\u00f3n de datos puede incurrir tambi\u00e9n en costes. Los datos deben ser serializados entre extremos. Protocolos como SOAP\/XML son altamente ineficientes, JSON se considera mejor elecci\u00f3n, pero protocolos binarios como buffers de protocolo, independientes del lenguaje han mejorado JSON. Considerando que el intercambio de informaci\u00f3n ocurre entre aplicaciones, es preferible usar un protocolo binario para el ecosistema completo.<\/li>\r\n<\/ul>\r\n\u00a0\r\n<ul>\r\n \t<li><em><strong>La red es heterog\u00e9nea<\/strong><\/em>. Una malla de servicio nos permite desacoplar la infraestructura del c\u00f3digo de la aplicaci\u00f3n. Tambi\u00e9n simplifica la topolog\u00eda de red subyacente, ya que la red solo proporciona la conexi\u00f3n f\u00edsica. Todos los firewalls, balanceadores de carga y subredes se pueden eliminar, dado que no quieren controlar ninguna interacci\u00f3n de servicio.<\/li>\r\n<\/ul>","_et_gb_content_width":"","footnotes":""},"categories":[1156],"tags":[1102],"class_list":["post-21043","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-servicios-en-la-nube","tag-servicios-micro"],"acf":[],"wpml_current_locale":"es_ES","wpml_translations":[{"locale":"en_US","id":19871,"slug":"service-mesh-to-aid-developers-with-microservices-distributed-systems","post_title":"Overcoming entanglements without affecting developers","href":"https:\/\/www.teldat.com\/service-mesh-to-aid-developers-with-microservices-distributed-systems\/"}],"_links":{"self":[{"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/posts\/21043","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/users\/183"}],"replies":[{"embeddable":true,"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/comments?post=21043"}],"version-history":[{"count":0,"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/posts\/21043\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/media\/19874"}],"wp:attachment":[{"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/media?parent=21043"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/categories?post=21043"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.teldat.com\/es\/wp-json\/wp\/v2\/tags?post=21043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}