Infraestructura como código: ¿qué es y por qué debería importarte?
Publicado el
1 de septiembre de 2020
Por:
Exigo
La necesidad es la madre de la invención, sin duda, pero también se podría argumentar que la invención es la madre de la necesidad, especialmente en una era impulsada por la tecnología de la información. Tomemos como ejemplo Internet. Su invención dio lugar a ideas antes inimaginables que rápidamente se convirtieron en necesidades. En esta etapa avanzada de la era de la información, la conectividad a Internet y el acceso ubicuo a través de la web son necesidades básicas.
Para que su negocio siga siendo relevante y competitivo hoy en día, no solo necesita presencia en la web, sino también herramientas que le permitan aprovechar el poder de Internet para simplificar la creación, gestión y distribución de los recursos que alojan la solución de software adecuada para su sector. La infraestructura como código es uno de los frutos tecnológicos de esta necesidad empresarial.
¿Qué es la infraestructura como código?
La infraestructura como código es código que incluye definiciones legibles por máquina que pueden automatizar el proceso de aprovisionamiento y configuración de los recursos que alojarán una solución de software.

La infraestructura como código puede ejecutarse en un centro de datos local para simplificar la gestión de los recursos de dicho centro. También puede contener código propietario que se ejecuta en un centro de datos privado y que posteriormente se migra a la nube. Este tipo de soluciones suponen una mejora con respecto a la gestión manual constante de los servidores bare metal que componen los centros de datos.
Sin embargo, este tipo de soluciones no aprovechan otra ventaja potencial de ejecutar la infraestructura como código. Cuando la infraestructura codificada está diseñada para comunicarse directamente con una nube utilizando las interfaces de programación de aplicaciones (API) de la nube, tanto ella como la plataforma en la que está configurada para ejecutarse aprovechan al máximo las ventajas de estar en la nube, incluido el acceso ilimitado a recursos que siempre utilizan la última tecnología.
Microsoft Azure es una de las principales plataformas de nube pública y ha sido pionera en el desarrollo de las API y las plantillas de recursos que permiten la infraestructura como código. En Exigo, nuestra infraestructura como código se comunica con la plataforma Azure aprovechando estas API para asignar y configurar recursos. Cuando desarrollamos nuestra infraestructura y plataforma codificadas, utilizamos en gran medida .NET, un lenguaje de programación desarrollado por Microsoft que, como es lógico, es un ciudadano de primera clase en Azure. (Cuando digo «ciudadano de primera clase», me refiero a que Azure reconoce y acoge con agrado .NET y que, a su vez, .NET funciona bien y cómodamente en el entorno de pruebas de Azure).
Nuestro uso de la información como código automatiza el proceso de gestión de nuestros centros de datos basados en la nube, creando y proporcionando automáticamente nuevos recursos (como bases de datos y máquinas virtuales) según sea necesario.
¿Por qué debería importarte?
La infraestructura como código, y concretamente nuestra implementación de la misma, ofrece varias ventajas. (Algunas de ellas coinciden con las «Ventajas de la computación en la nube»).
- Aprovisionamiento instantáneo
- Escalabilidad
- Pruebas antes del lanzamiento
- Fiabilidad
Aprovisionamiento instantáneo:
De la compra a la productividad en un instante
Cuando eliges una solución de software como servicio (SaaS) para optimizar los procesos de tu negocio de venta directa, el tiempo que tardas en pasar de la compra a la productividad puede ser de meses, semanas o minutos.
La forma en que hemos diseñado e implementado nuestra infraestructura como código permite esto último, una ventaja conocida como «aprovisionamiento instantáneo». Lo que hacemos es que, cuando decidimos crear un recurso, como una base de datos o una máquina virtual, utilizamos una plantilla de Azure Resource Manager (ARM) para definir no solo el recurso que queremos, sino todas las propiedades asociadas a ese recurso, y luego guardamos ese código en un repositorio.
Esto nos permite crear infraestructura para nuevos clientes simplemente ejecutando el código guardado, lo que a su vez aprovisiona automáticamente los recursos necesarios. Esto nos permite poner en marcha un cliente en cuestión de minutos tras la firma del contrato.
Cuando tus nuevos recursos se asignan en la nube, recibes automáticamente tus credenciales de inicio de sesión para que puedas empezar a personalizar nuestra solución y, potencialmente, recibir tu primer pedido en unas pocas horas.
Escalabilidad:
El cielo es el límite
La escalabilidad es la capacidad de un sistema para asignar recursos y, de ese modo, mejorar el rendimiento según sea necesario. Existen dos métodos de escalado: el escalado vertical y el escalado horizontal.
El escalado vertical implica añadir o actualizar el hardware existente. Este proceso requiere una gestión manual que resulta costosa y no siempre permite una expansión fluida.
El escalado horizontal implica el aprovisionamiento automático de recursos cuando y según sea necesario, una pequeña función muy útil que es posible cuando la infraestructura se implementa como código.
Nuestra infraestructura codificada contiene métricas que dictan los requisitos de rendimiento, de modo que si la carga de un cliente resulta repentinamente demasiado pesada para los recursos que está utilizando, nuestra solución proporciona automáticamente acceso a más recursos.
Nuestra solución es como una banda elástica que se expande y contrae para adaptarse rápidamente a sus necesidades de aumento o reducción de cargas según la demanda. El proceso es fluido, lo que significa que usted no notará nada, solo obtendrá la recompensa de obtener siempre el rendimiento por el que paga y no pagar por recursos que no utiliza.
Dado que nuestra solución se diseñó para comunicarse directamente con Azure, nuestros clientes obtienen las ventajas del escalado vertical y horizontal sin las complicaciones que estos conllevan. Nuestra solución garantiza un escalado horizontal automático y sin interrupciones, y Azure gestiona el coste y las complicaciones del escalado vertical.
En resumen: cuando su sitio web necesita más potencia, nuestra solución se adapta sobre la marcha para gestionar el aumento de carga. Y como estamos en Azure, no hay límites en cuanto a la carga que podemos gestionar.
Pruebas antes del lanzamiento:
Smooth Computing Insurance
Cuando implementas la infraestructura como código, tu infraestructura recibe el mismo tratamiento que cualquier otro código, lo que ofrece ventajas como la facilidad de las actualizaciones, que pueden probarse antes de entrar en producción.
Con la infraestructura como código, cualquier cambio en la infraestructura se puede realizar en una única ubicación y, a continuación, se puede probar para garantizar que no haya problemas de compatibilidad e integración (entre otras cosas) antes de que entre en producción.
Por ejemplo, cuando es necesario, Exigo realiza cambios en su infraestructura codificada, prueba los cambios y solo entonces los aplica a todos los elementos de la infraestructura en producción directamente a través de las API de Azure mediante sus plantillas en línea. Este proceso elimina el riesgo de error humano: se realiza y se prueba el cambio una vez y se aplica de forma generalizada.
Fiabilidad:
Restablecer las «i» punteadas y las «t» cruzadas.
Otra ventaja de ejecutar nuestra infraestructura como código en Azure es que podemos aprovisionar nuestra plataforma en cualquier parte del mundo con solo hacer clic en un botón.
Por ejemplo, supongamos que un centro de datos de Azure en el este de Estados Unidos deja de funcionar y da la casualidad de que su base de datos y otros recursos se ejecutaban en ese centro de datos que ha fallado. Gracias al diseño de nuestra solución, podemos aprovisionar todo muy rápidamente en otro lugar (Australia, el oeste de Estados Unidos, Europa, cualquier lugar) para que el tiempo de inactividad asociado a ese desastre sea mínimo, una ventaja conocida como conmutación por error.
De hecho, prometemos a nuestros clientes no solo un tiempo de inactividad mínimo en caso de fallo, sino también una réplica exacta de lo que han pagado, con todos los detalles, tal y como estaba. Todos los datos de Exigo, incluidos los datos de nuestros clientes, se replican en tiempo real en más de un centro de datos. Además, todas nuestras bases de datos se pueden restaurar en cualquier momento durante 35 días, lo que significa que nuestros clientes pueden elegir cualquier minuto, incluido este, y restaurar la base de datos tal y como estaba en ese momento.
Las soluciones SaaS que se limitan a centros de datos locales o privados y siguen ejecutando sus bases de datos desde sus propios centros de datos deben asumir los gastos asociados a la configuración y gestión de ubicaciones redundantes para garantizar la copia de seguridad en caso de fallo. Estos gastos se transfieren directamente a sus clientes. Exigo aprovecha la potencia de la nube de Azure para garantizar la protección de sus datos a un coste menor y sacar el máximo partido a la escala global de la plataforma Azure.
Infraestructura como código:
Invención y necesidad
Por lo tanto, cuando busque una solución basada en la web que satisfaga las necesidades de su empresa, tenga en cuenta que las soluciones más rápidas y eficientes se basan en una infraestructura como código que interactúa directamente con una nube pública. Considere la posibilidad de hacer preguntas como estas a los posibles proveedores de servicios:
- ¿Su solución se ejecuta en las instalaciones o en la nube?
- ¿Qué tecnología utiliza para gestionar los recursos informáticos y permite esa tecnología la infraestructura como código?
- ¿Su solución permite definir la infraestructura codificada a través de una API o una plantilla?
- ¿Su solución automatiza el proceso de creación y aprovisionamiento de recursos?
- ¿Tu solución garantiza que, al crear nuevos recursos, siempre obtengas lo que deseas?
Glosario
Máquina virtual:Una máquina virtual es una emulación de un sistema operativo completo que se ejecuta en la memoria de otro sistema operativo, lo que básicamente proporciona a un único ordenador host la funcionalidad de dos ordenadores.
API:Una interfaz de programación de aplicaciones (API) es el intermediario que permite que diferentes sistemas informáticos se comuniquen de manera eficaz sin que ninguno de ellos tenga que compartir información confidencial. (Imagina que necesitas comunicar la misma solicitud a cuatro personas que hablan idiomas diferentes. Una API es como el traductor que comunica tu mensaje y te devuelve cuatro respuestas en el idioma que tú entiendes).
Plantilla de Azure Resource Manager (ARM):se utiliza para implementar infraestructura como código para soluciones de Azure. La plantilla es un archivo JSON (Javascript Object Notation) que define la infraestructura y la configuración de la solución. La plantilla permite definir un recurso sin tener que escribir una secuencia de comandos de programación para crearlo. En estas plantillas, se especifican los recursos que se desean crear y sus respectivas propiedades.
Base de datos:Conjunto estructurado de datos que se ejecuta en un ordenador y al que se puede acceder electrónicamente.
Centro de datos:Conjunto de ordenadores (posiblemente ubicados en un único edificio o conectados en red) que almacenan, procesan y distribuyen grandes cantidades de datos.
Conmutación por error:La capacidad de aprovisionar rápidamente un gemelo idéntico de un programa o plataforma informática para minimizar el tiempo de inactividad en caso de un fallo debido, por ejemplo, a un desastre natural.
Alta disponibilidad:proceso que consiste en ejecutar varias instancias de un programa de software, una aplicación o una plataforma en diferentes servidores que pueden estar ubicados en distintas partes del mundo para garantizar un tiempo de inactividad cero. El proceso es eficaz, pero muy costoso. Con la alta disponibilidad, se paga por recursos que no se utilizan, pero que se adquieren por si acaso.
Nube pública:Propiedad y operadas por proveedores externos, las nubes públicas proporcionan recursos informáticos (como servidores y almacenamiento) a través de Internet. Los consumidores acceden a estos servicios mediante un navegador web.
SaaS:El software como servicio o SaaS (pronunciado «sass») es un método de distribución de software mediante una suscripción en línea a la que el cliente suele acceder a través de la web. El SaaS se aleja del paradigma tradicional de crear un programa, instalarlo y ejecutarlo en un ordenador físico.
Escalado vertical:proceso de añadir más recursos a un sistema informático existente para aumentar o mejorar su rendimiento. Por ejemplo, el escalado vertical podría consistir en añadir servidores bare metal más potentes a un centro de datos o aumentar la memoria de los ya existentes.
Escalado horizontal:proceso de aumentar el número de instancias de una solución de software para gestionar un aumento de la carga (y, por lo tanto, mejorar el rendimiento) o reducir las instancias para garantizar que el cliente solo pague por lo que utiliza.
Aprovisionamiento:proceso de inicio o apagado de una instancia de una plataforma que se ejecuta en la nube. Con una plataforma de software que se ejecuta sobre una infraestructura como código diseñada para interactuar directamente con la nube, toda la plataforma se puede iniciar con solo hacer clic en un botón.






