jueves, febrero 04, 2021

Microservicios, ¿qué lenguage utilizar?

 

(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
Hay otras características importantes que pueden cumplirse con cualquier lenguaje.

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. 

jueves, enero 28, 2021

Retomando el camino


Me decidí a retomar este blog y orientarlo hacia Aplicaciones Cloud Nativas, nombre interesante para englobar el proceso de transformar nuestras aplicaciones monolíticas en micro-servicios, ponerlos en contenedores y luego gestionarlos con Kubernetes.

Estoy observando que muchos están "salteando" la etapa de los micro-servicios y llevan sus aplicaciones monolíticas directamente a Kubernetes lo cual recorta la gran mayoría de las ventajas de esta plataforma.

No soy un experto en K8s pero tengo experiencia en aplicaciones. Voy a documentar los desafíos con los que me encuentre y dejarlos aquí.

Nos vemos pronto.

miércoles, marzo 21, 2018

Formatear texto XML con Gedit en Linux

La siguiente es una forma sencilla de darle formato XML a un texto con el editor de texto Gedit que es el predeterminado de Ubuntu.

Lo logré con información de varios sitios pero en ninguno estaba el procedimiento completo.

Paso 1: instalar librería de de xml

Yo usé libxml2-utils pero hay otras opciones.
sudo apt update
sudo apt install libxml2-utils

Probamos si funciona ejecutando lo siguiente en terminal:
echo '<root><foo a="b">lorem</foo><bar value="ipsum"></bar></root>' | xmllint --format -

Debemos ver en pantalla el documento formateado.

Paso 2: activar plugin "External Tools"

En Gedit, vamos a Edit > Preferences > Plugins y activamos "External Tools".




Paso 3: crear la acción para formatear XML

En Gedit, vamos a Toos > Manage External Tools, agregamos una nueva acción con el signo "+" y completamos:
Nombre: Format XML
Código:
#!/bin/sh
echo $GEDIT_SELECTED_TEXT | xmllint --format - 

Output: Replace current selection

Probando

Para probar, creamos un documento nuevo, pegamos un XML como por ejemplo:
lorem

Seleccionamos el texto del XML y vamos a Tools > External Tools > Format XML. El texto debería ser reemplazado por un XML con formato.

Para terminar podemos ir a View > Highlight Mode, buscamos XML y ahora el XML estará coloreado.


Fuentes: