Si los avances tecnológicos han conseguido que podamos llevar en el bolsillo un dispositivo conectado a Internet con una capacidad de procesamiento superior a la de los ordenadores de hace una década, la tecnología cloud ha logrado transformar el hardware en software y el modelo de consumo de sistemas tradicional, en servicios.
Aquellos que utilizábamos un bolígrafo BIC no solo para escribir, sino también para no gastar las pilas de nuestro walkman, sabemos también que, hace más de dos décadas, para desplegar un nuevo servidor en nuestro rack de 42” se necesitaban al menos de cuatro a seis semanas antes de poder ver esas luces verdes y azules en nuestro CPD. Ese era el plazo mínimo para que nuestro proveedor de hardware pudiera entregarnos el servidor. Después, había que instalar las CPU, los módulos de memoria, las controladoras RAID y las tarjetas de red, para pasar después a actualizar el firmware, instalar el sistema operativo y las últimas actualizaciones. En total, alrededor de dos meses desde que se realizaba la orden de compra hasta que el servidor estaba dando servicio al usuario. Desde luego, no es un modelo óptimo de agilidad.
La nube ha reducido el tiempo
de aprovisionamiento de la infraestructura
a segundos
Virtualizar
Desde hace diez años, diferentes fabricantes permiten generar máquinas virtuales, aislando el hardware del sistema operativo gracias a una capa llamada hypervisor. Esta tecnología ha permitido que un único servidor tuviera la misma capacidad de proceso que todo el rack de 42” de hace veinte años. Además, permite que el administrador —con cuatro clics— pueda crear un servidor con un número de CPU y una cantidad de memoria RAM suficiente para dar servicio en cuestión de horas. Si comparamos este escenario con el que teníamos hace diez años, hemos reducido los rangos de tiempo de forma exponencial: de ocho semanas a ocho horas. Una auténtica aceleración.
Aun así, seguimos dependiendo de las capacidades de nuestra infraestructura, porque es necesario disponer de los recursos necesarios para asignarlos a nuestras máquinas virtuales. Hay que aprovisionar almacenamiento, capacidad de proceso, memoria y electrónica de red. Sin olvidarnos de las necesidades eléctricas para suministrar la potencia necesaria a toda la infraestructura y al circuito de refrigeración de la sala donde estén encendidas las máquinas para disipar todo el calor producido por los componentes.
De hardware a software
Precisamente en este escenario, la tecnología cloud ha conseguido dar un paso más y reducir ese tiempo de aprovisionamiento de la infraestructura a segundos. El proveedor de cloud ha transformado el hardware en software. Esto permite desplegar y gestionar la infraestructura tecnológica en el proveedor de cloud de una forma sencilla, ágil y segura, mediante código. Los tres proveedores cloud con más demanda a nivel mundial cuentan con su propia herramienta para gestionar este tipo de código: Deployment Manager en el caso de Google Cloud Platform, Amazon Cloud Formation en el caso de AWS (Amazon Web Services) y Azure Resource Manager para Microsoft Azure.
De esta forma, a través de estas soluciones es posible generar el código necesario para crear toda la infraestructura, en vez de ir generando de forma manual las máquinas o instancias en la nube, asignando uno a uno todos los componentes hardware. Además, de forma manual, es necesario también dar de alta todos los servicios en la nube para añadir capas de seguridad, almacenamiento y configurar los servicios necesarios en alta disponibilidad.
Otra de las características de la infraestructura como código es que permite que sea escalable, replicable y fácil de revisar. La infraestructura se transforma en software y, de esta forma, debe ser controlado, versionado y testado.
No solo hablamos de máquinas virtuales, sino de cualquier servicio a desplegar en cloud
Hacia devops
Gracias a las herramientas utilizadas por los desarrolladores (como Gitlab, Jenkins, Sonar, etc.) es posible gestionar el versionado del código, las entregas ágiles y la evolución continua del producto, aspectos que constituyen algunos de los pilares básicos de la metodología DevOps.
De esta forma, el administrador de TI puede crear y gestionar una máquina —o 5000 máquinas— utilizando el mismo código, sin errores y de la manera más ágil posible. Todo ello además de poder desarrollar el código para responder a las necesidades y a los cambios que requiere el día a día del negocio, y a la velocidad adecuada. Pero no solo estamos hablando de máquinas virtuales, sino de cualquier servicio que se pueda desplegar en la nube, como pueden ser sistemas de seguridad de red, balanceadores de carga, almacenamiento… Todo esto y mucho más se realiza ahora mediante código.
Esta transformación de la infraestructura está introduciendo un cambio gradual en los departamentos tecnológicos de las empresas. La línea que hasta ahora separaba a los departamentos de desarrollo y TI está desapareciendo, y las sinergias entre ambos mundos permiten que este cambio sea aún más rápido y eficaz.
Despliegue de código
El siguiente salto significativo ocurrirá cuando podamos transportar este concepto de infrastructure as code (IaC) en un modelo cloud al resto de las aplicaciones y servicios que requieren los empleados de una empresa o, incluso, los clientes de un determinado servicio. Podríamos pensar en que, con un simple código, sería posible, por ejemplo, desplegar el sistema operativo en equipos de sobremesa, con las políticas de seguridad y el software necesarios para dar servicio al usuario; o cualquier aplicación, incluyendo la configuración necesaria dentro del propio código, lo que permitiría acelerar los largos procesos que requieren el despliegue y configuración de la puesta en marcha de las complejas —y muchas veces “pesadas”— aplicaciones corporativas.
Precisamente, la industria 4.0 y la evolución de las tecnologías IoT, así como el blockchain y el machine learning están permitiendo transformar en código cualquier despliegue, servicio e Infraestructura. Hacia ahí vamos.