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

Las aplicaciones monolíticas respondieron 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 ejecutarse en cualquier entorno y que siempre se comportará de la misma manera.

La respuesta corta es.... SÍ, SIGUE ADELANTE.

La respuesta larga es un poco más compleja, no es Docker, sino todo lo que rodea al 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 siempre debe responder a una necesidad empresarial, así como las tecnologías que la respaldan. Las aplicaciones monolíticas respondieron a las necesidades de su tiempo. Desempeñaron la función para la que fueron diseñadas, se ejecutaron en centros de datos potentes, a menudo alojados en las oficinas físicas de las empresas, y se adaptaron a los lenguajes y limitaciones de las tecnologías de la época.

Ventajas y desventajas de las aplicaciones monolíticas

Las ventajas serían:

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

Las desventajas serían:

  • FRÁGIL: responden peor a los errores, cualquier problema en una parte de la aplicación tumba 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 tener repercusiones en otras partes de la aplicación que están intrínsecamente vinculadas y generar errores en lugares no esperados al principio.

Y entonces llegó Docker, y más cosas que eran necesarias, para revolucionarlo todo.

Docker

Docker está intrínsecamente ligado a la nube.

El advenimiento de las capacidades de la nube motiva la aparición de Docker y resuelve necesidades empresariales específicas que las aplicaciones monolíticas no estaban satisfaciendo adecuadamente.

Ventajas de Docker

  1. Es MODULAR: permite un mayor control de la plataforma y un desarrollo más rápido de funcionalidades con menos interdependencia.
  2. Es ESCALABLE: no hay necesidad de 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 el uso de los recursos se optimiza utilizando sólo lo que es necesario en cada momento.
  3. Permite a las empresas crecer de forma dinámica y optimizar los costes en función del tamaño de las plataformas y el número de clientes.
  4. Lo mejor de cada componente: la interoperabilidad proporcionada por Docker puede aprovecharse eligiendo lo mejor para cada elemento del ecosistema: lenguajes de programación, herramientas de código abierto autocontenidas, proveedores externos que contribuyen con una pieza del rompecabezas.
  5. Todo es intercambiable e interoperable dependiendo 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 relativamente rápido 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. Aumenta la productividad del equipo de desarrollo y se reduce drásticamente el período de adaptación en entornos con alta rotación.

A estas alturas, ya debería estar convencido de que la contenerización con Docker tiene muchas ventajas (algunas desventajas también, pero de eso no trata este artículo) y, si está comenzando un nuevo proyecto o si ve una ruta de migración clara, es posible que desee ejecutar su aplicación en Docker.

En el próximo artículo hablaremos de "Cómo desplegar una aplicación distribuida de Docker en la nube y no morir en el intento..." les 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 está interesado en este tema y quiere saber más, haga clic aquí.