A medida que los objetos físicos siguen el mismo curso que los digitales (y, en terminología del cofundador de Wired y ensayista Kevin Kelly, se “cognifican”), la programación se convierte en el nuevo tejido de nuestra realidad.
Entre la miríada de tendencias y tecnicismos para crear código más eficiente, robusto, o fácil de replicar (según el objetivo), destacan dos procesos imparables que marcarán las próximas décadas:
- entrenamiento de algoritmos (y no programar): a medida que se extiende el aprendizaje de máquinas (o análisis de datos usando algoritmos que “aprenden” y se reorganizan con la experiencia), los lenguajes de programación requerirán menos convenciones para crear y modificar código y surgirá un nuevo tipo de experto que “entrenará” a los nuevos algoritmos, en vez de “escribir” (y, por tanto, “ordenar” con rigidez) su comportamiento;
- código como biología: partiendo de la larga tradición de lenguajes que, desde los años 70, entienden la programación como un conjunto de objetos (Programación Orientada a Objetos, POO), varios gigantes tecnológicos, desde Google a Twitter, han creado una arquitectura de software que se comporta como un organismo multicelular sensible al entorno, compuesto por “objetos” que incluyen código e infraestructura, así como capacidad para replicarse si se detectaran riesgos en el contexto.
El código o la vida
El concepto de código como biología permite a los servicios de empresas como Google, instalados en redes de miles de servidores distribuidas en centros de datos de todo el mundo, permanecer activos incluso cuando se producen interrupciones y ataques continuos en diversos puntos.
Al contar con una infraestructura que concibe la integridad de su servicio como un sistema biológico, Google (a través de la infraestructura Borg) o Twitter (a través de Mesos) pueden servir a millones de clientes en todo el mundo desde el lugar más próximo accesible.
Como un sistema multicelular en el que el mínimo común denominador (la célula) tiene la “inteligencia” para alimentarse, replicarse, gestionar desechos o reagruparse, las nuevas infraestructuras de software como servicio usan “una vasta colección de piezas autónomas que trabajan en concierto”, explica Cate Metz en un artículo para Wired.
DevOps: una arquitectura de sistemas sensible al entorno
Si bien la programación orientada a objetos concebida por Alan Kay en los 70 ya partía de la idea de que cada objeto podía invocar tareas y ajustarse según sus necesidades, la nueva arquitectura con unidades autónomas e inteligencia para adaptarse a las necesidades de cada momento, conocida en la jerga como DevOps, inspira a un nuevo tipo de compañía que quiere acercar la misma filosofía de las empresas tecnológicas punteras a cualquiera.
En la pequeña startup Habitat ofrece este esquema de unidades autónomas de Google o Twitter como servicio a terceros, en una tendencia que Alex Polvi, consejero delegado de CoreOS llama GIFEE (siglas en inglés de “infraestructura de Google para el resto de nosotros”).
El creador de Habitat explica que su servicio ha sido diseñado para empaquetar aplicaciones enteras entro el equivalente a las células biológicas en un organismo:
- cada célula incluye no sólo la aplicación, sino todo lo necesario para ejecutar, supervisar y actualizar el código: las dependencias, tradicionalmente integradas en un programa marco (“framework”) y una arquitectura que depende de especificaciones técnicas locales, aparecen incorporadas en cada una de estas células;
- gracias al “conocimiento” integrado de cada unidad, es posible programar el sistema para que se adapte a las circunstancias (y así atender a averías, picos de tráfico, etc.) tanto de manera autónoma como usando atributos de administrador, escalando si es necesario desde un puñado de unidades a decenas, centenares o miles de ellas.
Emergentismo
Adam Jacob es el director de sistemas de Chef, la pequeña empresa de software como servicio con sede en Seattle que ha lanzado el servicio Habitat, que se encargaría de administrar la “inteligencia” del conjunto, coordinando la comunicación entre cada célula.
O lo que es lo mismo: las nuevas aplicaciones GIFEE se sirven del concepto filosófico de “emergencia” (según el cual un sistema es más inteligente que la suma de sus unidades), puesto que se convierten en un tejido que permite que toda la automatización -y aprendizaje de máquinas- viaje con la propia aplicación.
Las infraestructuras al estilo Google no sólo crecen, empequeñecen y se adaptan según estímulos, siguiendo el patrón de los organismos multicelulares, sino que crean un entorno con todo lo necesario para “entender” cualquier servicio diseñado, con independencia de sus particularidades.
Re-empaquetar en vez de reconstruir
En vez de crear una aplicación y tener que adaptarla penosamente a cada entorno o plataforma (según el programa marco, los servidores usados, la red de distribución, etc.), la infraestructura GIFEE las pone en marcha en cualquier máquina o red (sea local o en la nube).
El pionero de la programación orientada a objeto Alan Kay explica cómo, en los inicios de la informática, cuando los ordenadores carecían de sistema operativo y la información carecía de formatos estándar, cada programa debía incluir toda la información para ser ejecutado.
Esta limitación inspiró a programadores que trabajaban para el Ejército de Estados Unidos, a idear la manera de empaquetar estos primeros programas con coordenadas (“pointers”) en formato magnético, que permitieran a cualquier máquina (entonces, se trataba de gigantescos mainframes) ejecutar lo allí contenido sin necesidad de adaptarlo en función del entorno operativo.
Facilitar la multiplicación celular cuando es necesario
Esta idea no sólo inspiró Smalltalk, el lenguaje de programación orientada a objetos de Alan Kay, sino que ahora conforma la filosofía de la infraestructura de Google y otros gigantes digitales; el servicio Habitat quiere recrear este comportamiento en un nivel más elevado: no dentro de la aplicación, sino en el ecosistema, al conformar un programa capaz de extenderse por un red informática tan vasta como el usuario desee.
En esencia, cada paquete incluye toda la información que puede convertirse en instrucciones potenciales: todo lo necesario para “orquestar” la aplicación deseada a través del número de servidores o “instancias” (entidades de computación de los servicios de “cloud computing” como Amazon Elastic Compute Cloud -EC2-, el servicio de computación bajo demanda de Amazon Web Services -AWS-) deseadas.
Gracias a esta arquitectura, el modo de supervisión se convierte en el equivalente al sistema inmunitario de un organismo, ya que se sustituye un sistema centralizado (vulnerable a errores técnicos, problemas de mantenimiento, ataques, etc.) por otro que distribuye la tarea de un modo orgánico, lo que reduce dramáticamente las posibilidades de interrupción del sistema.
Como ocurriría también con un organismo, cada unidad-contenedor dispone de todas las herramientas para modificar la aplicación (actualizar código, modificar los permisos y seguridad, etc.), de modo que servicios como Habitat permiten a cualquier aplicación llevar consigo los paquetes de gestión, algo crucial, ya que -recuerda Adam Jacob- el código de sitios y aplicaciones cambia constantemente. Qué menos que contar con un sistema diseñado para el cambio, concluye.
La nueva era de los contenedores
La firma que Adam Jacob ha cofundado, Chef, tiene sede en Seattle, centro neurálgico de Amazon y de sus servicios de computación en nube, Amazon Web Services, además de situarse a un paso de Redmond, donde Microsoft tiene su sede corporativa (su servicio Azure pretende competir con AWS).
En torno a ambos gigantes, surgen firmas que tratan de acercar a todo el mundo los avances tecnológicos sobre los que se sostienen los servicios más populares, que explicarían por qué la subsidiaria de Facebook Whatsapp, por ejemplo, envíe más mensajes que toda la mensajería SMS global contando con una plantilla inferior a 50 trabajadores, sin que el servicio se resienta.
Habitat basa su concepto en la computación de contenedores probada con éxito a gran escala: Kubernetes (Google), Swarm (Docker) o el gestor Mesosphere (basado en el protocolo de gestión de clústeres de código abierto Apache Mesos).
Pero, a diferencia de Habitat, estos contenedores Linux proporcionan determinados modos de organizar código en grupos de máquinas. Habitat, en cambio, prescinde de Linux y crea paquetes diseñados para operar de cualquier otra manera, y no sólo tareas en el marco de un sistema operativo concreto.
Automatizar la infraestructura de cualquier cosa
El resultado se acerca al modelo biológico al que aspira la compañía: se pueden operar paquetes de Habitat en los sistemas de contenedores Mesosphere o Kubernetes, así como en entornos virtuales a través de servicios de computación en la nube como AWS, App Engine, etc.
La promesa es atractiva. Jacob resume así el concepto: “Podemos coger todo el software existente en el mundo, que no se creo con nada de esto en mente, y hacer que se comporte como queremos”.
Habitat y cualquier aplicación similar que ofrezca explore el concepto “DevOps” (o “infraestructura de Google para el resto de nosotros”), a medio camino entre el software y la filosofía, no compiten con los sistemas de contenedores de compañías como Google, sino que complementan estos servicios.
Mesosphere, Kubernetes y servicios de contenedores similares incluyen planificadores para extender instrucciones a todo un sistema orgánico, especificando cómo y cuándo ejecutar código. Habitat se ocupa del resto, creando el “marco” para que los contenedores funcionen con la coherencia y autonomía deseadas sin importar el entorno.
Futuro
Para lograrlo, Habitat un formato de empaquetado de aplicaciones que funcionaría como el protocolo TCP/IP en Internet (el cual permite comunicarse a distintas máquinas sin importar sistema operativo o programa): Chef quiere que Habitat reconozca y opere con cualquier sistema, aunque ahora sólo soporta los más usados y ofrece un parche de código para el resto, que la empresa cataloga como “trivial”.
El concepto agrada (software como biología: más inteligente, autónomo, actualizable y resistente a ataques), pero Chef Habitat deberá demostrar ahora que funciona, recuerda Cade Metz en su artículo para Wired.
A medio paso, cuando el aprendizaje de máquinas y la arquitectura de sistemas hayan acumulado suficiente experiencia creando ecosistemas de aplicaciones que se adaptan al entorno, quizá se inicie otro proceso que implique menor supervisión humana: la evolución de estas infraestructuras con la libertad e incentivos de la propia vida multicelular.
A diferencia de la vida, donde los procesos evolutivos tienen lugar a fuego lento, los conceptos del mundo DevOps mutan con rapidez, acercándose a la “teoría de la promesa”: el trabajo simbiótico entre humanos y algoritmos.
La colaboración, en definitiva, de la biología y las entidades autónomas que la emulan.