El éxito de los contenedores frente a las arquitecturas monolíticas
01 Ago 2018
En su proceso de transformación digital, las empresas exigen probar más rápido y de una manera más segura, nuevas tecnologías, modelos de trabajo diferentes y nuevas formas de interaccionar con sus clientes. Es por eso por lo que los nuevos desarrollos que dan forma a las herramientas que deben sostener esa nueva operativa, están obligados a ponerse en marcha a una velocidad igualmente rápida, garantizando, además, una flexibilidad que hasta hace apenas dos años atrás era imposible alcanzar.
Las organizaciones han buscado para ello, la ayuda de arquitecturas no monolíticas, precisamente para lograr esa velocidad de crucero que necesitaban para transitar hacia su digitalización y adaptarse mejor a las necesidades de un cliente, que como hemos dicho tantas veces, es exigente, caprichoso e infiel.
Y también, para impulsar la innovación, otra de las señas de identidad de este cambio de paradigma, a través de iteraciones y pruebas que debían apostar, igualmente, por la agilidad, por la flexibilidad y por la rapidez. Las plataformas OpenVZ por ejemplo han servido para implementar desarrollos basados en contenedores.
Pero ¿qué son los contenedores? Algo tan sencillo como pequeñas máquinas virtuales, atómicas-o, mejor dicho, para no confundir el término, elementales- que permiten desplegar una aplicación, sea cual sea el stack tecnológico en el que se encuentre la organización. O sea que: tecnología sí, pero dependencia tecnológica, no.
Con un ejemplo se entenderá mejor: puedes coger una parte de cualquier pequeña aplicación que tengas en JAVA, PHP, NodeJS u otro lenguaje, llevarla a un contenedor y desplegarlo en cualquier otra plataforma y entorno. Es decir que, exportar cualquier aplicación a cualquier entorno vía contenedor es un modo sencillo, ágil y rápido para impulsar el desarrollo de nuevas soluciones. Justo el imperativo que buscan las organizaciones en plena era digital.
VIRTUALIZACIÓN VRS. CONTENEDORES
Hoy, organizaciones de todos los sectores buscan el entendimiento de la metodología de desarrollo basada en contenedores y su aplicación práctica para desplegar aplicativos en la nube, al amparo de las múltiples ventajas que promete: agilidad, flexibilidad, progresión entre entornos, independencia de lenguajes, etc. Pero, para entender qué son los contenedores y cómo pueden o cuando deben usarse, primero hay que repasar qué es la virtualización y qué diferencias existen entre ambos.
Grosso modo y sin entrar en demasiados detalles técnicos, podemos simplificar la explicación diciendo que la virtualización apela a las máquinas virtuales, y, aún, siendo conscientes de que este es solo un tipo más de virtualización, lo cierto es que nos aproxima mucho al significado del concepto. Es decir, recursos virtuales que simulan el hardware base sobre el que se ejecuta un software. Esto permite desplegar muchas aplicaciones al mismo tiempo, utilizando cada una de ellas, una pequeña porción de esos recursos de hardware físico.
Frente a este modelo está cobrando cada vez mayor protagonismo el concepto de los contenedoresque, lo que hace es virtualizar aplicaciones sobre un único sistema operativo. Este modelo nos permite llevar aplicaciones a otros entornos de una manera muy sencilla y rápida, por supuesto, auspiciado por la Nube, en cualquiera de sus versiones, ya sea pública, privada o híbrida.
El modelo de contenedores permite a las empresas hacer paquetes de software. Un contenedor se ejecuta de un modo predecible e inalterable. Las librerías, el sistema operativo y todo lo que necesita una nueva funcionalidad o un nuevo servicio está empaquetado en el propio contenedor. Por lo tanto, cualquier posibilidad de cometer errores al replicar el código en distintas máquinas queda reducido a la mínima expresión, ganando a su vez, en agilidad y rapidez.
CLOUD NATIVE PARA DESARROLLAR SERVICIOS
El mercado ha entendido que su transformación implica una nueva forma de conectar los servicios bajo el amparo de una arquitectura digital que garantice, por un lado, la estabilidad y robustez de los sistemas core -system of récords-, convirtiéndolos en un modelo de servicios digitales, orientados a la experiencia de usuario y a la innovación -system of engagement-, y, por otro, la reducción del time-to-market, la flexibilidad y la escalabilidad que demandan las organizaciones en la era digital..
A estas alturas de la película todos sabemos que el gran protagonista de la transformación digital es el cliente. Y que todo, absolutamente todo, gira a su alrededor. Es por eso también por lo que las organizaciones buscan una mejor conexión de sus servicios bajo un nuevo modelo de desarrollo que permita crear, distribuir y ejecutar aplicaciones de manera más rápida, con más calidad y con menores costes.
O, dicho de otra manera, más clara: las empresas necesitan desarrollar sus propuestas tecnológicas a mayor velocidad y garantizar que podrán revertir -con celeridad y mínimo riesgo técnico- cualquier error que cometan en el camino. Para ello, la receta es sencilla: mucha iteración y un cambio en la filosofía de desarrollo, en la que el enfoque Cloud Native, podría tener la última palabra -hasta el momento-.
En la práctica, este patrón de arquitectura software se fundamenta sobre algunos pilares estratégicos como los contenedores de los que hablábamos antes. Pero también sobre una estructura de microservicios, una nueva manera de afrontar los retos y cambios tanto culturales como técnicos -lo que conocemos como Devops-, el modelo API como base de la colaboración y nuevo producto para conectar la empresa o patrones de entrega continua de software que permitan un feedback mayor, en un tiempo menor.
DESARROLLOS ORIENTADOS A MICROSERVICIOS Y NATIVOS CLOUD
Es imposible hablar de aplicaciones orientadas a la Nube sin hacer referencia a The Twelve-Factor App, un manifiesto acuñado en 2012 por Adam Wiggins, que incluye doce recomendaciones clave para el desarrollo exitoso de aplicaciones en la Nube. Un manifiesto que recoge consejos que van desde la utilización de un código base sobre el que hacer el control de las versiones y múltiples despliegues, hasta la administración de los procesos, o sea, la ejecución de las tareas de gestión como procesos que solo se ejecutan una vez.
Las web apps o aplicaciones nativas digitales utilizan formatos declarativos que favorecen la automatización de su configuración, lo que permite a las organizaciones minimizar el tiempo que emplean en su desarrollo, también los recursos utilizados para hacerlo y, por supuesto, el coste derivado de cada iniciativa. Se despliegan en la Nube, eludiendo la obligación de mantener servidores y favorecen el despliegue continuo ya que eliminan las barreras que separan los entornos de desarrollo de los de producción. Son fácilmente escalables y ofrecen una gran portabilidad entre los diferentes entornos donde se ejecutan. Todo ello las convierte en una alternativa indispensable sobre la que construir la estrategia digital de cualquier organización.
Pero, como decíamos antes, las nuevas arquitecturas que impulsarán la transformación digital no podrían entenderse sin los microservicios, una evolución -en realidad- de las arquitecturas convencionales orientadas a los servicios.
Cuando hablamos de arquitectura de microservicios hablamos de construir una aplicación como si fuera un conjunto de pequeños servicios que se ejecutan en su proceso y se comunican, generalmente, mediante APIs. Cada servicio implementa una funcionalidad distinta, puede desplegarse de manera independiente y, además de utilizar diferentes tecnologías para almacenar los datos, admite cualquier lenguaje de programación. O sea que, de nuevo, volvemos a la versatilidad, la agilidad, la eficiencia, la sencillez, ¿te suenan como principios vinculados a la transformación digital? Naturalmente que sí.
Ahora mismo todas aquellas organizaciones que apuestan por su digitalización están mirando hacia este tipo de soluciones basadas en la arquitectura de microservicios que, a su vez, encuentran su fundamento en la estrategia de contenedores. El objetivo queda claro: utilizar nuevas arquitecturas para impulsar el desarrollo de nuevos modelos de servicios y de procesos -sobre plataformas digitales- que impacten sobre:
- la eficiencia de los procesos operacionales
- la creación de aplicaciones de tendencias compliance & seguras
- la mejora de los servicios y productos que se entregan al cliente
- la reducción de la barrera de entrada a nuevos clientes y nuevos modelos comerciales
- la imposición del Mobile First
- la optimización de la velocidad y la agilidad en el time to market
- la propuesta de experiencias conectadas de los usuarios
Todo vale, para alcanzar el fin último que no es otro que proporcionar a las organizaciones más y mejores oportunidades para innovar.