Infraestructura como código | Exigo

Infraestructura como código: ¿Qué es y por qué debería importarle?

Infraestructura como código para la imagen del mejor proveedor mlm saas

Es cierto que la necesidad es la madre de la invención, pero también se puede argumentar que la invención es la madre de la necesidad, sobre todo en una era impulsada por la tecnología de la información. Pensemos en Internet, por ejemplo. Su invención generó ideas antes inimaginables que rápidamente se convirtieron en necesidades. A estas alturas de la Era de la Información, la conectividad a Internet y el acceso ubicuo a través de la red son necesidades básicas. 

Hoy en día, para que su empresa siga siendo relevante y competitiva, no sólo necesita una 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 albergan la solución de software adecuada para su sector. La infraestructura como código es uno de los vástagos tecnológicos de esta necesidad empresarial.

¿Qué es la Infraestructura como Código?

La infraestructura como código es un código que incluye definiciones legibles por máquina que pueden automatizar el proceso de aprovisionamiento y configuración de los recursos que albergarán una solución de software. 

Infraestructura como código para la imagen del mejor proveedor mlm saas

La infraestructura como código puede ejecutarse en un centro de datos in situ para simplificar la gestión de los recursos de ese centro. También puede contener codificación propia que se ejecuta en un centro de datos privado y posteriormente se migra a la nube. Este tipo de soluciones son mejoras a la constante gestión manual de servidores bare-metal que comprenden 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 se diseña para comunicarse directamente con una nube utilizando las interfaces de programación de aplicaciones (API) de la nube, tanto ella como la plataforma para la que está configurada aprovechan todas las ventajas de estar en la nube, incluido el acceso ilimitado a recursos que siempre están ejecutando 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", quiero decir que Azure reconoce y da la bienvenida a .net y que .net, a su vez, se desenvuelve bien y cómodamente en el sandbox 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 aprovisionando automáticamente nuevos recursos (como bases de datos y máquinas virtuales) según sea necesario.

¿Por qué debería importarle?

La infraestructura como código, y en concreto nuestra implementación de la misma, ofrece varias ventajas. (Algunas de ellas se solapan con las "Ventajas de la computación en nube").

  • Aprovisionamiento instantáneo
  • Escalabilidad
  • Pruebas antes del lanzamiento
  • Fiabilidad 

Aprovisionamiento instantáneo:
De la compra a la productividad en un santiamén

Cuando elige una solución de software como servicio (SaaS) para agilizar sus procesos empresariales de venta directa, el tiempo que tarda 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 sólo el recurso que queremos sino todas las propiedades asociadas a ese recurso y, a continuación, guardamos ese código en un repositorio. 

Esto nos permite crear infraestructuras para nuevos clientes simplemente ejecutando el código guardado, que a su vez aprovisiona automáticamente los recursos necesarios, lo que nos permite poner a un cliente en funcionamiento en cuestión de minutos tras la firma del contrato.

Cuando se asignen sus nuevos recursos en la nube, recibirá automáticamente sus credenciales de inicio de sesión para que pueda empezar a personalizar nuestra solución y, potencialmente, recibir su 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 mejorar así su rendimiento en función de las necesidades. Existen dos métodos de escalado: escalado vertical y escalado horizontal.

El escalado vertical implica añadir o actualizar el hardware existente. Este proceso requiere una gestión práctica que es costosa y no permite necesariamente una expansión sin fisuras. 

El escalado horizontal implica el aprovisionamiento automático de recursos cuando y como sea necesario, una pequeña y práctica función 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 de repente la carga de un cliente es demasiado pesada para los recursos que está utilizando en ese momento, nuestra solución le proporciona automáticamente acceso a más. 

Nuestra solución es como una banda elástica que se expande y contrae para acomodarse rápidamente a sus necesidades de aumento o reducción de cargas bajo demanda. El proceso es fluido, lo que significa que no sabrá lo que está pasando, solo cosechará 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 tanto del escalado vertical como del horizontal sin las molestias de ninguno de los dos. Nuestra solución garantiza un escalado horizontal automático y sin problemas, y Azure gestiona el coste y las molestias 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, el cielo es el límite en términos de la carga que podemos manejar.

Pruebas antes del lanzamiento:
Smooth Computing Insurance 

Cuando se implanta la infraestructura como código, la infraestructura recibe el mismo tratamiento que cualquier otro código, con las ventajas que ello conlleva, como actualizaciones sencillas que pueden probarse antes de pasar a producción. 

Con la infraestructura como código, cualquier cambio en la infraestructura puede realizarse en un único lugar y luego probarse para garantizar que no presenta problemas de compatibilidad e integración (entre otras cosas) antes de pasar a producción. 

Por ejemplo, cuando es necesario, Exigo realiza cambios en su infraestructura codificada, prueba los cambios y sólo 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: hacer y probar el cambio una vez y aplicarlo de forma generalizada. 

Fiabilidad:
Restablecer los puntos sobre las íes 

