6

Microservicios, arquitectura de información para un desarrollo ágil y eficiente

3280Puntos

hace 6 años

Hay enormes beneficios derivados de trabajar con una arquitectura de microservicios; ese el camino que estamos tomando aquí en Platzi, por esta razón les queremos compartir esta experiencia, que es el futuro de la web.

Los microservicios han cambiado la forma en que se estructura la arquitectura de una aplicación web, haciéndola más estable, ágil y eficiente.

Pero antes de tratar de los beneficios que representa para el desarrollo esta clase de arquitectura, debemos hacer referencia a los sistemas monolíticos, antecesores de este nuevo modelo.

Desde el contraste entre estas dos formas de organizar la información podremos entender más fácilmente las ventajas derivadas de los microservicios.

Sistema monolítico

Cortesía de Martin Fowler.

Un sistema monolítico es el que se organiza en su totalidad de forma horizontal, allí la información tiene que atravesar el sistema de la misma forma “horizontal” para llegar a su destino, desde la base de datos, pasando por una o varias partes de todo el sistema, hasta llegar al usuario.

Un sistema monolítico corriendo en un solo proceso

Puede ser que algunas partes de la aplicación no necesariamente dependan unas de otras, pero igual están encapsuladas en un solo sistema horizontal, esta estructura en aplicaciones robustas y complejas las podría llevar a tener diferentes desafíos y dificultades.

He aquí una pequeña lista de las situaciones a afrontar:

  • Para hacer deploy se tiene que hacer toda la aplicación junto a todas sus partes.
  • Todas las personas encargadas de las partes esenciales de la aplicación deben estar presentes para un deploy, en caso de que se presente alguna falla crítica.
  • Si hay un error de código crítico toda la aplicación deja de funcionar.
  • Al momento de programar se genera una gran dependencia entre las partes, comprometiendo a cualquiera de las partes al momento de un error crítico.
  • Cambiar una de las partes podría conllevar el cambio de otras partes, incluso podría llevar a cambiar la parte del usuario y así comprometer su experiencia.
  • La escalabilidad está sujeta a toda la infraestructura debido a la estrecha relación entre las partes.
  • Todas las partes comparten los mismos recursos.

Escalando un sistema monolítico en múltiples servidores.

Al ver las dificultades que se generan al trabajar en un sistema monolítico, grandes compañías como Netfilx, Amazon y SoundCloud empezaron a contemplar un cambio.

Ahora veremos como un microservicio puede cambiar la forma en que están estructurados estos sistemas monolíticos.

Microservicios

Cortesía de Martin Fowler

Un sistema basado en Microservicios es aquel que distribuye toda su organización de forma vertical, aquí el detalle es que un tipo de información solicitada puede ser consultada a su servicio específico, este servicio independiente en recursos es capaz de responder la solicitud.

Múltiples funcionalidades, múltiples servicios

Debido a que ninguna parte depende necesariamente de otras partes, y cada parte de forma independiente sabe responder ante cualquier situación, esta clase de arquitectura es la más importante hoy en día para un desarrollo ágil y estable en muchos sentidos.

Aqui una lista de las principales características de los microservicios:

  • Se puede hacer un deploy de un solo servicio sin hacer deploy a los demás.
  • Se puede hacer deploy del servicio únicamente con el equipo encargado del microservicio.
  • En el caso de un error crítico los demás microservicios seguirán funcionando sin ser afectados de forma directa.
  • Cada equipo es capaz de programar sin interferir con otros equipos.
  • Como consecuencia de lo anterior, cambiar una parte no afecta a otra parte, incluso no debería afectar la experiencia del usuario final.
  • La escalabilidad no está sujeta a ninguna de las partes, como son independientes es posible agrupar y distribuir en varios servidores como sea necesario.
  • Un plus es la eficiencia, gracias a que cada servicio es independiente de los demas, así mismo se pueden gastar los recursos, un servicio podría consumir los recursos de una máquina, o algunos servicios podrían compartir los recursos, todo dependerá de las necesidades del producto.

Ditribución de microservicios en múltiples servidores.

Diego
Diego
DiegoUG

3280Puntos

hace 6 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
3

Este documento es de hace 6 años, y aun para mi concepto esta bastante importante lo que se menciona en el. Platzi tiene algun curso de microservicos de su funcionamiento e implementación? Gracias

0
4425Puntos
7 meses

Hola anthony, yo tambien estoy buscando algun un curso sobre microservicios y como comunicarlos entre ellos, esperemos que pronto desde platzi hagan alguno, se que en el de Curso Profesional de Arquitectura de Software se toca en una clase, pero busco algo mas profundo.

Saludos y felices fiestas

2
2920Puntos

Diego, ¿los sitemas de microservicios siempre implican una organización jerárquica?

0
12567Puntos

Diego, excelente artículo, justo en este momento me encontraba documentándome sobre el tema. Saludos

0

@Danielalala los microservicios son sistemas chicos que colaboran para formar un todo, y se comunican entre si mas de forma horizontal, no hay jerarquias como en las clase, pero podrias tener fachadas que simplifiquen la comunicación con grupos de microservicios