Todo como código (1)

«Todo como código» (Everything as Code, EaC)1 es la práctica de describir las partes de un sistema informático como código (o al menos como una especificación formal)2. Las indicaciones de construcción, inicialización, propiedades u otros elementos que describen de dónde se toma o serán tomados todos aquellos recursos que necesita un sistema informático o software para arrancar, trabajar, y dónde dejará sus resultados es lo que tradicionalmente se ha llamado configuración y usualmente es referido como «archivos de configuración».

Las facilidades de virtualización y el cómputo en la nube han requerido (y a su vez han permitido) que las especificaciones de configuración se extendieran a elementos de cómputo y así a la organización de la infraestructura que los soporta. La infraestructura como código (IaC) (en inglés: Infrastructure as Code)3 es la culminación de este camino, donde el proceso de gestión y aprovisionamiento de un centro de cómputo no sólo se registra en archivos de configuración legibles por máquina sino que también se logra por medio de éstos y así permitir alcanzar la automatización en su «aprovisionamiento».

Mediante archivos de configuración y software que mediante la interpretación de dichos archivos se encargan de gestionar y recrear los recursos indicados, la infraestructura de TI podrá ser gestionada desde equipo físico hasta máquinas virtuales y contenedores. Las ventajas de este enfoque pueden identificarse en términos de:

  • Trazabilidad: almacenar la configuración apoyándose en un sistema de control de versiones (como Git) donde existen controles para rastrear quién y por qué ha cambiado una configuración. Los cambios se pueden aplicar y revertir y se rastrean hasta un único usuario que realizó el cambio.
  • Repetible: los sistemas se pueden recrear en el tiempo, con otros proveedores u entornos.
  • Probado: la infraestructura y el código se pueden implementar, validar y promocionar en entornos de producción con confianza y seguridad de que se comportarán como se espera.
  • Recuperabilidad: si un servidor «muere» aleatoriamente, podrá crearse nuevamente desde la configuración almacenada.
  • Conocimiento compartido: cuando se utiliza ‘Todo como código’ para describir las partes del producto que se está desarrollando, la comprensión compartida entre desarrolladores y el person al de operaciones permitirá hablar un mismo idioma para describir el estado y los recursos necesarios.
  • Coherencia: permite capturar la infraestructura y los ajustes de configuración en un marco estándar (como Terraform). Este marco reduce el error humano y mejora la confiabilidad, ya que el sistema está controlado por versiones.
  • Escalabilidad: permite reproducir la configuración bajo demanda, permitiendo agregar o quitar recursos como se necesiten.
  • Portabilidad: independencia de la plataforma física.
  • Auditabilidad: gracias al control de versiones y a una visión centralizada de las dependencias e interacciones por los archivos de configuración.

Referencias

  1. Terence Wong, «What is Everything as Code?«, octopus.com, blog. Published: 2023.07.19; visited: 2023.09.13. URL: https://octopus.com/blog/what-is-everything-as-code.
  2. «Formal specification«, Wikipedia, web. Visited: 2023.09.13. URL: https://en.wikipedia.org/wiki/Formal_specification.
  3. «Infraestructura como código«, Wikipedia, web. Visited: 2023.09.13. URL: https://es.wikipedia.org/wiki/Infraestructura_como_c%C3%B3digo.

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.