Otra ventaja de ejecutar nuestra infraestructura como código en Azure es que podemos aprovisionar nuestra plataforma en cualquier lugar del mundo con solo pulsar 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 estaban ejecutando en ese centro de datos averiado. Gracias a la forma en que hemos diseñado nuestra solución, podemos aprovisionar todo muy rápidamente en otro lugar (Australia, oeste de Estados Unidos, Europa... donde sea) 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 sólo un tiempo de inactividad mínimo en caso de fallo, sino también un duplicado exacto de aquello por lo que pagaron, con todos los puntos sobre las íes y todo tal y como estaba. Todos los datos de Exigo, incluidos los 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 un momento dado durante 35 días, lo que significa que nuestros clientes pueden elegir cualquier minuto, incluido éste, y restaurar la base de datos exactamente como estaba en ese momento.

Las soluciones SaaS que se limitan a centros de datos in situ o privados y siguen ejecutando sus bases de datos fuera de sus propios centros de datos deben hacer frente a los gastos asociados a la creación y gestión de ubicaciones redundantes para garantizar copias de seguridad en caso de fallo. Estos gastos repercuten directamente en sus clientes. Donde Exigo aprovecha la potencia de la nube Azure para garantizar que sus datos están protegidos a un coste menor y aprovecha al máximo la escala global de la plataforma Azure.

Infraestructura como código:
Invención y necesidad

Así que cuando busque una solución basada en web para satisfacer las necesidades de su empresa, tenga en cuenta que las soluciones más rápidas y eficientes se basan en infraestructura como código que interactúa directamente con una nube pública. Plantéate hacer preguntas como estas a los posibles proveedores de servicios:

  • ¿Su solución funciona in situ o en la nube?
  • ¿Qué tecnología utiliza para gestionar los recursos informáticos y permite esa tecnología la infraestructura como código?
  • ¿Permite su solución definir la infraestructura codificada mediante una API o una plantilla?
  • ¿Su solución automatiza el proceso de creación y aprovisionamiento de recursos?
  • ¿Su solución garantiza que, al crear nuevos recursos, obtenga siempre lo que desea?

Glosario

  • API: Una Interfaz de Programación de Aplicaciones (API) es el intermediario que permite a diferentes sistemas informáticos comunicarse eficazmente sin que ninguno de ellos tenga que compartir información privada. (Imagine que tiene que comunicar la misma petición a cuatro personas que hablan idiomas distintos. Una API es como el traductor que comunica su mensaje y devuelve cuatro respuestas en el idioma que entienden). 
  • Plantilla Azure Resource Manager (ARM): Se utiliza para implementar infraestructura como código para soluciones Azure. La plantilla es un archivo de Javascript Object Notation (JSON) que define la infraestructura y la configuración de su solución. La plantilla le permite definir un recurso sin tener que escribir una secuencia de comandos de programación para crearlo. En estas plantillas, usted especifica los recursos que desea crear y sus respectivas propiedades. 
  • Base de datos: Conjunto estructurado de datos que se ejecuta en un ordenador y es accesible electrónicamente.
  • Centro de datos: Conjunto de ordenadores (posiblemente alojados en un mismo edificio o conectados en red) que almacenan, procesan y distribuyen grandes cantidades de datos.
  • Failover: La capacidad de aprovisionar rápidamente un gemelo idéntico de un programa informático o plataforma para minimizar el tiempo de inactividad en caso de fallo debido a un desastre natural, por ejemplo. 
  • Alta disponibilidad: El proceso de ejecutar múltiples instancias de un programa de software, aplicación o plataforma en diferentes servidores que posiblemente estén en diferentes partes del mundo para garantizar un tiempo de inactividad cero. El proceso es eficaz pero muy costoso. Con la alta disponibilidad, usted paga por los recursos que no utiliza. 
  • Nube pública: Las nubes públicas, propiedad de terceros y gestionadas por ellos, ofrecen recursos informáticos (como servidores y almacenamiento) a través de Internet. Los consumidores acceden a estos servicios a través de un navegador web.
  • SaaS: El software como servicio o SaaS (pronunciado "sass") es un método de entrega de software mediante una suscripción en línea a la que el cliente suele acceder a través de la web. SaaS se aleja del paradigma tradicional de crear un programa, instalarlo y ejecutarlo en un ordenador físico.  
  • Escalado vertical: el proceso de añadir más recursos a un sistema informático existente para aumentar o mejorar el rendimiento. Por ejemplo, el escalado vertical podría consistir en añadir servidores bare-metal más capaces a un centro de datos o aumentar la memoria de los ya existentes.  
  • Escalado horizontal: el proceso de aumentar el número de instancias de una solución de software para gestionar un aumento de la carga (y mejorar así el rendimiento) o reducir las instancias para garantizar que un cliente pague sólo por lo que está utilizando.
  • Aprovisionamiento: El proceso de poner en marcha o apagar 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 puede ponerse en marcha con solo pulsar un botón.
  • 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, dando esencialmente a un único ordenador anfitrión la funcionalidad de dos ordenadores.
Arriba