(imagen de https://towardsdatascience.com/)
"No te enamores de un lenguaje de programación ya que cual de ellos utilizar es una decisión de diseño" es una frase que me marcó desde que comencé a programar. Cada lenguaje tiene sus fortalezas y debilidades, conocerlas nos ayuda a tomar mejores decisiones.
No elegiría C++ para construir una aplicación web, o PHP para desarrollar un juego de consola. Entonces, ¿por qué elegir un lenguaje pensado para aplicaciones monolíticas si quiero construir microservicios?
Características de los microservicios
Cuando analizamos cómo separar nuestra aplicación monolítica en microservicios hay muchas cosas a tener en cuenta. Deben ser:
- Específicos: los microservicios deben ser responsables por una funcionalidad y hacerla bien
- Efímeros: la mayoría de los microservicios deben ser efímeros, es decir, no almacenar datos en forma local
- Veloces: para iniciar y para terminar
- Pequeños: de otra forma no serían "micro" servicios
Contenedores
El paso siguiente a la construcción de microservicios es empaquetarlos en contenedores. Una buena idea es hacer pruebas de cómo quedan nuestros microservicios "dockerizados".
En mis pruebas logré construir imágenes de contenedores realmente pequeñas con varios de los lenguajes más populares. Entre 100MB y 180MB.
Qué lenguaje elegir
Estoy notando que gran parte de la industria sigue utilizando lenguajes que resultan en contenedores enormes (900MB+), que demoran mucho tiempo en iniciar y utilizan demasiados recursos (memoria) en comparación con otros lenguajes. La única explicación que se me ocurre es porque son expertos en ese lenguaje/framework.
El lenguaje a utilizar debería ser adecuado para el tipo de tarea a realizar y respetar las características de los microservicios.