La gestión de recursos tecnológicos en las empresas ha cambiado de manera significativa a lo largo de la corta (pero intensa) historia de la informática. Hasta hace pocos años, a la hora de embarcarse en un nuevo desarrollo uno de los mayores quebraderos de cabeza era la gestión de máquinas asociadas al proyecto. Este problema se volvía aún más complicado cuando se trabajaba en el mundo del Big Data, pues la cantidad de recursos necesarios para dichos proyectos es muy superior.
De la compra al alquiler de recursos tecnológicos
Al adquirir un nuevo servidor había que encontrar un equilibrio. Por un lado, el servidor debía proporcionar los suficientes recursos como para permitir al producto crecer en un futuro. Por otro lado, cuantos más recursos tuviese, mayor era el coste que tenía que asumir la empresa si quería embarcarse en un nuevo desarrollo.
De este modo se corría el riesgo de pagar una gran cantidad de dinero por recursos que no se utilizarían nunca, o bien de quedarse corto en las estimaciones y tener que adquirir un nuevo servidor en un futuro para que el proyecto pudiese seguir creciendo. Hoy en día, empresas como Amazon (Amazon Web Services), IBM (IBM Cloud) o Microsoft (Azure) entre otras ofrecen sus «granjas de servidores» como servicio (Platform as a Service o PaaS).
Con este nuevo modelo, una empresa puede contratar el uso de una máquina con unos recursos tecnológicos determinados abstrayéndose por completo de la gestión física de la misma. Además, se puede contratar este servicio por el tiempo que se desee, por lo que, si un producto software llega al fin de su vida útil, la empresa no se quedará con unos recursos físicos que no se están utilizando. Si por el contrario dicho proyecto empieza a crecer y requiere de más recursos, es tan fácil como contactar con el proveedor y modificar los servidores para que se ajusten mejor al producto en cada momento.
No obstante, todos estos cambios en la gestión de servidores también tienen sus inconvenientes. Hoy en día es mucho más sencillo gestionar los servidores con recursos que se ajustan mejor a las necesidades del proyecto en cada momento y, por tanto, se trabaja con muchas más máquinas que antes.
El problema de la configuración de los recursos tecnológicos
Cada servidor con el que se trabaja requiere ser configurada para que nuestro proyecto funcione correctamente: dependencias de software, dependencias de versiones, gestión de la seguridad en el acceso a los mismos, etc. Y esta tarea consume mucho tiempo, pudiendo incluso desembocar en problemas inesperados al desplegar un proyecto (servidores inaccesibles, componentes incompatibles con determinados Sistemas Operativos, programas anticuados sin soporte técnico, etc).
Docker para ahorrar recursos a la empresa
Es aquí donde herramientas como Docker pueden ahorrar muchos recursos a una empresa. Docker es una herramienta de virtualización ligera, que posibilita empaquetar software junto a sus dependencias, de manera que se simplifica considerablemente su despliegue en distintos servidores.
Docker también facilita dividir un proyecto en distintos paquetes y gestionar la transferencia de información entre los mismos de forma sencilla (mediante el uso de herramientas como Docker Compose y Kubernetes). Lo cual simplifica la gestión de la escalabilidad en un proyecto.
Además, otras herramientas como Jenkins permiten automatizar de forma sencilla el despliegue en producción de nuevas versiones de nuestro proyecto. A este proceso de automatización también se lo conoce como integración continua. Al monitorizar este proceso es sencillo detectar cualquier problema que pueda ocurrir de forma rápida y actuar acorde.
Gracias a estos nuevos servicios y tecnologías, la gestión de procesos de Software se sigue agilizando. Esta optimización aporta más valor a las soluciones Software de la empresa, por lo que es importante que esta se mantenga al día y analice las nuevas tecnologías en busca de oportunidades. De este modo, los proyectos de Big Data se vuelven más manejables, facilitando a la empresa gestionar sus recursos de manera eficiente.