El software se ha comido al mundo y la complejidad para elaborar este software ha subido. De un tiempo para acá ya no se necesitan únicamente desarrolladores backend o frontend, ahora surge la necesidad de ingenieros enfocados totalmente al diseño y creación de infraestructuras para el software. Estos son los tan famosos y deseados DevOps Engineers que entre algunas de sus responsabilidades están:
De estas responsabilidades es que nace la infraestructura como código cuyo enfoque es la automatización de infraestructura tomando algunos de los principios del desarrollo de software:
Tienes un archivo donde vas a definir tu infraestructura, sabes lo que quieres crear.
Si un servidor falla simplemente desechas ese servicio y creas de manera rápida una nueva instancia.
Tu archivo de definición es tu única fuente de la verdad. Todo sistema que instancies va a seguir las mismas especificaciones que le indiques en tu archivo de definición.
Escribe una definición de tu sistema una vez y utiliza este archivo la cantidad de veces que sean necesarias.
Una vez plasmada la definición de tu sistema es más sencilla darle seguimiento a los cambios que generes y ver qué cosas te hacen falta implementar.
Esto trae consigo varios beneficios y buenas prácticas como:
Terraform es una herramienta open source escrita en Go que sigue el enfoque de infraestructura como código. La gran ventaja de usar Terraform frente otras herramientas es que dentro de su lógica Terraform lo que hace es interactuar con las APIs de los proveedores de nube, ya sean nubes públicas como Azure, AWS o Google Cloud Provider o privadas como OpenStack.
Terraform permite crear infraestructura mientras que herramientas como Ansible nos ayuda con su configuración. Uniendo estas dos herramientas tienes un control total de tu infraestructura.
Dentro de Terraform las instancias de infraestructura se manejan de manera inmutable, si realizaste algún cambio sobre tu archivo de definición de un servidor, entonces este servidor se destruye y se crea uno totalmente nuevo.
Ansible sigue el lenguaje procedural, esto significa que debes indicar los pasos a seguir para configurar la infraestructura, programar el cómo hacer las tareas.
Mientras que en Terraform utilizamos el lenguaje declarativo, nosotros definimos las configuraciones que queremos y Terraform se encarga de realizarlo, programamos el qué.
Si eres DevOps o quieres iniciarte en este increible mundo de la infraestructura como código para agilizar los despliegues de tus aplicaciones te invito a que tomes el Curso de Infraestructura como código con Terraform.
Un poco tarde el comentario, acabo de terminar el curso y los puntos expresados aquí dan un buen abre boca de lo que vas a conseguir. Terraform es una herramienta poderosa y lo mejor es que ha evolucionado rápidamente en los últimos años
Muy buen artículo. No conocía Terraform y siempre me preguntaba qué significaba DevOps