Ir al contenido
  1. Posts/

Que es Infraestructura como Código (IaC) y PORQUÉ deberias APRENDERLO

·1150 palabras·6 mins· loading · loading ·
Infraestructura infraestructura devops codigo cloud
Autor
Enmanuel Moreira
Ingeniero DevOps de día y aprendiz de Barman en mis tiempos libres, con experiencia en Kubernetes, Cloud, y DevOps. También disfruta de hacer stream de juegos, hablar de CI/CD, desplegar en producción un viernes con Terraform y automatizar tareas aburridas con Ansible.

En el mundo actual, donde pasamos desde la máquina física, pasando de la máquina virtual a los contenedores, se ha hecho necesario desplegar con la mayor rapidez y agilidad posible, recursos que permitan poner en linea un complejo sistema web de un e-commerce o algún ERP.

Para hacerlo lo mas rápido y simple posible, necesitamos de herramientas que permitan AUTOMATIZAR cada uno de los procesos de: escoger el servidor, particionar los discos, configurar el sistema operativo, levantar los servicios necesarios, aplicar reglas de firewall, entre muchos otros. Si bien la Infraestructura como Servicio (IaaS) soluciona parte de este problema, las tareas repetitivas de crear manualmente los servidores necesarios, hace la tarea menos eficiente. Afortunadamente los proveedores Cloud proporcionan una API o una interfaz donde, con el envío de comandos, se puede crear esta infraestructura de manera mucho mas ágil.

Por ello, se implanta un nuevo concepto de Infraestructura como Código, el cual vamos a desarrollar en este articulo.

PROMO DigitalOcean
#

Antes de comenzar, quería contarles que hay una promoción en DigitalOcean donde te dan un crédito de USD 200.00 durante 60 días para que puedas probar los servicios que este Proveedor Cloud ofrece. Lo único que tienes que hacer es suscribirte a DigitalOcean con el siguiente botón:

DigitalOcean Referral Badge

O a través del siguiente enlace: https://bit.ly/digitalocean-itsm

¿Qué es Infraestructura como Código?
#

Infraestructura como Código (IaC) es la práctica de definir y aprovisionar recursos informáticos (bien sea hardware o software) de una manera automatizada, a través de un formato que pueda ser leído por la máquina y facilmente entendido por quien lo escribe.

A pesar que IaC es a menudo usado en ambientes Cloud, no necesariamente hay que usar CLoud para desplegar IaC. A medida que el sistema de gestión de la infraestructura física lo permita, tambien se podría desplegar IaaC.

Existen diversas herramientas para logar este propósito, algunas propietarias como CloudFormation de AWS, Resource Manager de Microsoft Azure, Oracle Resource Manager, Heat de OpenStack, solo funcionan en sus respectivos productos, obligandote a “casarte” con el proveedor de Cloud. Sin embargo, hay una herramenta que no importa cual proveedor escojas (siempre que lo soporte), es el caso de Terraform de la empresa HashiCorp.

Objetivos de IaC
#

  • Automatizar los procesos manuales al máximo posible.

  • Eliminar los límites entre las aplicaicones y los entornos en los que se ejecutan.

  • Establecer un flujo de trabajo flexible que facilite la colaboración de todos los implicados en el proceso de desarrollo en toda la empresa.

  • Presentar los cambios y movimientos de contenido de forma transparente y detallada en todo momento.

  • Lograr que la configuración del hardware sea tan verificable como la del software.

Valor Añadido y Ventajas
#

El valor de IaC puede englobarse en tres categorias medibles: costo (reducción), velocidad (ejecución más rápida) y riesgo (eliminación de errores y violaciones de seguridad)

La reducción de costos tiene como objetivo no solo ayudar a la empresa financieramente, sino tambien en términos de personas y esfuerzo realizado, lo que significa que al eliminar el componente manual, las personas son capaces de encocar esfuerzos en otras áreas en común.

