Docker cloud, Docker Edge, Docker everywhere... Diferencias entre microservicios y monolitos (part I)

Las aplicaciones monolíticas respondían a las necesidades de su tiempo. La llegada de las capacidades de la nube motiva la aparición de Docker y resuelve necesidades empresariales específicas que las aplicaciones monolíticas no cubrían adecuadamente.

Tecnología
Escrito por:
Isidro Nistal
Etiquetas:

Como mencionamos 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, bibliotecas y configuraciones.

Según esta premisa podríamos pensar que Docker puede funcionar en cualquier entorno y que siempre se 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 el caso de uso, los entornos y las aplicaciones que influyen en cómo tratar estas pequeñas piezas autocontenidas.

Características de las aplicaciones monolíticas

La tecnología debe responder siempre a una necesidad empresarial y a las tecnologías que la soportan. Las aplicaciones monolíticas respondían a las necesidades de su tiempo. Cumplían la función para la que fueron diseñadas, se ejecutaban en potentes centros de datos, a menudo alojados en las oficinas físicas de las empresas, y se adaptaban a los lenguajes y limitaciones de las tecnologías de la época.

Ventajas e inconvenientes de las aplicaciones monolíticas

Las ventajas serían:

  • PEQUEÑAS APLICACIONES: Bueno para aplicaciones pequeñas.
  • FÁCIL DE DESARROLLAR: Fácil de desarrollar.
  • DESPLIEGUE: Fácil de desplegar.
  • EQUIPOS PEQUEÑOS: Fácil de trabajar solo o en pequeños equipos.

Las desventajas serían:

  • FRAGILES: responden peor a los errores, cualquier problema en una parte de la aplicación tira de toda la plataforma y eso implica resolver el despliegue y la depuración de toda la plataforma.
  • BAJA ESTABILIDAD: la única opción de crecimiento es hacer crecer toda la plataforma y eso es caro. La creación de nuevas funcionalidades solicitadas por el departamento de producto implica tocar toda la plataforma.
  • COMPLEJO: la curva de aprendizaje de la plataforma para las nuevas incorporaciones es muy grande y requiere una visión muy general para poder operar en la plataforma.
  • EFECTO MARIPOSA: la actualización de cualquier parte de la aplicación puede repercutir en otras partes de la misma que están intrínsecamente vinculadas y generar errores en lugares no previstos al principio.

Y llegó Docker, y más cosas que se necesitaban, para desbaratar todo.

Docker

Docker está intrínsecamente ligado a la nube.

La llegada de las capacidades de la nube motiva la aparición de Docker y resuelve necesidades empresariales específicas que las aplicaciones monolíticas no satisfacían adecuadamente.

Ventajas de Docker

  1. Es MODULAR: permite un mayor control de la plataforma y un desarrollo más rápido de las funcionalidades con menos interdependencia.
  2. Es ESCALABLE: no es necesario hacer crecer todo el monolito para dar cabida a nuevos casos de uso o al crecimiento de la plataforma. Cada parte crece a su manera y dentro del entorno de la nube se optimiza el uso de los recursos utilizando solo lo necesario en cada momento.
  3. Permite que las empresas crezcan de forma dinámica y que los costes se optimicen al tamaño de las plataformas y al número de clientes.
  4. Lo mejor de cada componente: la interoperabilidad que proporciona Docker puede aprovecharse eligiendo lo mejor de cada elemento del ecosistema: lenguajes de programación, herramientas autónomas de código abierto, proveedores externos que aportan una pieza del puzzle.
  5. Todo es intercambiable e interoperable en función de las necesidades empresariales del momento.
  6. 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 con relativa rapidez sin tener que controlar toda la plataforma.
  • La empresa puede buscar perfiles especializados en una de las partes de la plataforma.
  • La empresa puede externalizar ciertas partes de la plataforma que no forman parte de su núcleo o que no compensan su mantenimiento y gestión (mensajería, bases de datos...).

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

A estas alturas deberías estar convencido de que Dockerizar tiene muchas ventajas (algunas desventajas también pero no es de lo que trata este artículo) y si estás comenzando un nuevo proyecto o si ves un camino claro de migración es posible que quieras ejecutar tu aplicación en Docker.

En el siguiente artículo hablaremos de "Cómo desplegar una aplicación distribuida con Docker en la nube 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

Barbara OS soporta la ejecución de aplicaciones empaquetadas en contenedores Docker. Si te interesa este tema y quieres saber más haz clic aquí.