Una definición de los nuevos conceptos en Infraestructura IT.
Complementarios pero bien distintos. Automation, o la automatización de la gestión de infraestructura y aprovisionamiento de software, ha tenido un crecimiento fenomenal en los últimos 5 años. Herramientas con licenciamiento pago como Chef, Puppet y Salt se mencionan continuamente.
Desde el mundo Open Source, el crecimiento ha sido más vertiginoso aún. Ansible la más poderosa y avanzada herramienta de “Automation” ha sido recientemente adquirida por Red Hat, el coloso de las distribuciones Linux licenciado. Todo este caldo de cultivo indica que el aprovisionamiento, la automatización, la orquestación y la virtualización de aplicaciones, etc, se encuentran en un constante desarrollo y crecimiento en el mercado IT, sobre todo en el mundo Open Source. Ahora bien, vamos a concentrarnos primero en lo menos práctico pero más importante, que es entender de que se trata cada concepto. Automation Los entornos cloud permiten la creación y destrucción de máquinas virtuales en función de necesidad. En general estas máquinas virtuales son fácilmente gestionables desde el panel de control del proveedor de hosting o bien mediante una API que los proveedores más profesionales ofrecen. A simple vista, esto solucionaría el problema de brindar la escalabilidad horizontal en una arquitectura, pero al hacerlo nos encontramos con el problema de instalar y configurar las aplicaciones que deben correr en estas máquinas virtuales. Por lo tanto para proveer escalabilidad horizontal es necesario poder crear máquinas, duplicarlas, borrarlas de forma sencilla e instalar aplicaciones en ellas de forma desatendida o automática. La intervención humana en este proceso es la clave, si logramos “Automatizar” el proceso de creación de las máquinas virtuels y la instalación de sus aplicaciones, cometeremos muchos menos errores y podremos crecer o decrecer fácilmente en un tiempo asombroso. Entonces podemos definir “Automation” como el uso de software para realizar acciones de configuración, instalación de software y solución de problemas, con la mínima intervención humana, reduciendo drásticamente la carga de trabajo del técnico operador. Las tareas de automatización son llamadas “Recetas” y normalmente son scripts de Python o Perl que ejecutan un conjunto de acciones en un orden preestablecido. Estas “Recetas” incluyen variables que nos permiten reutilizarlas, cambiando valores como IPs, dominios, paths, etc. También incluyen y lógica condicional, por lo que podríamos establecer reglas sobre ciertas condiciones y contextos, antes de algo suceda. Orchestation Para hablar de Orchestration me gusta usar la siguiente comparación. “Automatizar” y “Orquestar” es comparable con “Tareas” y “Procesos”. Si bien hay infinidad de definiciones y explicaciones sobre la relación entre “tareas” y “procesos” la diferencia fundamental es que el análisis de un proceso, permite aprovecharnos de la oportunidad de optimizar las tareas, estudiando relaciones, tareas simultáneas, repeticiones, etc. Entonces, la meta de la orquestación no es sólo es ejecutar automáticamente tareas o recetas en orden, sino aprovechar la oportunidad de optimizar los procesos, que nos hacen acelerar asombrosamente el (deployment process) de ambientes. Otra visión válida es que la orquestación reutiliza tareas automatizadas (recetas) y procesos predefinidos para lograr objetivos de aprovisionamiento y construcción de la infraestructura, de forma inteligente. Me atrevo entonces a definir a la Orquestación, como el uso de la Automatización para componer la arquitectura tecnológica, las herramientas y los procesos utilizados por operadores humanos, para entregar un servicio determinado. En nuestra próxima entrega vamos a profundizar sobre las herramientas disponibles para desarrollar Automation y Orquestation.