Las redes de servicios y las puertas de enlace de API tradicionales desempeñan funciones distintas en la gestión del tráfico de red dentro de un sistema distribuido. Las redes de servicios se centran en la comunicación interna entre microservicios, lo que ofrece un control detallado de la gestión del tráfico, el balanceo de carga y la capacidad de observación sin necesidad de realizar cambios en el código de la aplicación. Por el contrario, las puertas de enlace de API sirven como puntos de entrada centralizados para clientes externos y gestionan tareas como la autenticación, la autorización y el enrutamiento de solicitudes para las API orientadas al cliente.
Una red de servicios es una capa de infraestructura dedicada que proporciona conectividad de red, seguridad y capacidad de observación para microservicios dentro de un sistema distribuido. Funciona abstrayendo las complejidades de la comunicación entre servicios, como el balanceo de carga, la interrupción de circuitos, la redirección del tráfico y los mecanismos de reintento.
Para definir una red de servicios es necesario definir primero los microservicios. Si no sabe cómo funcionan los microservicios, una explicación de una red de servicios es como comparar viajar en avión en primera clase o en clase turista, pero sin siquiera haber visto un avión. Una red de servicios es una tecnología creada para que las aplicaciones basadas en microservicios funcionen mejor, aunque hay quien sostiene que a menudo complican las cosas.
Descripción de los microservicios
Los microservicios son un enfoque moderno de la arquitectura de aplicaciones de software, donde una aplicación se divide en componentes más pequeños y de manera débil, conocidos como "servicios". En conjunto, estos microservicios proporcionan la funcionalidad general de la aplicación. Este enfoque contrasta con la arquitectura tradicional de aplicaciones "monolíticas", que combina toda la funcionalidad en un solo software.
Netflix es un conocido ejemplo de microservicios. Hace una década, Netflix era una aplicación de software unificada y gigantesca. Cada función de Netflix residía en una única y enorme base de código. El problema era que la modificación de una parte de la aplicación significaba volver a implementar todo el proceso, algo indeseable para un software ocupado y de gran relevancia comercial.
Después de migrar a una arquitectura de microservicios, cada área de Netflix, desde la gestión de contenidos hasta la gestión de cuentas, reproductores, etc., existe como su propio microservicio. En realidad, si queremos obtener información detallada, cada una de estas áreas consta de varios microservicios. Los desarrolladores pueden trabajar en cada microservicio de forma aislada. Pueden cambiarlos, ampliarlos o reconfigurarlos sin preocuparse por su impacto en otros microservicios. En teoría, si un microservicio falla, no debería afectar al resto de la aplicación (aunque pueden existir escenarios excepcionales).
¿Qué es una red de servicios?
Con el sentido de la arquitectura de microservicios en mente, considere algunos de los desafíos que podrían surgir al intentar hacer que una aplicación basada en microservicios funcione de forma fiable. La arquitectura, aunque revolucionaria en su capacidad de separar aplicaciones en servicios independientes, trae consigo una serie de dificultades.
La comunicación entre microservicios, en particular, puede ser problemática sin algún mecanismo que garantice que los microservicios sepan dónde están otros microservicios, cómo comunicarse y cómo ofrecer a los administradores una idea de lo que está sucediendo dentro de la aplicación. Por ejemplo, ¿cómo sabe el microservicio de streaming de Netflix dónde buscar información sobre la cuenta de un suscriptor? Ahí es donde entra en juego una red de servicios. Sin embargo, para tranquilizar a quienes no son fans de una red de servicios, es fundamental señalar que no se necesita estrictamente una red de servicios para ello.
Una red de servicios es una capa de infraestructura que gestiona las comunicaciones entre microservicios a través de una red. Controla las solicitudes de servicios dentro de la aplicación. Una red de servicios también suele proporcionar detección de servicios, failover y balanceo de carga, junto con funciones de seguridad, como el cifrado.
¿Cómo funciona una red de servicios?
El trabajo de una red de servicios consiste en añadir seguridad, capacidad de observación y fiabilidad a un sistema basado en microservicios. Esto se logra mediante el uso de proxies conocidos como "sidecars", que se conectan a cada microservicio (también hay mallas de servicio "no sidecar" basadas en eBPF). Los sidecars operan en la capa 7 de la pila OSI. Si la aplicación está basada en contenedores, el sidecar se conecta a cada contenedor o máquina virtual (VM). A continuación, los proxies operan en un "plano de datos" y en un "plano de control".
El plano de datos consta de servicios que se ejecutan junto a sus proxies sidecar. Para cada par de servicio/sidecar, el servicio se ocupa de la lógica empresarial de la aplicación, mientras que el proxy se encuentra entre el servicio y otros servicios del sistema. El proxy sidecar gestiona todo el tráfico hacia y desde el servicio. También proporciona funcionalidad de conexión, como la seguridad de la capa de transporte mutua (mTLS), que permite que cada servicio del flujo de mensajes de solicitud/respuesta valide el certificado del otro.
El plano de control es donde los administradores interactúan con la red de servicios. Se ocupa de la configuración y el control del proxy, gestionando la administración de la red de servicios y proporcionando una forma de configurar y coordinar los proxies. Los administradores trabajan a través del plano de control para aplicar políticas de control de acceso y definir reglas de enrutamiento para los mensajes que viajan entre microservicios. El plano de control también puede permitir la exportación de registros y otros datos relacionados con la capacidad de observación del microservicio.
Al trabajar juntos, el plano de datos y el plano de control de la red de servicios ofrecen:
Seguridad: distribuyen las políticas de seguridad, como la autenticación y la autorización, a los microservicios y cifran de forma automática las comunicaciones entre los microservicios. Una red de servicios puede gestionar, supervisar y aplicar políticas de seguridad a través de su plano de control.
Fiabilidad: gestionan las comunicaciones entre microservicios a través de proxys sidecar en el plano de control y mejoran la fiabilidad de las solicitudes de servicio en el proceso. La red de servicios también puede gestionar la gestión del balanceo de carga de los fallos, todo con el objetivo de reforzar la fiabilidad y ofrecer una alta disponibilidad (HA).
Capacidad de observación: muestran a los propietarios del sistema el rendimiento de los microservicios. Una red de servicios puede revelar microservicios que se están "sobrecalentando" o que están en riesgo de fallo. El plano de control de la red de servicios recopila datos de telemetría relativos a las interacciones entre los microservicios y otros componentes de la aplicación.
Kubernetes e integración de la red de servicios
Kubernetes, como plataforma de orquestación de contenedores ampliamente adoptada, desempeña un papel fundamental en la gestión de microservicios. La integración de una red de servicios con Kubernetes mejora el control, la seguridad y la capacidad de observación de los microservicios que se ejecutan en el ecosistema de Kubernetes. Kubernetes, combinado con redes de servicios como Istio y Linkerd, permite la detección automática de servicios, el balanceo de carga y la recuperación ante fallos. La naturaleza de código abierto de Kubernetes y las redes de servicios permiten a las organizaciones beneficiarse de una amplia comunidad y de un amplio conjunto de herramientas que evolucionan continuamente para admitir aplicaciones nativas de la nube. Al utilizar Kubernetes como base para la gestión de contenedores y combinarlo con una red de servicios, las organizaciones obtienen una mejor visibilidad de la comunicación entre servicios, reducen la latencia en las interacciones de servicios y mejoran la resiliencia general del sistema.
Red de servicios frente a microservicios
Es fácil confundirse entre los microservicios y una red de servicios. Los microservicios son los componentes de un sistema basado en microservicios. La red de servicios puede conectarlos. Como su nombre indica, la red de servicios actúa como un tejido conectivo sobre los microservicios. Dicho de otro modo, una red de servicios es un "patrón" que se puede implementar para gestionar las interconexiones y la lógica relevante que impulsa una aplicación basada en microservicios.
¿Por qué necesita una red de servicios?
Las aplicaciones monolíticas no funcionan bien a medida que crecen y se vuelven más complejas. Empieza a tener sentido dividir la aplicación en microservicios. Este enfoque se adapta perfectamente a las metodologías de desarrollo de aplicaciones modernas, como Agile, DevOps e integración e implementación continuas (CI/CD). Los equipos de desarrollo de software y sus socios de pruebas y operaciones pueden centrarse en el nuevo código para microservicios individuales e independientes. Esto suele ser lo mejor para el software y el negocio en general.
Sin embargo, a medida que aumenta el número de servicios de la aplicación basada en microservicios, puede resultar complicado mantenerse al día con todas las conexiones. Las partes interesadas pueden tener dificultades para realizar un seguimiento de cómo cada servicio necesita conectarse e interactuar con los demás. La supervisión del estado del servicio se complica. Con decenas o incluso cientos de microservicios que conectar y supervisar, la fiabilidad también puede convertirse en un problema.
La red de servicios aborda estos problemas al permitir a los desarrolladores gestionar las comunicaciones entre servicios en una capa dedicada de la infraestructura. En lugar de ocuparse de cientos de conexiones de manera individual, los desarrolladores pueden gestionar toda la aplicación a través de proxies en el plano de control. La red de servicios proporciona una funcionalidad eficiente de gestión y supervisión.
En pocas palabras, las principales ventajas de una red de servicios son:
Simplificación de la comunicación entre microservicios
Facilitación de la detección y comprensión de los errores de comunicación
Aumento de la seguridad de las aplicaciones con cifrado, autenticación y autorización
Aceleración del desarrollo de aplicaciones mediante un desarrollo, pruebas e implementación más rápidos de nuevos microservicios
Desafíos de la red de servicios
Sin embargo, una red de servicios puede presentar sus propias dificultades. Por ejemplo, las capas de la red de servicios se convierten en otro elemento de un sistema que requiere infraestructura, mantenimiento, soporte, etc. Puede consumir recursos, lo que afecta al rendimiento general de la red y del hardware. La adición de proxies sidecar puede aumentar la complejidad de un entorno ya complejo. La ejecución de llamadas de servicio a través del sidecar añade un paso, lo que puede ralentizar la aplicación. Puede haber problemas relacionados con la integración entre varias arquitecturas de microservicios. La red sigue necesitando gestión, independientemente de la gestión de la red de servicios y los mensajes entre servicios.
Reducción de la latencia en las redes de servicio mediante la automatización
Una de las principales preocupaciones de las redes de servicio es el posible aumento de la latencia debido a la capa adicional de proxies que gestionan la comunicación entre servicios. Sin embargo, redes de servicios como Istio y Linkerd vienen equipadas con capacidades de automatización que mitigan estos problemas de latencia. Mediante la gestión inteligente del tráfico y los reintentos automatizados, la red de servicios puede optimizar las vías de comunicación, lo que garantiza que los retrasos sean mínimos. Además, Istio utiliza Envoy para optimizar las decisiones de enrutamiento, lo que permite obtener respuestas más rápidas entre los servicios aprovechando la automatización para evitar posibles cuellos de botella de la red. Esto garantiza que las aplicaciones mantengan un alto rendimiento, incluso en grandes entornos nativos de la nube, donde la latencia podría ser un problema importante. Gracias a las continuas actualizaciones y optimizaciones de la comunidad de código abierto, las redes de servicios modernas son cada vez más capaces de equilibrar las funciones avanzadas de gestión del tráfico con una sobrecarga mínima.
Conclusión
Una red de servicios puede ayudarle a lograr el éxito con los microservicios. La tecnología proporciona una capa de infraestructura muy necesaria para gestionar las comunicaciones entre los servicios y las funciones administrativas relacionadas. Si se implementa correctamente, una red de servicios proporciona seguridad, fiabilidad y capacidad de observación para aplicaciones y sistemas basados en microservicios.
Preguntas frecuentes
La arquitectura de la red de servicios mejora la seguridad dentro de los microservicios al proporcionar una serie de funciones que garantizan la comunicación segura y la protección de datos. Una función de seguridad fundamental es la seguridad de la capa de transporte mutua (mTLS), que permite la comunicación cifrada entre los servicios. Además, las redes de servicios permiten políticas de control de acceso detalladas, lo que permite a los administradores definir y aplicar permisos de acceso a nivel de servicio.
Al principio, la implementación de una red de servicios puede parecer compleja, pero los beneficios a largo plazo superan la complejidad inicial.
Elija una solución de red de servicios que se adapte a sus requisitos e infraestructura. Cada red de servicios tiene sus propias características e integraciones, por lo que debe evaluarlas en función de sus necesidades específicas. Comience con una configuración básica implementando la red de servicios en un entorno que no sea de producción o en un subconjunto limitado de microservicios. Defina políticas de control de acceso, reglas de enrutamiento de tráfico y configuraciones de seguridad de aplicaciones basadas en los requisitos de su empresa.
Implemente gradualmente la red de servicios en microservicios y entornos adicionales a medida que gana confianza en su estabilidad y rendimiento. Itere y mejore continuamente la configuración de la red de servicios en función de los comentarios, las métricas de rendimiento y los requisitos en constante evolución.
Estos son algunos factores que debe tener en cuenta a la hora de decidir la mejor red de servicios para sus necesidades:
Asistencia de una comunidad: busque redes de servicios con asistencia de una comunidad que pueda proporcionar recursos valiosos, documentación y contribuciones impulsadas por la comunidad.
Facilidad de uso: elija una solución que ofrezca herramientas intuitivas, documentación clara e interfaces fáciles de usar para simplificar la adopción y el mantenimiento continuo.
Conjunto de funciones: evalúe las funciones de cada red de servicios y evalúe si se ajusta a sus requisitos. Busque funciones de gestión del tráfico, herramientas de observación y funciones de seguridad.
Compatibilidad: asegúrese de que la red de servicios sea compatible con su infraestructura existente, incluidas las plataformas de coordinación de contenedores y los entornos de nube.
Rendimiento y escalabilidad: elija una solución que pueda gestionar la carga de trabajo prevista y adaptarse al crecimiento de su infraestructura.
Por qué los clientes eligen Akamai
Akamai es la empresa de ciberseguridad y cloud computing que potencia y protege los negocios online. Nuestras soluciones de seguridad líderes en el mercado, nuestra inteligencia ante amenazas consolidada y nuestro equipo de operaciones globales proporcionan una defensa en profundidad para proteger los datos y las aplicaciones empresariales. Las soluciones integrales de cloud computing de Akamai garantizan el rendimiento y una buena relación calidad-precio en la plataforma más distribuida del mundo. Las grandes empresas confían en Akamai, ya que les ofrece una fiabilidad, una escalabilidad y una experiencia inigualables en el sector, idóneas para crecer con seguridad.