Seis maneras de mejorar los microservicios en la nube

  • Customer Experience

Los microservicios no son necesariamente apropiados para todas las empresas. Sin embargo, la ruptura de la lógica de las aplicaciones en servicios funcionales más pequeños puede proporcionar beneficios significativos, como una mayor escalabilidad, modularización y velocidad de despliegue para muchos modelos de negocio.

Conseguir el control inmediato mediante el apoyo de la lógica en la red es muy útil para enrutar el tráfico hacia los microservicios y la plataforma de Fastly permite desplegar instantáneamente una VCL personalizada, que funciona más como un lenguaje de programación que como un archivo de configuración. De esta manera se acerca la lógica y la funcionalidad a los usuarios con herramientas para mejorar el rendimiento y la descarga de origen. Existen seis maneras para mejorar los microservicios en la nube:

1. Reducir el número de dominios que intervienen en la carga de la página web. Incluso con el HTTP/2 y el aumento de la encriptación TLS, la apertura de una conexión a diferentes dominios sigue siendo relativamente cara. Este es el caso incluso si cada microservicio o diferentes servicios están en un dominio diferente. 

Reduciendo el nímero de dominios que intervienen en la carga de la pçagina web las solicitudes individuales a través de una conexión no sufren bloqueos, son asincrónicas, muy baratas y permiten una mejor optimización del mecanismo de control de la congestión del TCP. Además, la colocación del encaminador cerca del usuario final (es decir, en una plataforma de nube) permite negociar muy rápidamente la conexión inicial de arranque en frío y aprovechar los enlaces para cada uno de los servicios de origen.

2. Definición de los servicios de origen. Con un gran número de servicios de backend también puede tener diseños bastante diferentes, lo que requiere un enfoque flexible para definir cómo se enrutan en la capa CDN. Algunos backends pueden manejar su propio balanceo de carga y exponer sólo un nombre de host, mientras que otros pueden querer un balanceo de tráfico a través de varios nombres de host. Otros pueden necesitar que se reescriban ligeramente los elementos de la URL para que tengan sentido en su esquema general.

3. El mapeo de una solicitud entrante a un backend de origen está en el corazón de la arquitectura de un microservicio. Cuanto más flexible pueda ser, más servicios podrá absorber en un solo dominio externo. Esto se logra mejor en la nube, donde se pueden dirigir rápida y eficientemente las solicitudes al backend apropiado. Una forma común de definir estas relaciones de solicitud a origen es a través de la sustitución de expresiones regulares usando VCL.

4. Hay casos en los que se puede querer introducir un microservicio para sustituir gradualmente otro. O también utilizar un servicio con un grupo de usuarios y un servicio diferente con otro grupo. Esto se logra fácilmente sin interrumpir el servicio a los usuarios utilizando Fastly para agregar un poco de lógica en la nube.

El cliente de Fastly Reddit ha utilizado esta técnica para migrar a un nuevo diseño de página de perfil. Aunque Reddit describe una forma de hacerlo manualmente, también es posible aplicar este principio de forma genérica si existen muchos microservicios y requisitos regulares para escalarlos.

5. Autenticación. Es común que múltiples servicios de backend puedan necesitar engancharse al estado de autenticación del usuario. Con Fastly se puede considerar la lectura de las cookies de autenticación en el edge, validarlas y traducir los datos en cabeceras HTTP adicionales de confianza, como MyApp-Auth-State.

6. Renombramiento de URLs. Mientras diseña su estructura general de URL, tiene sentido mantener cada microservicio relativamente contenido a una rama del árbol de rutas. Sin embargo, hay algunas ocasiones en las que realmente se necesita un URL de alto nivel y fácil de recordar para algo. Las organizaciones de noticias hacen uso de los llamados 'URLs de vanidad' para crear caminos como /mundo, /tecnología y /política.

Para evitar tener enormes listas de rutas en una tabla de enrutamiento, puede ser más efectivo tener un simple mapa clave/valor que traduzca estas vanidades en URLs reales a las que luego se puede aplicar el enrutamiento. Fastly soporta este tipo de solución a través de tablas estáticas de VCL y diccionarios dinámicos en la nube.