Monterrey, Nuevo León.
+52 81 1972 . 5300
info@tibs.com.mx

Arquitectura de los sistemas de microservicios.

Sitio para intercambio de ideas, compartir opiniones y desarrollo de soluciones

Arquitectura de los sistemas de microservicios.


¿Qué son los microservicios? 

Los microservicios son un enfoque para desarrollar una única aplicación como un conjunto de pequeños servicios, independientes, escalables, fáciles de desarrollar y adaptar a cada necesidad.

¿Por qué apostar por sistemas de microservicios?         

Se han convertido en una alternativa idónea para impulsar los sistemas tecnológicos que se han quedado anclados, mejorando la integración de las aplicaciones en los siguientes puntos:

  • Simplifican la comunicación entre los distintos servicios.
  • Mayor velocidad y seguridad en los sistemas de software.
  • Son versátiles, haciendo posible el uso de distintas tecnologías y lenguajes.
  • Funcionan a la perfección con metodologías ágiles.
  • Su mantenimiento no conlleva complejidad, es simple y barato.

Arquitectura microservicios y Arquitecturas Monolithic.

Tradicionalmente el diseño de software se ha realizado con arquitectura monolítica, en la que el software se estructura de forma que todos los aspectos funcionales quedan acoplados y sujetos en un mismo programa. En este tipo de sistema, toda la información está alojada en un servidor, por lo que no hay separación entre módulos y las diferentes partes de un programa están muy acopladas.

Esto genera un problema a largo plazo, ya que se trata de un sistema no escalable de manera sencilla. Por eso aparece la arquitectura de microservicios.

Detectada la necesidad por parte de las empresas de realizar cambios en el software e implementarlos de forma fácil y rápida, nacen los microservicios. La idea era dividir los sistemas en partes individuales, permitiendo que se puedan tratar y abordar los problemas de manera independiente sin afectar al resto.

Así, mientras que en una arquitectura monolítica el software se desarrolla como una única unidad, una arquitectura de microservicios funciona con un conjunto de pequeños servicios que se ejecutan de manera autónoma e independiente.

Ventajas.

Modularidad: al tratarse de servicios autónomos, se pueden desarrollar y desplegar de forma independiente. Además, un error en un servicio no debería afectar la capacidad de otros servicios para seguir trabajando según lo previsto.

Escalabilidad: como es una aplicación modular, se puede escalar horizontalmente cada parte según sea necesario, aumentando el escalado de los módulos que tengan un procesamiento más intensivo.

Versatilidad: se pueden usar diferentes tecnologías y lenguajes de programación. Lo que permite adaptar cada funcionalidad a la tecnología más adecuada y rentable.

Rapidez de actuación: el reducido tamaño de los microservicios permite un desarrollo menos costoso, así como el uso de “contenedores de software” permite que el despliegue de la aplicación se pueda llevar a cabo rápidamente.

Mantenimiento simple y barato: al poder hacerse mejoras de un solo módulo y no tener que intervenir en toda la estructura, el mantenimiento es más sencillo y barato que en otras arquitecturas.

Agilidad: se pueden utilizar funcionalidades típicas (autenticación, trazabilidad, etc.) que ya han sido desarrolladas por terceros, no hace falta que el desarrollador las cree de nuevo.

Desventajas

Alto consumo de memoria: al tener cada microservicio sus propios recursos y bases de datos, consumen más memoria y CPU.

Inversión de tiempo inicial: al crear la arquitectura, se necesita más tiempo para poder fragmentar los distintos microservicios e implementar la comunicación entre ellos.

Complejidad en la gestión: si contamos con un gran número de microservicios, será más complicado controlar la gestión e integración de los mismos. Es necesario disponer de una centralización de trazas y herramientas avanzadas de procesamiento de información que permitan tener una visión general de todos los microservicios y orquesten el sistema.    
 
Perfil de desarrollador: los microservicios requieren desarrolladores experimentados con un nivel muy alto de experiencia y un control exhaustivo de las versiones. Además de conocimiento sobre solución de problemas como latencia en la red o balanceo de cargas.

No uniformidad: aunque disponer de un equipo tecnológico diferente para cada uno de los servicios tiene sus ventajas, si no se gestiona correctamente, conducirá a un diseño y arquitectura de aplicación poco uniforme.

Dificultad en la realización de pruebas: debido a que los componentes de la aplicación están distribuidos, las pruebas y test globales son más complicados de realizar.

Coste de implantación alto: una arquitectura de microservicios puede suponer un alto coste de implantación debido a costes de infraestructura y pruebas distribuidas.

Casos de éxito 

Abrazar los microservicios ha ayudado a grandes empresas a ser tan ágiles e innovadoras como startups. Algunos de los casos más importantes son:

Netflix: transformándose de una aplicación monolítica de alquiler de DVD a una arquitectura de microservicios que le permite ofrecer servicios de streaming digital en múltiples dispositivos.

Amazon adoptó los microservicios, como parte de su transición desde una tienda de libros online a un proveedor de servicios en la nube. 

Twitter como herramienta para soportar la cantidad de tráfico que recibe.

Conclusión:

La arquitectura de microservicios es una forma muy prometedora de diseñar y construir aplicaciones altamente escalables de manera ágil, siendo esta su principal característica.

Actualmente, es una Arquitectura relativamente nueva, pero se espera que en un futuro existan más herramientas y marcos de trabajo que puedan soportarla y aprovechar al máximo sus características.

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *