Microservicios, mantenimiento y escalabilidad

¿Qué son los microservicios?

Si hay algo que me apasiona en la tecnología actual es precisamente los microservicios, es una forma de mantener aplicaciones de cualquier tipo, hacerlas más escalables y mantenibles. Pero ¿qué es exactamente un microservicio? un microservicio es un servicio dentro de un contenedor de una máquina, esto que quiere decir, en aplicaciones normales para un WordPress o un Ecommerce se instala un servidor Apache que sea capaz de interpretar el código PHP y una base de datos MySQL o MariaDB (son totalmente compatibles). Ambos softwares corren en la misma máquina son dos servicios y la máquina solo ejecuta código PHP.

Microservicios con Docker
Microservicios

Ejemplo típico de microservicios.

Ahora imaginemos un sistema mucho más complejo, una programación con NodeJS (por ejemplo aunque puede ser Java, PHP o Python), esta programación es el Back End. Vamos a crear un Front End usando un framework para JavaScrip como Angular (pero podría ser ReactJS), cada parte la programa una persona distinta y añadamos una programación con Ionic para las apps móviles.

DIBUJO DE ESTO

Bien pues tenemos el BackEnd por un lado que accede a una base de datos MongoDB (pero podríamos tener varias) y cada una sería un servicio. Por otro lado el front end, que es un servidor Nginx (es el más usado y robusto) en el que ponemos nuestra aplicación Angular y un servidor para la aplicación web.

Rizando el microservicio

Hasta ahora es la aplicación típica, pero la podemos complicar, nuestra aplicación requiere de una base de datos PostGIS para mostrar un plano y este lo sacamos de OpenStreet Maps, pues esta base de datos es un servicio más, o se conecta con diferentes IoTs mediante MQTT, es un servicio más.

¿Como hacer microservicios?

La forma más usada y que mas desarrolladores nos mola tener, es Docker, con Docker puedes descargar imágenes (de momento vamos a decir que son Linux con cosas instaladas), o podemos crear las nuestras propias y podemos enlazar los distintos contenedores entre ellos.

Pero realmente Docker no es una máquina virtual, Docker no emula toda la maquina virtual, sino que tiene un Daemon que se ejecuta los contenedores y permite compartir parte de las imágenes.

Sobre esas imágenes cargamos los contenedores, que son los servicios, una misma imagen puede cargar varios contenedores ahorrando espacio en el disco, imaginemos que dividimos el Back End en varios microservicios, una misma imagen de NodeJS sirve para todos.

Ventajas y desventajas de los microservicios

Empezaremos por las desventajas, porque solo hay una, Docker aun siendo muy muy eficiente, consume recursos, pero la verdad que son mínimos comparados con las ventajas.

Ventajas:

  • Mejor escalabilidad, si necesitamos un nuevo servicio para nuestra aplicación, lo levantamos, no tenemos que tocar otros, salvo para comunicarse.
  • Mantenimientos más fáciles, si falla un servicio solo actuamos sobre él.
  • Usar los mejores componentes para cada microservicio y abstraernos del lenguaje.

Summary
Microservicios, mantenimiento y escalabilidad
Article Name
Microservicios, mantenimiento y escalabilidad
Description
Ventajas de los Microservicios
Author
Publisher Name
Drouiz
Publisher Logo

Leave a Reply

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

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.