Microservicios o arquitectura de microservicios es uno de los tópicos más populares de los últimos años dentro del profundo mundo de la arquitectura de software.
En esta nota te contamos qué son, cuáles son sus características/ beneficios, quién lo usa y por qué deberías conocerlos.
Qué son los microservicios
No hay una definición de diccionario, pero existe consenso en que microservicios o arquitectura de microservicios, es un método o estilo de desarrollo de software.
“La arquitectura de microservicios se basa en la creación de ‘pequeños’ servicios independientes, de tal forma de desacoplar la infraestructura.
Si uno de estos servicios cae o falla el resto puede seguir funcionando. Si se tienen los servicios acoplados la falla de uno implica la pérdida de disponibilidad de todos los servicios”, señala Andrea Rodríguez, jefa de Manejo de Activos Digitales de Fusiona.
Los microservicios se despliegan de forma independiente, cada uno ejecutándose en su propio proceso y comunicándose con mecanismos ligeros, a menudo mediante APIs.
Para entender bien el funcionamiento de esta arquitectura, es bueno compararlos con las arquitecturas monolíticas.
Arquitectura monolítica vs arquitectura de microservicios
Una arquitectura monolítica está construida como una sola unidad. Por lo general se trata de aplicaciones con tres partes principales: una interfaz de usuario del lado del cliente, una base de datos y una aplicación del lado del servidor.
La aplicación del lado del servidor maneja las solicitudes HTTP y tras varios procesos completará las vistas HTML que se enviarán al navegador.
Esta aplicación del lado del servidor es un monolito: un único ejecutable. Cualquier cambio en el sistema implica la creación e implementación de una nueva versión de la aplicación del lado del servidor.
Las aplicaciones monolíticas siguen utilizándose en el desarrollo moderno, pero a medida que crece la migración de infraestructura a la nube, y la construcción se hace más modular, los microservicios reclaman su presencia.
Características de la arquitectura de microservicios
En función del negocio
Es bueno definir los microservicios de acuerdo con los objetivos comerciales de la organización. Para ello se requiere gran comprensión del negocio y una implementación de software ad hoc.
Por ejemplo, en el caso de una tienda online, habría servicios de:
- Gestión del catálogo de productos
- Manejo de inventario
- Administración de pedidos y entregas
- Reviews de usuarios
Productos no proyectos
Los defensores de los microservicios plantean que los equipos deben poseer un producto durante todo su ciclo de vida.
Es decir, los equipos se organizan en torno al desarrollo de productos no de proyectos. Tal como evangeliza Amazon: “tú construyes, tú lo ejecutas”.
Agilidad
Los microservicios requieren equipos pequeños e independientes que se apropien de los servicios.
Así se disminuyen los tiempos del ciclo de desarrollo y aumenta el rendimiento de la organización.
Escalado flexible
Los microservicios permiten que cada servicio se escale de forma independiente.
Diseño para el fracaso y monitoreo constante
Como los servicios pueden fallar siempre, es importante detectar las fallas rápidamente.
Las aplicaciones de microservicio ponen mucho énfasis en el monitoreo en tiempo real de la aplicación, verificando elementos de arquitectura (solicitudes por segundo de la base de datos) como las métricas relevantes del negocio (pedidos recibidos por minuto).
Beneficios de una arquitectura de microservicios
Entre las ventajas o beneficios de las arquitecturas de microservicios, está la facilidad de construcción y administración.
“Al estar divididas en piezas más pequeñas, se desarrolla por “módulos” separados y la aplicación (final) es simplemente la suma de los “módulos”, plantea Pedro Barrera, jefe de proyectos en Fusiona.
Otro de los beneficios de las arquitecturas de microservicios, es que las aplicaciones son más fáciles de escalar y desarrollar.
Los microservicios también ofrecen un mejor aislamiento de fallas, por lo que en el caso de un error en un servicio, la aplicación completa no necesariamente deja de funcionar, como apuntaba Andrea Rodríguez en el inicio de esta nota.
Otro beneficio de la arquitectura de microservicios es que facilita la elección del stack tecnológico (lenguajes de programación, bases de datos, servidores) que mejor se adapte al servicio.
¿Mi empresa debe cambiar?
Como siempre decimos, en tecnología y en la vida, depende que Amazon, Netflix o el periódico The Guardian utilicen Microservicios, no quiere decir que debas implementarlos.
Si vas a migrar tu infraestructura a la nube, los microservicios deberían ser tu alternativa, porque como plantea la Cloud Native Computing Foundation:
“Los microservicios y los contenedores conforman la base para desarrollar aplicaciones nativas en la nube”.
Si no es el caso, creemos que la sugerencia del desarrollador Jetinder Singh de Hashmap es prudente:
“Comienza modestamente con solo uno o dos servicios, aprende de ellos y con el tiempo y la experiencia agrega más”.
Sea cual sea tu camino, un buen paso para profundizar es la lectura de este libro sobre Microservicios recomendado por el maestro Martin Fowler.
Si quieres conocer más sobre estos temas te invitamos a dar una vuelta a la sección tecnología de nuestro blog y si tienes algún proyecto TI en mente, no dudes en contactarnos.