Una nueva herramienta sigue las pistas de la programación de base de datos de los años 80.
La computación en la nube permite a las compañías almacenar y procesar datos de forma más eficiente que nunca. Sin embargo el código utilizado para controlar las máquinas en una “nube” sigue siendo sorprendentemente anticuado. Algunos investigadores se están dedicando a explorar una serie de novedosos lenguajes de programación para controlar la nube, y están tomando prestado un método desarrollado en los años 80.
La mayoría de los lenguajes de programación no han sido diseñados para trabajar con tantos ordenadores o tantos datos. Las plataformas de software como MapReduce de Google y un competidor Hadoop proporcionan herramientas útiles para llevar a cabo esta tarea. Sin embargo el proceso se podría hacer más eficiente.
“No podemos seguir programando los ordenadores del modo en que lo estamos haciendo,” afirma Joseph Hellerstein, profesor de ciencias informáticas de la Universidad de California en Berkeley. Hellerstein está involucrado con un proyecto llamado BOOM, dirigido al desarrollo de nuevas técnicas para programar la nube. “La gente no lo tiene fácil para escribir programas que se aprovechen del hecho de poder alquilar 100 máquinas en Amazon.”
La mayoría de los programas de software están hechos de instrucciones que le dicen a los ordenadores qué serie de acciones llevar a cabo en un cierto orden. Una de las grandes ventajas de la computación en la nube es que hace posible dividir un programa para que las distintas instrucciones puedan ser procesadas al mismo tiempo. Sin embargo es difícil escribir el código necesario para llevar esto a cabo con la mayoría de los lenguajes de programación, y este problema da como resultado que los programas de software se hinchen.
Hellerstein quiere hacer posible la construcción de un software que se ejecute a escala mucho más grande—a través de miles de máquinas basadas en la nube—utilizando mucho menos código. Para hacer esto, se basó en una investigación realizada en los años 80 sobre la eficiencia de la programación de bases de datos. Hellerstein afirma que las tecnología de base de datos, capaces de recolectar grandes grupos de datos y procesarlos de formas variadas, podría tener especial éxito a la hora de aprovechar la nueva capacidad de proceso de cálculo.
Un motivo es que la información de las bases de datos a menudo se procesa por lotes, y no importa el orden que utilice un ordenador para administrar dichos lotes. Esto hace que los programadores dividan las tareas de las bases de datos entre muchos procesadores. Tan fácil, de hecho, que los programas de esta naturaleza a menudo se conocen como “vergonzosamente paralelos.”
El grupo de Hellerstein modificó un viejo lenguaje llamado Datalog para permitirle que escribiese programas de uso en la nube. El problema, señala Hellerstein, es averiguar qué cantidad del programa puede suceder simultáneamente, e identificar las ocasiones en que tenga que detenerse y reunir información acerca del estado de las distintas tareas. El grupo trabaja en la actualidad en el desarrollo de un lenguaje llamado Bloom para proporcionar “una forma sencilla” de que los programadores trabajen con la a menudo compleja sintaxis del sistema basado en Datalog.
Hellerstein espera que Bloom ayude a los programadores a escribir software para la nube sin tener que alejarse completamente de lenguajes familiares. El grupo de Hellerstein está diseñando Bloom como una biblioteca que puede ser usada con lenguajes populares tales como Java y Python. El uso de Bloom dentro de uno de estos lenguajes animaría a los programadores a diseñar software que utilizase los recursos disponibles en la nube de forma más eficiente. También evita que los programadores tengan que aprender un lenguaje completamente nuevo.
Georg Gottlob, profesor del Laboratorio de Computación de la Universidad de Oxford y experto en Datalog, afirma que el uso del lenguaje para trabajar con aplicaciones de escala web tiene mucho sentido. Cuando Datalog se inventó, afirma, “salió mucho antes de su tiempo” como para ser usado ampliamente debido a la limitada capacidad de proceso en la época. Con la proliferación de la computación distribuida, afirma Gottlob, los lenguajes han visto “un gran Renacimiento.”
“Ahí es donde se dirige el futuro,” afirma Elias Torres, que utiliza herramientas de computación en la nube en varias startups. Hace varios años, Torres fue capaz de usar un precursor de Bloom en un proyecto para simplificar los complejos protocolos de los sistemas distribuidos. “Fue toda una revelación, puesto que fui capaz de enfocarme en los datos que fluían por el sistema,” afirma.
Hoy día, afirma Torres, “necesitas comprender cómo tienen que almacenarse los datos, cómo se organiza y se accede a ellos para así poder progresar.” Cualquier aplicación web tiene que enfrentarse a una magnitud de datos en constante crecimiento, y Torres cree que los programadores encontrarán mucha utilidad en herramientas como Bloom.