More

    ¿Sabías que…? Qué son los microservicios y por qué son el futuro en la arquitectura de software

    Los microservicios dividen el código monolítico en fragmentos fáciles de mantener y son la clave para la filosofía de DevOps. Casi todos los sistemas informáticos realizan múltiples tareas usando recursos compartidos, y una de las preguntas redundantes es qué tan cerca deben estar vinculados los bits de código que realizan estas tareas.

    Una respuesta cada vez más popular es el concepto de microservicio: una pequeña y discreta porción de funcionalidad que interactúa con otros microservicios para crear un sistema más grande.

    Aunque la idea básica de tener componentes tan pequeños no es nueva, la forma en que se implementan los microservicios los convierte en una base natural para las aplicaciones modernas basadas en la nube. Además, la idea de microservicio también encaja con la filosofía de DevOps, que fomenta la implementación rápida y continua de nuevas funciones.

    ¿Qué son los microservicios?

    El «micro» de la palabra implica que se trata de pequeñas aplicaciones. Eso a veces es cierto pero otras no. Una mejor manera de pensar en ellos es que deberían ser tan grandes como sea necesario para hacer una cosa específica o resolver un problema particular y nada más. Ese problema debe ser conceptual, no técnico. Como dice Microsoft, «los microservicios deben diseñarse en torno a las capacidades empresariales, no a capas horizontales como el acceso a datos o la mensajería». Se comunican con otros microservicios y usuarios externos a través de API relativamente estables para crear una aplicación más grande. Otra de las ventajas es su posible uso sobre contenedores y sistemas de contenedores como Docker y Kubernetes.

    La funcionalidad interna de un microservicio puede modificarse o actualizarse radicalmente sin afectar al resto del sistema. Esto a su vez se relaciona con la forma en que las tiendas DevOps buscan operar: si las funciones específicas de una aplicación más grande se segmentan en piezas de código discretas e independientes, es más fácil vivir el mantra de DevOps.

    Arquitectura de microservicios frente a arquitectura monolítica

    A menudo escucharemos estos dos términos. Estas premisas abarcan no sólo los microservicios en sí, sino también componentes para la gestión y el descubrimiento de servicios, así como una puerta de enlace API que maneja la comunicación entre microservicios y el mundo exterior.

    Una «aplicación monolítica» es lo contrario a esto. Es un retrónimo para una aplicación donde todo el código está en un archivo ejecutable binario grande. Este tipo de aplicaciones es más difícil de escalar y de mejorar. Pero debido a que está construido como una aplicación única, no requiere tanta administración como una arquitectura de microservicios.

    Diferenciación con una arquitectura orientada a servicios y un servicio web

    En una arquitectura orientada a servicios, los componentes individuales están relativamente unidos, a menudo comparten activos como el almacenamiento y se comunican a través de un software especializado llamado bus de almacenamiento empresarial. Los microservicios, por contra, son aún más independientes, comparten menos recursos y se comunican a través de protocolos más sencillos

    Un servicio web es un conjunto público de funcionalidades a las que otras aplicaciones pueden acceder a través de la web. Probablemente el ejemplo más frecuente es Google Maps, que un restaurante podría usar en su web para dirigir a los comensales.

    Microservicios, Java y Spring Boot y Spring Cloud

    Algunos de los primeros trabajos en microservicios nacieron en la comunidad Java, Martin Flowler fue uno de los primeros defensores. Una conferencia Java de 2012 en Polonía presentaba una de las primeras implementaciones más importantes sobre el tema llamada «Micro Services: Java, The Unix Way«. Se recomendaba aplicar los principios que guiaron el desarrollo de las primeras aplicaciones de Unix en 1970 para el desarrollo de Java.

    Como resultado de esta historia, hay muchos frameworks Java que nos permiten construir microservicios. Uno de los más populares es Spring Boot, que está diseñado específicamente para microservicios. También Spring Cloud amplía este campo y permite implementar estos servicios en la nube.

    Microservicios en la nube: Azure

    Como se señaló anteriormente, una de las ventajas de usar contenedores es que pueden implementarse fácilmente en la nube, donde hay recursos de computación flexibles disponibles para poder maximizar la eficiencia de nuestra aplicación.

    Como podemos imaginar, los principales proveedores de nube pública como Azure están entusiasmados por que se usen sus plataformas para ejecutar nuestras aplicaciones basadas en microservicios. Aquí os dejamos la web de Azure por si queréis consultar más información de lo que ofrece.

    Últimos artículos

    Artículos relacionados