Getty Images/iStockphoto
Una introducción a los microservicios nativos de nube y cómo construirlos
Aunque hay una gran variedad de formas de desarrollar microservicios nativos de la nube, hay que centrarse en estrategias que permitan la mayor agilidad, resistencia y simplicidad de desarrollo posible.
Los microservicios son un componente central de la computación nativa en la nube.
Dividir las aplicaciones en partes pequeñas y holgadamente acopladas facilita a los desarrolladores la creación de software ágil y resistente. Además, los microservicios acortan los ciclos de desarrollo, lo que conduce a una innovación más rápida y a una mejor experiencia de usuario.
Los desarrolladores experimentados probablemente ya saben por qué los microservicios son fundamentales para las aplicaciones nativas de la nube, y por qué son beneficiosos. Sin embargo, para construir realmente aplicaciones nativas en la nube basadas en una arquitectura de microservicios, los desarrolladores deben conocer bien ciertas herramientas, lenguajes de programación y técnicas de desarrollo.
Definición de los microservicios nativos de la nube
Los microservicios nativos en la nube se refieren a una estrategia de diseño de aplicaciones en la que los desarrolladores dividen las aplicaciones en una serie de unidades discretas, llamadas microservicios. Cada microservicio suele funcionar independientemente de los demás, pero los microservicios comparten datos e interactúan a través de una red para permitir la funcionalidad de la aplicación.
Los microservicios son inherentemente nativos de la nube, porque las aplicaciones nativas de nube se basan en arquitecturas de microservicios, es decir, según la mayoría de las definiciones de lo que es nativo de la nube.
Las arquitecturas de microservicios existen desde hace más tiempo que la computación nativa en la nube. Los microservicios empezaron a hacerse populares hace una década, mientras que el término cloud-native surgió alrededor de 2015. Parte de la razón por la que los desarrolladores conceptualizaron lo nativo de nube como un enfoque distinto para el diseño y la entrega de aplicaciones fue porque muchas aplicaciones estaban migrando a una arquitectura de microservicios.
Ser nativo de nube es más que solo microservicios: la infraestructura distribuida y los servicios consumibles son también partes importantes de la ecuación. Sin embargo, los microservicios son posiblemente el elemento más importante de una estrategia nativa de nube.
Dicho esto, los microservicios nativos de la nube no tienen que ejecutarse en la nube. Los desarrolladores pueden utilizar plataformas como Kubernetes para desplegarlos en las instalaciones.
Pros y contras de los microservicios
Los microservicios nativos de la nube ofrecen varios beneficios, entre ellos:
- Agilidad. Las aplicaciones que se ejecutan como un conjunto de microservicios distribuidos son más flexibles porque los desarrolladores pueden actualizar y escalar cada microservicio de forma independiente.
- Resiliencia. Las aplicaciones de microservicios tienden a ser más resistentes porque el fallo de un solo microservicio no suele provocar el fallo de toda la aplicación.
- Simplicidad del desarrollo. Los microservicios suelen dividir las bases de código en partes más pequeñas que son más fáciles de trabajar para los desarrolladores.
Por otro lado, los microservicios plantean algunos retos. El mayor es que aumentan la complejidad de la aplicación. Una aplicación con más partes móviles es más difícil de orquestar.
Por esta razón, a menudo no vale la pena implementar microservicios para aplicaciones relativamente simples. Entre ellas se encuentran las aplicaciones con bases de código pequeñas, y aquellas con demandas menores de escalabilidad o resiliencia.
Construir microservicios nativos de la nube
Los desarrolladores pueden implementar los microservicios, como estilo arquitectónico, de diversas maneras. No existe una herramienta o metodología específica para crear una aplicación de microservicios.
Sin embargo, hay algunas directrices generales que son útiles para diseñar y construir microservicios nativos de la nube.
Separar las bases de código de los microservicios
Aunque es posible gestionar el código de todos los microservicios dentro de un único repositorio, no es la mejor práctica. Gestione el código de cada microservicio por separado para simplificar al máximo el desarrollo.
Desplegar los microservicios de forma independiente
Por razones similares, despliegue cada microservicio en producción como una unidad separada, en lugar de todos a la vez. De lo contrario, los desarrolladores no pueden actualizar un microservicio sin afectar al resto de la aplicación.
Segmentar el almacenamiento entre los microservicios
Dé a cada microservicio sus propios recursos de almacenamiento, en lugar de que todos los microservicios compartan una base de datos u otro almacén de datos persistente. Aunque este modelo requiere un esfuerzo adicional, permite a los desarrolladores adaptar los recursos de almacenamiento a las necesidades de cada microservicio. También reduce el riesgo de que un microservicio sobrescriba o corrompa los datos asociados a otro microservicio.
Utilizar una pasarela de API
Los desarrolladores pueden diseñar microservicios para que se comuniquen directamente con puntos finales externos. Sin embargo, un enfoque mejor es utilizar una pasarela de API como intermediario.
El uso de una pasarela de API con microservicios tiene dos ventajas principales. En primer lugar, simplifica el despliegue de los microservicios, porque éstos no necesitan reconocer la ubicación exacta de los recursos externos; solo reconocen dónde está la pasarela de la API. En segundo lugar, la pasarela de la API puede validar y gestionar las solicitudes, lo que mitiga los problemas de rendimiento y seguridad.
Implementar una malla de servicios
Los microservicios pueden compartir datos directamente entre sí a través de una red interna. Sin embargo, un mejor enfoque es utilizar una capa de infraestructura intermedia –en concreto, una malla de servicios– para gestionar las comunicaciones.
Las mallas de servicios gestionan las peticiones entre microservicios. Son similares a las pasarelas de API, y ofrecen ventajas similares de rendimiento y seguridad. La principal diferencia es que una malla de servicios gestiona las comunicaciones internas, mientras que una pasarela de API sirve de interfaz entre los microservicios y los recursos externos.
Utilizar un marco de programación compatible con los microservicios
Aunque es posible escribir microservicios en cualquier lenguaje, algunos lenguajes o marcos de trabajo son especialmente adecuados para las arquitecturas de microservicios nativos de la nube.
Por ejemplo, si prefiere Java, considere un marco de trabajo Java como Spring Boot, que se adapta a este caso de uso. Las características de concurrencia y el modelo de diseño modular de Go lo convierten en una buena opción para la programación de microservicios. C++ también funciona bien para el desarrollo de microservicios, dado su soporte de concurrencia y su rápida ejecución. La ejecución rápida reduce el riesgo de retrasos en la aplicación causados por microservicios que son lentos para manejar las solicitudes.
Investigue más sobre Desarrollo de software y aplicaciones
-
Un core bancario de siguiente generación no es solo tecnología, es estrategia
-
Tres opciones para llevar sus aplicaciones heredadas a la nube
-
Tres tendencias de modernización de sistemas heredados que afectan a las empresas
-
Tecnólogos mexicanos consideran que sus organizaciones son vulnerables a ataques