La automatización de la infraestructura permite aumentar la velocidad con la que se configura y tiene como objetivo proporcionar visibilidad para auydar a los equipos de la empresa a trabajar de forma más rápida y eficiente, eliminando, de esta manera, el riesgo asociado a los errores humanos, como la mala configuración manual; disminuyendo el tiempo de inactividad y aumentando la confibilidad.

Entornos Propicios para la Automatización
#

Ya no basta con tener interfaces y API para poder programar la infraestructura. Queremos gestionarla de forma sencilla. Y, para ello, qué mejor que ofrecer a los informáticos para que gestionen su infraestructura la programación, que es un recurso que ya conocen. Así surge el paradigma Infraestructure as Code (IaC) y las herramientas de automatización de configuración continua o Continuous Configuration Automation (CCA). En el mundo TI ya son muy conocidas herramientas como Ansible así como diferentes plataformas de gestión en la nube o CMP. Pero esta automatización no es exclusiva del mundo TI, también ha llegado con fuerza a los entornos de telecomunicaciones de la mano de la virtualización de la red y NFV. Tecnologías como Open MANO, ONAP o TOSCA aparecen para modelar y automatizar los despliegues de servicios de red e infraestructuras.

Cualquier entorno de infraestructuras es susceptible de someterse a las mejores prácticas de la IaC y la automatización. No obstante, algunos son más propicios que otros. En mi opinión, tres factores fundamentales caracterizan a los entornos más propicios:

  • Gran volumen de infraestructura. Para que automatizar algo no sea un esfuerzo inútil, tiene que haber tareas repetitivas, muchos elementos similares que gestionar.

  • Alto ritmo de innovación. En entornos donde la innovación es muy alta, la probabilidad de que se ejecuten despliegues “a mano” no controlados por parte de administradores o usuarios avanzados, es elevada. La IaC ayuda a sacarlo a la luz y tener orden.

  • Necesidad de estandarización. Al contrario que en Telecomunicaciones, en TI no existen organismos internacionales que estandaricen el uso de las tecnologías. Esto obliga a cada organización a crearse sus propios estándares, normativas y arquitecturas de referencia. Tradicionalmente esta normativa se implementaba en documentos que, con los años, acababan desactualizados en algún rincón perdido de la Intranet de usuarios. La IaC convierte ese documento que nadie leía en un proceso tecnológico que gobierna la infraestructura y asegura su cumplimiento.

Dado que ni un entorno mainframe ni un sistema UNIX legado cumplen los requisitos anteriores no son adecuados para obtener los beneficios de IaC. Una red de telecomunicaciones, por ejemplo, reúne las dos primeras condiciones pero, al tener estándares y arquitecturas muy claras y regladas, hay mucho más orden que en la TI y los procesos de creación de red están muy consolidados. Los entornos de business intelligence y big data son los más idóneos, pues reúnen las tres características, por ello la IaC suele aparecer de forma casi espontánea desde el inicio de estos proyectos.

Principal

¿Por qué deberías estar aprendiendo Infraestructura como Código?
#

La Infraestructura como Código es hoy en día, una parte crucial de la filosofía DevOps. La computación en la nube es apenas la punta del iceberg, IaC lleva a la computación en la nube a su máximo potencial, y eso libera tanto a Administradores de Sistemas como a Desarrolladores a realizar tareas manuales sujetas a errores humanos, lo que impacta significativamente en los costos y provee eficiencia en todas las etapas del proceso de desarrollo de software.

Como Adminstrador de Sistemas, aprender Infraestructura como Código te permitirá, además de avanzar con tu carrera profesional, te brindará una serie de habilidades en las cuales podrás agilizar y ser mas productivo en tareas de alto valor, eliminar aquellos procesos repetivivos y enfocar la atención en otras áreas.

Te recomiendo comiences hoy mismo a aprender IaC y automatizar tu propio laboratorio casero :)

Espero les haya gustado este artículo, ¡hasta la próxima!