Docker Cloud, Docker Edge, Docker Everywhere. Parte I: Docker vs Monolitos

16 de abril de 2021, by Isidro Nistal

Las aplicaciones monolíticas respondían a las necesidades de su época. La llegada de las capacidades cloud motiva la aparición de Docker y resuelve necesidades específicas de negocio que las aplicaciones monolíticas no estaban cubriendo correctamente.

Como comentábamos en el primer artículo de la serie, Docker o contenedor es un paquete de software ligero, autocontenido y ejecutable con todo lo que necesita una aplicación: código, herramientas del sistema, librerías y configuraciones.

Según esta premisa podríamos pensar que Docker se puede ejecutar en cualquier entorno y que siempre se va a comportar de la misma manera.

La respuesta corta es... SÍ ADELANTE.

La respuesta larga es un poco más compleja, no es Docker, sino todo lo que rodea al caso de uso, entornos y aplicaciones lo que influye en cómo tratar estas pequeñas piezas autocontenidas.

Érase una vez el mundo de las aplicaciones monolíticas

La tecnología tiene que responder siempre a una necesidad de negocio y de las tecnologías que lo soportan. Las aplicaciones monolíticas respondían a las necesidades de su época. Hacían la función para la que estaban diseñadas, se ejecutaban en potentes CPDs muchas veces alojados en las oficinas físicas de las empresas y estaban adaptadas a los lenguajes y las limitaciones de las tecnologías de la época.

Pero, las aplicaciones monolíticas eran (y siguen siendo en muchas empresas):

  • FRAGILES: responden peor a los errores, cualquier problema en una parte de la aplicación tira la plataforma completa y eso implica solucionar despliegue y depurado de toda la plataforma
  • POCO ESTABLES: la única opción de crecimiento es hacer crecer la plataforma completa y eso es caro. La creación de nuevas funcionalidades que solicita el departamento de producto implica tocar toda la plataforma
  • COMPLEJAS: la curva de aprendizaje de la plataforma para los nuevas incorporaciones es muy grande y requiere de una visión muy general para poder operar en la plataforma
  • EFECTO MARIPOSA: actualizar cualquier parte de la aplicación puede tener repercusiones en otras partes de la aplicación que están intrínsecamente ligadas y generan errores en sitios no esperados en un principio

Y llegó Docker (y más cosas que hacían falta) para trastocar todo

Docker

Docker va intrínsecamente ligado al cloud.

La llegada de las capacidades cloud motiva la aparición de Docker y resuelve necesidades específicas de negocio que las aplicaciones monolíticas no estaban cubriendo correctamente.

  • Es MODULAR: permite un mayor control de la plataforma y un desarrollo de funcionalidades más rápido y con menos interdependencia
  • Es ESCALABLE: no hace falta hacer crecer todo el monolito para dar cabida a nuevos casos de uso o un crecimiento de la plataforma. Cada parte crece en su medida y dentro del entorno cloud el uso de recursos se optimiza utilizando sólo lo necesario en cada momento.

Permite que las empresas crezcan de forma dinámica y que los costes se optimicen al tamaño de las plataformas y el número de clientes (= facturación por lo general)

  • Lo mejor en cada componente: la interoperabilidad que aporta Docker se puede aprovechar eligiendo lo mejor para cada elemento del ecosistema:
    •  lenguajes de programación,
    • herramientas de código abierto autocontenidas,
    • proveedores externos que aportan alguna pieza del puzle

Todo es intercambiable e interoperable dependiendo de las necesidades de negocio de cada momento.

  • Curva de productividad: la adaptación de los recursos humanos de la empresa a la plataforma es
    • Más gradual: los nuevos perfiles pueden ser productivos relativamente rápido sin tener que controlar toda la plataforma
    • La empresa puede buscar perfiles  especializados en alguna de las partes de la plataforma
    • La empresa puede externalizar ciertas partes de la plataforma que no son parte de su core o que no compensa su mantenimiento y gestión (mensajerías, bases de datos…)

La productividad del equipo de desarrollo crece y el periodo de adaptación en entornos con alta rotación se reduce drásticamente.

A estas alturas ya deberías estar convencido de que dockerizar tiene muchas ventajas (algunos inconvenientes también pero no va de eso el artículo) y si estás empezando un proyecto nuevo o si ves un camino claro de migración puede ser que quieras ejecutar tu aplicación en Docker.

En el próximo artículo hablaremos de «Cómo implementar una aplicación distribuida en Dockers en el cloud y no morir en el intento«… te damos una pista, Kubernetes es la herramienta para llevar todas las ventajas de Docker al siguiente nivel sin morir en el intento.

LECTURA RECOMENDADA : Por qué todo el mundo habla de Docker en el IoT Industrial

El Sistema Operativo Barbara OS soporta la ejecución de aplicaciones paquetizadas en contenedores Docker. Si te interesa este tema y quieres saber más pincha aquí

Si buscas desarrollar un proyecto IoT, contáctanos