Getty Images/iStockphoto
Qué significa hacer «todo como código» en operaciones de TI
Si el concepto de «todo como código» le parece abrumador, no se preocupe. Aprenda lo que significa, cómo empezar y las formas en que podría estar usándolo ya.
Quienes trabajan en TI o DevOps probablemente estén familiarizados con la infraestructura como código: la práctica de gestionar servidores, IaaS en la nube y otros recursos de infraestructura con código.
Pero los equipos de hoy en día no necesitan conformarse con la infraestructura como código (IaC). En su lugar, pueden adoptar un enfoque basado en el código para gestionar sus recursos con una práctica conocida como todo como código.
Este artículo explora lo que es todo como código, los beneficios del enfoque y qué herramientas pueden utilizar los equipos de operaciones de TI y DevOps para ponerlo en práctica.
¿Qué es todo como código?
Todo como código es un enfoque de las operaciones de TI y DevOps que utiliza el código para definir y gestionar recursos de todo tipo, incluida la infraestructura.
Todo como código permite a los equipos utilizar archivos de configuración basados en código para definir los requisitos de seguridad de las aplicaciones o para gestionar los procesos de CI/CD en la cadena de entrega de software.
Todo como código no significa que el código gestione todos los recursos o procesos. Siempre será necesario realizar algunas tareas manualmente. Lo que sí significa es que un equipo se compromete a utilizar el código para gestionar los recursos y procesos siempre que sea posible.
En este sentido, todo como código es más una filosofía que una práctica específica, aunque tiene raíces en prácticas y herramientas específicas, como veremos a continuación.
Ejemplos de todo como código
Todo como código ha existido como una estrategia consciente desde aproximadamente 2019. Sin embargo, algunas de las prácticas etiquetadas como todo como código han existido por más tiempo bajo diferentes nombres.
IaC es el ejemplo más obvio. Los equipos de operaciones de TI han estado utilizando IaC durante aproximadamente una década. En los últimos años, los equipos han empezado a ver la IaC como una faceta de un enfoque más amplio, centrado en el código, de las operaciones de TI, en lugar de una práctica independiente.
La gestión de la postura de seguridad en la nube –que utiliza el código para definir los requisitos de seguridad de los recursos en la nube y para detectar los errores de configuración– y la gestión de los derechos de la infraestructura en la nube –que hace lo mismo con las políticas de acceso en la nube– son ejemplos de operaciones que caen bajo el paraguas de todo como código. Estas operaciones también existían antes de que todo como código se convirtiera en una práctica. La automatización de pruebas de software es otra práctica que se basa en configuraciones basadas en el código para definir y gestionar procesos complejos.
Otros ejemplos de prácticas de «todo como código» son más novedosos. El uso de un motor de políticas central para gestionar las reglas de control de acceso en diferentes tipos de entornos, como una nube pública y un entorno local, por ejemplo, se ha convertido en una estrategia popular de todo como código.
Beneficios de todo como código
Hay varias razones por las que los equipos han adoptado un enfoque de todo como código para las operaciones de TI.
Consistencia
Los administradores pueden aplicar configuraciones uniformes en un gran entorno. Ya sea la configuración de la infraestructura, las herramientas CI/CD o las políticas de control de acceso a la nube, todo como código ayuda a los ingenieros a evitar el riesgo de configuraciones incoherentes.
Escalabilidad
Los administradores pueden aplicar una configuración determinada a tantos recursos o procesos como sea necesario. Esto beneficia a las operaciones que aumentan de tamaño con el tiempo. Si un equipo de TI dispone de código para definir las configuraciones de un determinado tipo de recurso o proceso, puede añadir nuevas instancias sin tener que reconfigurar cada una de ellas.
Control de versiones
Los administradores pueden hacer un seguimiento de cómo cambian las configuraciones a lo largo del tiempo, de forma similar al código fuente, y asegurarse de que se controlan las versiones. Esto facilita la determinación de los cambios, si los hubiera, que se hicieron antes de que se produjera un problema o la vuelta a una versión anterior de la configuración si fuera necesario.
Auditabilidad
Los administradores pueden examinar los recursos de configuración automáticamente auditando los archivos de código. Esto es más eficiente que comprobar los recursos individuales para validar la configuración.
Portabilidad
Los equipos de TI que utilizan todo como código se beneficiarán de la definición de sus configuraciones en código neutro para el proveedor, en lugar de gestionarlas con las herramientas de configuración de varios proveedores.
Por ejemplo, un script de pruebas de software escrito en Selenium, el marco de automatización de pruebas de código abierto, es probable que se ejecute en cualquier marco de automatización de pruebas. Esto significa que los administradores pueden trasladar los entornos de prueba de las instalaciones a la nube, o de una nube a otra, sin tener que aprender un nuevo conjunto de herramientas o actualizar las configuraciones de prueba para cada migración.
Herramientas para todo como código
Aunque algunas herramientas están etiquetadas para todo como código, existen varias herramientas que permiten un enfoque de todo como código para DevOps u operaciones de TI. Para empezar, utilice una herramienta IaC de código abierto que admita otros tipos de automatización más allá de la infraestructura como código.
Puppet y Ansible son buenos ejemplos. Aunque estas herramientas suelen incluirse en la categoría de automatización de la infraestructura, también gestionan la entrega de aplicaciones, los flujos de trabajo y, hasta cierto punto, las operaciones de seguridad mediante código.
Los motores de políticas, como Open Policy Agent, también son recursos útiles. Los motores de políticas permiten a los equipos definir configuraciones para diferentes tipos de sistemas utilizando un lenguaje central y un marco de aplicación. En comparación con herramientas como Puppet y Ansible, los motores de políticas se centran menos en los entornos, las aplicaciones y la infraestructura y más en el control de acceso. Los motores de políticas llenan algunos de los vacíos que otros tipos de herramientas de automatización basadas en código no pueden abordar.
Por el momento, no existe una herramienta universal de «todo como código». Los administradores deben utilizar varios tipos de herramientas de automatización para implementar todo como código en un entorno de TI.
Al mejorar la coherencia, la escalabilidad y la precisión, todo como código proporciona beneficios que antes estaban restringidos a ciertos dominios, como la automatización de la infraestructura, a casi todos los aspectos de las operaciones de TI. Aunque es probable que los equipos de DevOps y de operaciones de TI siempre tengan que gestionar algunos flujos de trabajo de forma manual, es de esperar que se produzca una mayor automatización basada en el código a medida que todo como código se convierta en una estrategia generalizada.