211service.com
Código menos torpe para la nube
La computación en la nube permite a las empresas almacenar y procesar datos de manera más eficiente que nunca. Pero el código que se utiliza para controlar las máquinas en una nube informática sigue siendo sorprendentemente torpe. Ahora, algunos investigadores están explorando lenguajes de programación novedosos para controlar la nube y están tomando prestado un enfoque desarrollado en los años 80.
La mayoría de los lenguajes de programación nunca se diseñaron para manejar tantas computadoras o tantos datos repartidos entre ellas. Los marcos de software como MapReduce de Google y un competidor abierto llamado Hadoop proporcionan herramientas útiles para hacer esto. Pero hay espacio para hacer que el proceso sea mucho más eficiente.
No podemos seguir programando computadoras como estamos, dice Joseph Hellerstein , profesor de informática en la Universidad de California en Berkeley. Hellerstein está involucrado en un proyecto llamado AUGE , orientado al desarrollo de nuevas técnicas de programación en la nube. Las personas no tienen una manera fácil de escribir programas que aprovechen el hecho de que podrían alquilar 100 máquinas en Amazon.
La mayoría de los programas de software se componen de instrucciones que le dicen a una computadora que realice una serie de acciones en un orden determinado. Una de las grandes ventajas de la computación en la nube es que permite dividir un programa para que se puedan procesar diferentes instrucciones al mismo tiempo. Pero es difícil escribir el código necesario para hacer eso con la mayoría de los lenguajes de programación, y este problema da como resultado un software inflado.
Hellerstein quiere hacer posible la creación de software que se ejecute en una escala mucho mayor, en miles de máquinas basadas en la nube, utilizando mucho menos código. Para ello, recurrió a la investigación realizada en los años 80 sobre la programación de bases de datos de manera eficiente. Hellerstein dice que las tecnologías de bases de datos, que pueden recopilar grandes conjuntos de datos y procesarlos de diversas formas, podrían ser particularmente exitosas al aprovechar la nueva potencia informática.
Una razón es que la información de la base de datos a menudo se procesa en lotes y no importa qué orden use una computadora para manejar estos lotes. Esto facilita a los programadores dividir las tareas de la base de datos entre muchos procesadores. Tan fácil, de hecho, que a veces se hace referencia a programas de esta naturaleza como vergonzosamente paralelos.
El grupo de Hellerstein modificó un lenguaje antiguo llamado Datalog para permitirle escribir programas para la nube. El problema, dice Hellerstein, es averiguar cuánto de un programa puede suceder simultáneamente e identificar los momentos en los que tiene que detenerse absolutamente y recopilar información sobre el estado de las diferentes tareas. El grupo está desarrollando actualmente un lenguaje llamado Bloom para proporcionar una forma amigable para que los programadores manejen la sintaxis a menudo compleja del sistema subyacente basado en Datalog.
Hellerstein espera que Bloom ayude a los programadores a escribir software para la nube sin tener que alejarse por completo de los lenguajes familiares. El grupo de Hellerstein está diseñando Bloom como una biblioteca que se puede utilizar con lenguajes populares como Java y Python. El uso de Bloom en uno de esos lenguajes alentaría a los programadores a diseñar software que utilice los recursos disponibles en la nube de manera más eficiente. Esto también evita que los programadores tengan que aprender un idioma completamente nuevo.
Georg Gottlob , profesor del Laboratorio de Computación de la Universidad de Oxford y experto en Datalog, dice que usar el lenguaje para manejar aplicaciones a escala web tiene mucho sentido. Cuando se inventó Datalog, dice, llegó demasiado pronto para usarse ampliamente debido a la potencia de procesamiento limitada en ese momento. Con la proliferación de la informática distribuida, dice Gottlob, el lenguaje ha experimentado un gran renacimiento.
Aquí es hacia donde va el futuro, dice Elias Torres, quien usa herramientas de computación en la nube en varias empresas emergentes. Hace varios años, Torres pudo utilizar un precursor de Bloom en un proyecto para simplificar un protocolo complejo para sistemas distribuidos. Fue esclarecedor, porque pude concentrarme en los datos que fluyen a través del sistema, dice.
Hoy en día, dice Torres, es necesario comprender cómo se deben almacenar, organizar y acceder a los datos para poder avanzar. Cualquier aplicación web tiene que lidiar con una magnitud de datos cada vez mayor, y Torres cree que los programadores encontrarán herramientas como Bloom cada vez más útiles.