Por qué deberíamos pasar a contenedores nuestras aplicaciones

¿Por qué deberíamos pasar a contenedores nuestras aplicaciones? En primer lugar hay que destacar que una aplicación puede correr correctamente en un sistema sin contenedores o dentro de un contenedor. Puede funcionar correctamente en cualquiera de las dos modalidades. 

Entonces ¿Por qué “perder el tiempo” pasando la aplicación a contenedores? 

Cuando preparamos una aplicación para correr en contenedores no estamos perdiendo el tiempo. Al revés, estamos ganando tiempo a futuro. 

Me explico, cuando una aplicación se prepara para correr sobre contenedores, estamos haciendo qué la aplicación sea más independiente de un sistema ya que se puede actualizar el sistema donde corren los contenedores sin afectar a la aplicación y por el contrario, se puede actualizar la imagen de la aplicación sin afectar al sistema base. Por lo tanto le aportamos una capa de aislamiento a la aplicación.

Es importante destacar que la imagen que preparamos para la aplicación debería cumplir los estándares OCI o Open Container Initiative  (como se puede verificar en https://opencontainers.org/ ), es decir la imagen es OCI compliant podemos correr la imagen de nuestra aplicación tanto en todas las rutinas compatibles como pueden ser:

  • Docker
  • Containerd
  • Cri-o
  • Rkt
  • Runc

Bueno ¿Y qué más nos aporta tener la aplicación preparada para que corra en un contenedor?

Podemos aprovecharnos además de lo anteriormente comentado con las rutinas anteriores y gestores stand-alone como docker de orquestadores como:

  • Docker-swarm (no es el más utilizado) 
  • Kubernetes (el orquestador por excelencia)

Este tipo de orquestadores nos aportan grandes ventajas para nuestra aplicación, tales como alta disponibilidad, escalabilidad, monitorización, flexibilidad, etc. Aportan una capa de abstracción extra que permite manejar de forma más fácil, redes, volúmenes, gestión de instancias, y todo lo relacionado con la gestión de los contenedores.

Por ejemplo usando kubernetes puedes tener una aplicación en producción y que se escale en función del uso de CPU o de RAM. También puedes asegurarte de que exista un número determinado de instancias. Y lo más importante, puedes hacer despliegues sin causar un desastre gestionando de forma muy rápida un rollback en caso de ser necesario.

Conclusiones

Hace tan solo unos años la industria en general solo veía esto viable para entornos no productivos (excepto los más atrevidos) pero de poco tiempo para aca cada vez se está viendo más frecuentemente una adopción generalizada de este tipo de tecnología. De hecho la gran mayoría de los grandes jugadores de la tecnología cloud tienen implementados servicios relacionados con esta tecnología.

Deja una respuesta