La mayoría de los desarrolladores no utilizan la infraestructura como código (IaC), argumenta el líder tecnológico de AWS, Chris Munns. Pero el 10% al 15% de los desarrolladores que utilizan tecnologías de desarrollo modernas como IaC se llevan el botín. Incluso si la audiencia de IaC sigue siendo relativamente pequeña, el interés en Python y la inteligencia artificial está acelerando la adopción, como señala en una entrevista el director ejecutivo de Pulumi, Joe Duffy. En las empresas que ven la tecnología como una ventaja competitiva, los desarrolladores están profundizando en la infraestructura. IaC es su herramienta preferida para lograrlo con éxito.
La nueva normalidad de TI
En los días en que los desarrolladores tenían que solicitar recursos de TI, estaban en gran medida aislados de los mundos de las bases de datos, los almacenes de valores clave, las colas de mensajes, las redes y otras preocupaciones de «infraestructura» fundamentales. Los desarrolladores eran dueños del código de la aplicación, los arquitectos empresariales eran dueños de la infraestructura de la aplicación y los servidores, la configuración y la escala de TI eran propiedad de TI.
Luego, la computación distribuida (una ola que comenzó con las máquinas virtuales, creció con los contenedores y luego llegó con Kubernetes) empujó a los desarrolladores hacia el extremo más profundo de la infraestructura de la nube. Por muy trilladas que se hayan vuelto las frases “desplazarse a la izquierda” y “tú lo construyes, eres el dueño”, reflejan las responsabilidades mucho más profundas que el desarrollador promedio tiene en la actualidad. Los desarrolladores no sólo escriben aplicaciones, sino que también hacen todo lo que alguna vez estuvo en el terreno de los especialistas en infraestructura.
Mantener los recursos y marcos informáticos requiere tiempo y conocimientos, y ha sido un estado constante de agitación tanto para los desarrolladores como para los equipos de la plataforma, lo que les permite encontrar la abstracción correcta de exactamente lo que debería ser esa interfaz de desarrollador para los recursos de la nube. JavaScript hizo que el navegador web fuera programable y desencadenó un renacimiento de las aplicaciones web y las experiencias móviles que aún está en marcha. Estamos en la cúspide de un avance similar para hacer que la infraestructura de la nube sea verdaderamente programable para los desarrolladores.
Las primeras oleadas de infraestructura como código
La infraestructura como código (IaC) está de moda hoy en día, pero en realidad no es nueva. El concepto se remonta a más de 50 años y describe los principios básicos de la automatización de infraestructuras. Así como la arquitectura orientada a software (SOA) evolucionó la arquitectura de aplicaciones desde aplicaciones monolíticas hasta patrones de microservicios, IaC ha sido el movimiento lento que está desafiando cuáles deberían ser los pilares básicos de nuestra forma de pensar en la infraestructura de la nube.
IaC realmente apareció en el mapa en la década de 2010, cuando Puppet, Chef y Ansible introdujeron métodos de IaC para la configuración de máquinas virtuales. Chef era muy querido por permitir a los desarrolladores utilizar lenguajes de programación como Ruby y por la reutilización y el intercambio que conllevaba poder utilizar las convenciones de un lenguaje familiar.
Durante la siguiente década, el movimiento IaC entró en una nueva era a medida que las plataformas de los proveedores de nube pública maduraban y Kubernetes se convertía en el modelo operativo de nube de facto. Terraform de HashiCorp se convirtió en el modelo de IaC, introduciendo nuevas abstracciones para la configuración de recursos de la nube y trayendo un lenguaje de dominio específico (DSL) llamado HashiCorp Configuration Language (HCL) diseñado para ahorrar a los desarrolladores la plomería de la infraestructura de la nube de nivel inferior. AWS CloudFormation y Azure Resource Management fueron otros dos principales contendientes en esta ola de IaC.
¿Fueron los lenguajes de dominios específicos un giro equivocado?
En esa evolución hacia DSL, el director ejecutivo de Pulumi, Joe Duffy, cree que el movimiento IaC tomó un rumbo equivocado. “Pasé años en la comunidad de lenguajes de programación”, dice, “y teníamos un dicho que decía que ‘todo lenguaje de dominio específico está destinado a convertirse en un lenguaje de programación de propósito general, accidental y mal diseñado’. “La complejidad de la nube rompe con los DSL, YAML y los lenguajes de marcado.
Duffy dice que el problema general con los DSL es cómo alejan a los desarrolladores y equipos de ingeniería de plataformas de administrar la infraestructura de la nube con convenciones de lenguajes de programación familiares. «Ciertamente, si nos fijamos en IaC, se ha ido recreando lentamente la rueda», argumenta Duffy, «desde la riqueza del lenguaje, la abstracción y la reutilización, los administradores de paquetes, las herramientas de prueba, el análisis estático, los editores y sus funciones como la finalización de declaraciones, la verificación interactiva de errores y documentación, refactorización y mucho más. Las trampas son un jardín amurallado que prohíbe activamente a los desarrolladores aprovechar las capacidades de la nube y al mismo tiempo obstaculiza la productividad del equipo de infraestructura”.
Usar lenguajes familiares con infraestructura en la nube
«Tratar a los desarrolladores con guantes de seda cuando se trata de la nube es un error que veo todo el tiempo», comenta Duffy. «IaC es emocionante porque convierte toda la nube en un conjunto de bloques de construcción programables y componibles que se pueden utilizar para crear aplicaciones más ricas y potentes». Como industria, hemos ido más allá de los servidores de aplicaciones de una sola máquina y los sistemas operativos de una sola máquina hacia la computación distribuida en la nube, orquestada por Kubernetes. Pero mientras que los enfoques DSL para IaC intentan ocultar esa complejidad de infraestructura a los desarrolladores, Pulumi les permite usar las convenciones integradas en los lenguajes de programación que ya usan como interfaz principal para la nube.
“Creo firmemente que debemos apoyarnos en los hombros de gigantes siempre que podamos”, subraya Duffy. “Hay suficientes problemas difíciles que resolver. No necesitamos crear artificiales sólo por diversión”.
El enfoque de Pulumi hacia IaC es una infraestructura multilenguaje, con soporte para Node.js (JavaScript, TypesScript), Python, Go, .Net (C#, F#, VB) y Java. El catálogo de proveedores Pulumi compatibles abarca más de 150 proveedores de infraestructura diferentes, y no solo las grandes nubes, sino también empresas como Cloudflare, Snowflake, MongoDB, Confluent y muchas más.
“Usando idiomas [developers] Lo que ya sabemos elimina un enorme obstáculo mental al realizar IaC”, afirma Duffy. «Convierte los recursos de la nube en bloques de construcción programables que se pueden unir como cualquier otro objeto en su idioma favorito». ¿Cuál es el truco? Y continúa: “La parte difícil entonces es aprender sobre esos componentes básicos específicos, que posiblemente constituyen la ‘complejidad real’ inherente al dominio del problema. Básicamente, utilizar un lenguaje familiar elimina toda la complejidad accidental, elimina la niebla y permite que la gente se concentre en resolver problemas reales”.
Un enfoque de infraestructura que prioriza el idioma
Cuando pensamos en dominios de infraestructura de aplicaciones en lenguajes maduros, como Java con J2EE y las vastas capacidades de Java para manejar concurrencia y código multiproceso, los desarrolladores tienen décadas de dura experiencia aprovechando los primitivos de sus lenguajes favoritos. Según Duffy, este deseo básico de los desarrolladores y equipos de plataformas de utilizar las convenciones del lenguaje con las que ya están familiarizados es especialmente fuerte con Python y la IA. Mientras que los DSL tienen que doblarse y retorcerse para lidiar con la complejidad, los lenguajes maduros como Python resuelven estos problemas de escala de manera inmediata.
«La nube es una supercomputadora gigante y la IA es el mayor consumidor de esa supercomputadora que jamás hayamos visto», declara Duffy. «En este mundo, poder programar la supercomputadora de manera flexible y lidiar con la complejidad que surge a esa escala es exactamente la razón por la que, para empezar, creamos lenguajes de programación increíbles». Los desarrolladores realmente no quieren meterse con la infraestructura. “Aunque la infraestructura impulsa todas estas nuevas experiencias de IA, no es en lo que la mayoría de los ingenieros de IA se levantan por la mañana pensando en eso”, argumenta Duffy. «El uso de Python lo convierte de una idea de último momento desordenada y sucia en algo hermoso y elegantemente programable, como cualquier otro software».
Esta batalla entre DSL y lenguajes de programación generales en el espacio IaC no es nueva. En 2020, Escribí sobre nuevos modelos de lenguajes de programación declarativos. y cómo contrastaban con los lenguajes imperativos en este dominio de IaC. Lo nuevo en esta batalla entre el lenguaje declarativo y el lenguaje de propósito general de IaC es la fiebre del oro de la IA. Python es la pala que utilizan decenas de millones de desarrolladores, y en este momento existe un incentivo especial para poder razonar con la infraestructura a través de la lente de su lenguaje principal.
Copyright © 2024 IDG Communications, Inc.