Qué son los microservicios?
Los microservicios son módulos ligeros con acople suelto que pueden servir como componentes básicos de las aplicaciones complejas basadas en la nube. Aunque los microservicios individuales pueden operar de forma independiente, tienen un acople suelto en una interfaz unificada.
La arquitectura de microservicios se considera un reemplazo moderno y flexible del modelo de desarrollo más tradicional de la arquitectura monolítica.
En una arquitectura monolítica, generalmente hay un servidor virtualizado o físico asignado a cada aplicación y esos servidores siempre están en ejecución. La disponibilidad y el escalamiento de la aplicación dependen completamente del hardware subyacente, que es una entidad fija.
Los microservicios, por el contrario, pueden operar varias instancias en un solo servidor o en varios servidores, a medida que los recursos escalan de forma dinámica para admitir las demandas de la carga de trabajo. Los microservicios individuales suelen estar en contenedores para mejorar la portabilidad y la escalabilidad.
Las diferentes características de los microservicios
Como proceso de desarrollo, el marco de microservicios tiene ciertas características que son comunes, pero no universales.
Esas características incluyen:
- Componentes. Los microservicios suelen estar formados por componentes de software discretos que son actualizables y reemplazables de forma individual. Esta arquitectura tiene implicaciones para la tecnología de administración de la nube porque cada uno de los microservicios debe estar aprovisionado, monitoreado y actualizado por separado.
- Servicios. Los componentes comprenden servicios que están disponibles para comunicarse a pedido, pero pueden no estar activos de forma continua entre las solicitudes o las llamadas.
- Implementación independiente. En su mayor parte, los componentes de servicios individuales operan de forma independiente uno de otro dentro del marco de microservicios. Si se cambia o actualiza un componente, hay poco impacto en otros servicios y componentes, especialmente cuando se compara con una arquitectura monolítica más tradicional.
- Seguridad. La comunicación entre los microservicios suele estar cifrada con seguridad de la capa de transporte mutuo (mTLS) para proteger los datos del malware y las intrusiones mientras está en tránsito.
- Contenerización. Los microservicios suelen implementarse en contenedores para lograr escalabilidad y portabilidad adicionales.
Las arquitecturas de microservicios hacen que las aplicaciones sean más fáciles de escalar y más rápidas de desarrollar, lo que permite innovar y acelerar el tiempo de llegada al mercado para las nuevas características.
Beneficios de los microservicios y las aplicaciones de la nube
Los microservicios continúan ganando popularidad debido a la flexibilidad innata de la arquitectura en la nube. De hecho, un estudio reciente realizado por Intel reveló que el 83 % de todas las nuevas aplicaciones nativas de la nube y las soluciones de SaaS están usando microservicios.1.
Uno de los mayores beneficios de los microservicios es la velocidad y la flexibilidad de implementación. A medida que las cargas de trabajo y las aplicaciones de nube continúan creciendo en escala y alcance, es cada vez más difícil y requiere más tiempo adaptar las arquitecturas monolíticas para incorporar las nuevas demandas. Los microservicios están desglosados, de modo que su desarrollo, implementación y mantenimiento pueden administrarse en un modelo distribuido.
Por ejemplo, se puede dar la responsabilidad de uno o más de los microservicios a varios equipos de desarrollo independientes. La distribución de responsabilidades facilita la reorganización de la función de DevOps, según las capacidades empresariales de cada unidad. Eso puede llevar a la modernización de todo el proceso de desarrollo y la eliminación de los silos.
Los microservicios también plantean algunos desafíos de implementación. Los módulos individuales pueden ejecutarse en diferentes sistemas para cumplir una solicitud, lo que puede producir que el desempeño sea inconsistente entre los módulos.
Del mismo modo, la latencia puede convertirse en un problema para algunos microservicios, como cuando hay picos de demanda. Estos problemas a menudo pueden resolverse mediante el sobreaprovisionamiento de recursos para acaparar los niveles de demanda pico.
Debido a que los microservicios están desglosados, una falla de servicio que afecta un módulo puede causar poca o ninguna disrupción en los demás. Ese es un beneficio, pero una falla en el servicio también puede causar algunos desafíos.
Por ejemplo, puede ser difícil depurar un servicio con fallas después de que deje de funcionar. Una solución es coordinar la infraestructura y supervisar todos los procesos y los flujos de datos con anticipación. Esos protocolos de supervisión pueden aprovechar los colectores de telemetría habilitados por hardware y las unidades de supervisión de desempeño que están integradas en las plataformas de nube que cuentan con tecnología Intel®.
Cómo funciona la arquitectura de microservicios
En una arquitectura de microservicios, una aplicación compleja se desglosa en capacidades discretas que pueden desarrollarse y operarse de forma independiente. Los microservicios individuales se comunican entre sí, a menudo a través de las APIs, y tienen conexiones sueltas, pero cada microservicio puede desarrollarse, implementarse y actualizarse por separado.
La implementación de microservicios suele seguir uno de tres patrones:
- Nativo de la nube. Algunos servicios y aplicaciones establecidos de alto volumen comienzan como microservicios y permanecen en la nube. Según International Data Corporation (IDC), alrededor del 56 % de los microservicios son nativos de la nube, mientras que el 44 % restante se originaron como aplicaciones antiguas.2
- Refactorización y cambio. Estas implementaciones comienzan en las instalaciones o en un centro de datos en el perímetro y se refactorizan para adaptarse a la arquitectura de microservicios basados en la nube. La refactorización puede incluir reasignar bases de datos y otros recursos asociados con la arquitectura monolítica, de modo que se combinen con los microservicios correspondientes.
- Lift and shift. Algunas organizaciones migran sus aplicaciones a una arquitectura de microservicios, sin refactorización, en una simple transición “lift and shift”.
Microservicios y DevOps
La arquitectura de microservicios tiene una naturaleza desglosada, lo que suele causar que los equipos de DevOps adopten un enfoque de funciones cruzadas para el desarrollo de aplicaciones.
En lugar de desarrollar aplicaciones de software en una pila, con un equipo asignado para trabajar en el firmware, otro para middleware y un tercero para las interfaces de usuario, por ejemplo, es más probable que el esfuerzo de desarrollo de los microservicios se organice entorno a las capacidades empresariales.
En cierto modo, los procesos de desarrollo y la organización de los equipos de DevOps pueden imitar la estructura misma de los microservicios, con sus unidades autónomas casi independientes que interactúan libremente, trascendiendo las barreras y silos.
Es muy importante que todas las partes interesadas entiendan que la modernización de una aplicación monolítica en una arquitectura de microservicios es un viaje épico y podría llevar muchas iteraciones. Es necesario que los arquitectos y desarrolladores evalúen de cerca varios aspectos del monolito y creen un enfoque de migración para cada uno de ellos.
Protección de los microservicios
Debido a que los microservicios suelen estar diseñados para interactuar entre sí, es importante proteger los datos mientras se usan en cada extremo de la interacción o en tránsito entre esos dos puntos.
El cifrado con la seguridad de la capa de transporte mutuo (mTLS) es una solución común que ayuda a reducir el riesgo de intrusión y malware para los datos en cada punto de conexión y en tránsito. El objetivo de la mTLS es cifrar todas las solicitudes que haga cada microservicio. Este enfoque holístico para la seguridad es la base de un entorno de confianza cero, donde cada microservicio, usuario y conexión debe verificarse y autorizarse de forma independiente.
Sin embargo, no siempre es necesario incluir la autenticación y el cifrado en cada microservicio individual. Para evitar las redundancias, muchos desarrolladores implementan, en su lugar, una malla de servicio. La malla actúa como una capa de infraestructura o una instancia de proxy dentro de la arquitectura de microservicios para ayudar a proteger, controlar y monitorear las comunicaciones.
Los protocolos de seguridad pueden requerir mucha potencia de procesamiento, que puede obstaculizar los recursos y retrasar la entrega de microservicios. Para acelerar los algoritmos de cifrado y ayudar a reducir la latencia, los desarrolladores de microservicios pueden implementar tecnología de protección de datos Intel® (Intel® DPT).
Intel® DPT incluye Intel® Advanced Encryption Standard New Instructions (Intel® AES-NI) y Intel® Secure Key, como también Intel® Digital Random Number Generator (Intel® DRNG) para crear claves de cifrado rápidamente.
Estas protecciones algorítmicas avanzadas están optimizadas para las características de seguridad integradas de los procesadores escalables Intel® Xeon®. Por ejemplo, Intel® Advanced Vector Extensions 512 (Intel® AVX-512) y las innovaciones algorítmicas, como el cifrado simétrico, el hashing seguro y el grapado de funciones ofrecen grandes mejoras de desempeño para la criptografía.
Estas y otras características de seguridad habilitadas por hardware están disponibles desde los proveedores de servicios de nube en las instancias equipadas con los procesadores escalables Intel® Xeon®.
Ejemplos de arquitectura de microservicios y su marco en evolución
A medida que las aplicaciones de nube siguen creciendo en escala y alcance, los desarrolladores confían cada vez más en los microservicios para construir aplicaciones multifuncionales complejas y escalarlas rápidamente para incorporar los modelos cambiantes de uso.
Para cada implementación basada en microservicios, típicamente, hay varios servicios de componentes conectados de manera suelta que se ejecutan por separado. Estos componentes modulares trabajan juntos para crear una aplicación o experiencia de usuario integrados.
En algunas aplicaciones basadas en microservicios, donde las experiencias de los usuarios pueden diferenciarse según las características del grupo, un beneficio de usar microservicios es que el código puede compartirse y reutilizarse Este enfoque elimina la necesidad de construir y mantener varias instancias del mismo servicio. Si una de las experiencias diferenciadas requiere una personalización, se pueden incorporar más microservicios.
Por ejemplo, las aplicaciones populares para compartir vehículo se basan en los microservicios, pero los pasajeros y los conductores tienen experiencias de usuario diferenciadas. La administración de conductores, el seguimiento de la ubicación, los perfiles de pasajeros y el procesamiento de pagos son algunos de los microservicios dispares que admiten juntos las interfaces de usuarios y conductores en los respectivos dispositivos móviles. Todas las interfaces comparten la misma marca, pero algunas de las funciones pueden ser diferentes para cada grupo.
Una arquitectura de microservicios también es un entorno común para las tiendas de comercio electrónico. La recomendación del producto y los procesos de pago podrían desarrollarse e implementarse como microservicios individuales, pero el comprador experimentaría los dos procesos dentro de la interfaz y el entorno de marca de la tienda en línea.
Cuándo usar los microservicios
Un enfoque de microservicios puede ayudar a migrar y escalar las aplicaciones mediante el desglose de las soluciones más complejas en sus partes integrantes. Cada microservicio se desarrolla e implementa de forma independiente, y los diversos microservicios operan juntos como una entidad integrada de forma suelta.
Las organizaciones tienen más probabilidades de usar los microservicios cuando desarrollan una nueva solución nativa de nube. También pueden implementar microservicios cuando una arquitectura monolítica existente se vuelve muy poco manejable para satisfacer las necesidades cambiantes.
La transición a una arquitectura de microservicios puede producir cambios en la organización y la estructura de los equipos mismos de DevOps Con el tiempo, los equipos pueden alinearse con su nuevo enfoque interfuncional en las capacidades empresariales en lugar de los silos que imitan las capas funcionales en la pila de tecnología.