Hoy en día, a nadie del sector familiarizado con la nube le resulta extraño hablar de sistemas virtualizados. Esta opción empezó a utilizarse para aprovechar de forma más eficiente el hardware. La receta es sencilla: sobre el hardware instalamos un programa hipervisor que nos permite abstraernos del mismo, y sobre él los sistemas operativos tradicionales. El hipervisor ofrece a los sistemas operativos los recursos de hardware. Con esta tecnología conseguimos hacer funcionar varios servidores en un equipo.
También seguimos ese camino los proveedores de Internet, que acabamos montando en nuestros centros de datos plataformas de virtualización donde los clientes pueden subir sus servidores. Así pueden acceder a un entorno cloud más potente y escalable que el que las empresas pueden abordar directamente en sus instalaciones.
¿Por qué habíamos desplegado un rosario de servidores cada uno con un programa en la organización que generalmente estaban infrautilizados? Esta es, en parte, la explicación: los programadores eran incapaces de hacer funcionar su desarrollo en un entorno que no fuera igual al que utilizaban para el desarrollo y se acababa montando un servidor por cada programa. Los desarrolladores necesitaban asegurarse de que en el equipo de producción tenían instaladas las mismas librerías y versiones y que estas no iban a modificarse. Con este problema de dependencias, acababan optando por una máquina por cada desarrollo.
En Sarenet hemos puesto en marcha un sistema Kubernetes gestionado que permite conseguir que las aplicaciones se clonen multiplicándose automáticamente en segundos para atender picos de demanda
Parte de la solución la tenían utilizando técnicas de virtualización, ya que se consiguió ahorrar en hardware y podían pedir máquinas al administrador de sistemas o al proveedor de servicios similares a su entorno de desarrollo al no ser estas tan caras. Pero no es el mejor de los escenarios. Cada vez que arrancamos una aplicación en estas condiciones, levantamos también un sistema operativo, y esto consume recursos. Además, levantar un sistema operativo no es algo inmediato.
En la actualidad hay otra forma de abordar el problema de las dependencias y consumos de recursos, y se empieza a popularizar otra forma de programar. Ahora hablamos de «contenedores», que funcionan como microservicios y contienen todas las dependencias del programa. Imaginad un frontal web que necesita ciertas librerías para funcionar en un sistema operativo. Un contenedor incluirá el programa y las librerías y podrá ejecutarse en un entorno de contenedores en cualquier máquina. Ese entorno es un sistema operativo modificado y se aprovecha de las capacidades de algunos sistemas operativos de poder ‘enjaular’ las aplicaciones. Con esto ya no necesitamos un sistema operativo por cada programa, y de esa forma, cuando queramos poner en funcionamiento un nuevo contenedor, no necesitamos levantar todo un sistema operativo. Esta forma de funcionar nos va a permitir ejecutar contenedores, y si uno falla el sistema puede regenerarlo y solo se ve afectado un usuario, no todo el servicio. Imaginad un sistema de inscripciones de una carrera popular; estos sistemas colapsaban nada más se abría el periodo de inscripción. Ahora tenemos una oportunidad de solventar el problema.
Kubernetes gestionado
En Sarenet hemos puesto en marcha un sistema Kubernetes gestionado. Se trata de un servicio que permite balancear la carga entre nodos, hacer que los frontales de los servicios se regeneren solos si se bloquean y conseguir que las aplicaciones se clonen multiplicándose automáticamente en segundos para atender picos de demanda. Además, ofrece la posibilidad de modificar la versión del software que se está ejecutando en nuestros contenedores en tiempo real, mientras la recolección de los logs se genera de forma automatizada.
Trabajar con esta tecnología también nos aportará otras ventajas de seguridad. Tendremos información del estado de salud de este microservicio, el contenedor no estará expuesto desde ningún puerto hacia el exterior y podremos aislar los recursos definiendo un espacio dentro del contenedor ejecutando de manera contenida la aplicación.
En definitiva, trabajaremos en un entorno seguro donde las aplicaciones se levantan en sistemas operativos que ya están funcionando, de modo que es algo inmediato y diferenciador. Todo ello gestionado por nuestro departamento de sistemas conformado por profesionales con amplia experiencia en el sector.