En la jerga tecnológica actual, una palabra común que puede oír es microservicio . Es una palabra que puede ser significativa pero difícil de aplicar o comprender en profundidad. ¿No confías en mí? Bueno, vamos a calentar. Empecemos por aquí: ¿qué es un microservicio? La mayoría de la gente se limita a decir lo obvio y a definir el “significado de la palabra”. Así que su respuesta podría ser: Pues bien, un microservicio viene de micro (del griego antiguo: micros – pequeño), y servicio. Y sí, técnicamente tendrías razón. Pero, profundicemos un poco más aquí. Si le pidiéramos más detalles al respecto, ¿podría facilitarnos algunos? ¿Cómo podría hacerlo si le pedimos que descomponga todo un sistema monolítico en microservicios? Ahora las cosas se complican y la “palabra con sentido” desaparece. Así que aquí va: ¿qué son los microservicios? En primer lugar, empecemos con algunas analogías. En una conversación reciente con alguien, el tema pasó de hablar de un trabajo de desarrollador y entonces, sucedió lo siguiente:

  • “¿Cómo se puede explicar la definición de microservicios a una persona no técnica?”.
  • “Bueno, ¿has visto alguna vez ‘Despicable Me’?”
  • “¡Sí!”
  • “Los microservicios son como los minions*. Básicamente hacen una cosa específica a la vez y son capaces de hablar juntos (de una manera extraña) pero eso puede llevarte a conseguir una solución. Así que sí, la mayoría de las aplicaciones que utilizas en tu día a día están respaldadas por toneladas y toneladas de secuaces que hacen una sola cosa a la vez.”

Dicho esto, vamos a tomarnos en serio este tema dándole una definición seria. “Los microservicios son un enfoque arquitectónico y organizativo para el desarrollo de software en el que tenemos un conjunto de servicios pequeños e independientes que se comunican entre sí a través de API” (Microservicios, AWS, 2023). A primera vista, podemos deducir un par de pros de esta definición. Quizá después de leer la definición, diga: Bueno, parece que si los microservicios son independientes y pequeños, si uno de ellos se cae quizás los otros deberían estar en funcionamiento, ¿no? Sí, es una de las ventajas que podemos encontrar fácilmente. Sin embargo, si quieres tener un mejor conjunto de pros de microservicios, aquí hay algunos más:

  1. Como los microservicios son módulos pequeños, están pensados para realizar un conjunto de tareas de alcance limitado. Por ejemplo, podemos tener un microservicio sólo para facturación, otro para hacer el login y la creación de usuarios, y otro para leer los clientes, artículos, etc.
  2. Ser pequeño facilita el mantenimiento y mantiene toda la lógica desacoplada y aislada de otros cambios de código que pudieran afectarla.
  3. (Sólo para mantenerlo en la lista) Los microservicios son independientes, por lo que básicamente si uno de ellos se apaga, todos ellos seguirán funcionando.
  4. Los microservicios son pequeños y también fácilmente duplicables, se pueden escalar y en a piacere, siendo esto algo que puede ser rentable a largo plazo.

Todo suena genial, ¿verdad? ¿Son los microservicios el santo grial para todo? ¿Debo descomponer siempre todo para convertirlo en microservicio? Depende. Tengo que hacer una dura parada aquí, a pesar de su uso en un gran grupo de empresas tecnológicas de primer nivel, los microservicios no son siempre la mejor solución. Aunque ya hemos hablado de los pros de su uso, también tenemos que repasar los contras del uso de microservicios:

  • Evítelos si está escribiendo una aplicación pequeña: No intentes librarte de una mosca con un mazo. Si quieres hacer microservicios sobre una aplicación muy pequeña, pasarás más tiempo del esperado configurando todo para hacerlos funcionar.
  • Hay que probar y desplegar todos y cada uno de los módulos: En relación con el último punto, tenemos que asegurarnos de que todos y cada uno de los microservicios estén bien probados, bien desplegados y funcionen bien. Tal vez pueda saltarse la prueba si lo desea, pero quiero pintar una imagen en su cabeza sobre la deuda técnica con la que podría estar lidiando.
  • Cuando estamos buscando microservicios, tenemos que poner todo de esa manera: Hablemos por ejemplo a nivel de BD – ¿Puedes tener una sola instancia de tu base de datos haciendo que los microservicios se metan dentro?
  • Tienes un presupuesto limitado: Quizá podamos deducirlo del punto anterior. Conseguir más significa costar más. Punto.

Para terminar este artículo, permítanme resumirlo: Utilice microservicios si:

  • Espera un gran flujo de tráfico y necesita ampliar o reducir su capacidad in piacere para encontrar un equilibrio entre disponibilidad y coste
  • Tienes gente para trabajar en las pruebas y el desarrollo.
  • Estás tratando con un monolito que necesita cada vez más RAM para ejecutar tu aplicación sin problemas.

Utiliza monolitos si:

  • Su aplicación es pequeña o interna. De ahí que no espere un gran flujo de tráfico.
  • Tienes un presupuesto o plazo limitado y un solo servidor puede hacer el trabajo por ti sin problemas (si estás empezando a poner más y más RAM, ese podría ser el momento de saltar a los microservicios).
  • Cree que la implantación de los microservicios lleva demasiado tiempo.

*Este no es el primer artículo en Medium (y puedo apostar que no será el último) que explica microservicios con minions. Gamesh Samarthyam de Medium es una persona que también está de acuerdo con nosotros sobre este pensamiento. Así que echa un vistazo a su artículo si te interesa.