¡No al SQL!

Al parecer ese es el grito de guerra de un conjunto de proyectos Open Source que desean liberarce de la presencia casi ineludible de las bases de datos relacionales como soporte de almacenamiento de datos en los proyectos web 2.0. Al menos ese fue el espiritu de la reunion que tuvo la comunidad NoSQL hace poco menos de un mes en San Francisco.

En el evento que ha pasado casi desapercibido por los principales medios TIC, hasta hace poco cuando ComputerWorld publicó un artículo sobre la comunidad NoSQL, se presentaron los representantes de 10 proyectos Open Source que nos ofrecen escalabilidad y confiabilidad, a una facción del costo de las alternativas DBMS, como pueden ser MySQL, PostgreSQL u Oracle. Como punto de comparación hay que mencionar que uno de estos proyectos NoSQL llamado Cassandra, ofrece la capacidad de poder escribir hasta 50GB de datos en tan sólo 0.12 milisegundos, esto es 2500 veces más rápido que la perfomance ofrecida por MySQL (la DB relacional más rápida).

El romper con el pasado no es fácil, dejar atras viejos paradigmas que han demostrado sus limitaciones en la era del Petabyte en la cual nos encontramos, será una decisión difícil para los gerentes de los departamentos TIC, mientras no exista una empresa que respalde la nueva tecnología, o inclusive un estándar único para los proyectos de almacenamientos de datos de alta disponiblidiad clave-valor. Hay que tener en cuenta que ninguno de estos proyectos NoSQL se llama a sí mismos "base de datos", sino sistemas de "almacenamiento valor-clave" distribuido.

Todos estos proyectos NoSQL comparten las siguientes características:

  • Los datos son automáticamente replicados en múltiples servidores.
  • La falla de algún servidor es manejada de forma transparente y sin interrupción del servicio.
  • Todos los nodos que constituyen el sistema son independientes y no existe un único punto de falla.
  • El sistema maneja internamenta la consistencia de los datos.
  • La escalabilidad es prácticamente infita.
  • Utilizan como bloques de construcción PCs baratos con grandes discos duros.
  • Son proyectos Open Source.

Parecería un sueño, pero es cierto. Son proyetos Open Source que ofrecen hacer por una fracción del costo, aquello que Oracle cobraría millones de dólares por implementar, configurar y afinar a nuestras necesidades de alta disponibilidad y escalabilidad.

Aquí la lista de los proyectos que fueron presentados en la conferencia de la comunidad NoSQL, los videos de las presentaciones y las presentaciones en formato PDF donde ha sido posible obtenerlos.

Proyecto
Expositor
Empresa Presentación
Videos
 Introducción a la Reunión

 Todd Lipcon Cloudera  PDF
 Voldemort  Jay Kreps LinkedIn  PDF
 Video1,
 Cassandra  Avinash Lakshman Facebook  PDF  Video
 Dynomite  Cliff Moon Powerset  PDF  Video
 HBase  Ryan Rawson StumbleUpon  PDF  Video
 Hypertable  Doug Judd Zvents  PDF  Video1,
Video2
 CouchDB  Chris Anderson couch.io  PDF  Video1,
Video2
 VPork  Jon Travis Springsource  PDF  Video
 MongoDb  Dwight Merriman 10gen    Video
 Google BigTable  Jonas S Karlsson  Google    Video

 
Es bastante fácil de entender por qué en una web donde el contenido multimedia se multiplica a una velocidad jamas vista antes, el seguir almacenando datos en bases de datos relacionales, es una forma ineficiente y costosa de hacerlo, es por ello que los proyectos NoSQL son definitivamente la forma como deberíamos manejar la información en el futuro. Estos proyectos son ideales, donde la estructura de datos es simple, pero se necesitan manejar grandes volúmenes de datos y es importante el tiempo de respuesta del sistema.

Luego de haber visto los videos de las conferencias, estoy convencido de que el futuro del almacenamiento en grandes volúmenes, esta en los sistemas NoSQL. Así que si alguien está buscando donde estará la siguiente revolución en la industria TIC, este es definitivamente un campo al cuál prestarle mucha atención.

Extraños comerciales de IE8 en Hulu

Aquellos que usamos Hulu hemos comenzado a darnos cuenta que en adición a Bing, Microsoft está comenzando a lanzar comerciales de Internet Explorer 8, su nuevo browser (navegador). Los anuncios son protagonizados por el actor Dean Cain, conocido por la serie de TV Lois & Clark, donde encarna a Superman. La trama de los anuncios (4 hasta ahora), es la burla de los clásicos comerciales donde conocidas figuras salen promoviendo algún producto o servicio, para ello la agencia publicitaria que ideo los anuncios (Bradley and Montgomery) no se le ocurrió mejor idea que inventar nuevas enfermedades con nombres tan descabellados como S.H.Y.N.E.S.S. (sin los puntos sería timidez, pero se le vende como acrónimo de "Sharing Heavily Yet Not Enough Sharing Still", "Comparte bastene pero aún no comparte lo suficiente"), para las cuales el remedio ideal es Internet Explorer 8.

En lo personal los anuncios me parecen tontos y de muy mal gusto (gracias a Dios no ha salido en TV de señal abierta), especialmente el que toca el tema de O.M.G.I.G.P. ("Oh My God I’m Gonna Puke"), en el cual una chica vomita luego de que ve el historial de las páginas visitadas por su pareja. Aunque admito que mi opinion personal puede ser debida a que estoy irremediablemente viejo y no puedo apreciar cierta "juvenil creatividad" de la que se vanagloria Bradley and Montgomery. Aquí les dejo los comerciales para que los vean y pudan formarce su propio juicio.
 

 

 

 

 

¿Acto de honor o cobardía?

K T LigeshEl día de ayer la noticia de que el proveedor de hosting británico VAServ había sido hackeado y como resultado de dicho ataque el contenido de 100,000 websites había desaparecido, fue comentada en casi toda la blogosfera desde muy distintas perspectivas. Sin embargo lo que estaba claro era que el problema era debido a una vulnerabilidad en el software usado para la administración de los servidores virtuales llamado HyperVM, producido por la compañía india LxLabs.

Como resultado de esta catastrofe y debido a la pérdida de un importante contrato, el CEO de LXLabs, K T Ligesh, se suicidó en su casa de Bangalore según reportó el diario indio Times of India, noticia que luego fuera recogida por The Register. Al parecer Ligesh de 32 años tenía problemas aún lidiando con la fatídica muerte de su madre y hermana que se suicidaron ahorcandose hace 5 años según reporta Times of India, debido a ello tal vez se puede explicar el tatuaje que llevaba en su brazo en el que se leía "GOD IS A F***inf IDIOT", su vida bohemia y tal vez la radical medida que tomo de acabar con su vida. A la derecha pueden ver la foto de Ligesh tomada de su Facebook.

La vulnerabilidad que permitió a los hackers destruir la mitad de los servidores que alojaba VAServer, fue reportada el 21 de mayo pasado por milw0rm en privado a LxLabs, sin que este diera muestras de querer resolver el problema, como resultado de ello, la vulnerabilidad fue hecha pública el pasado jueves 4 de junio y el ataque contra la infraestrcutura de VAServ el domingo 7 de junio en la noche. Esta no era tampoco la primera vez que el producto presentaba problemas de seguridad, sin embargo como aclaró Jonathan Zahedieh en uno de los comentarios de la noticia a pesar de haber seguido el procedimiento regular de informar primero al desarrollador del software, este no dio muestras de querer resolver el problema y la publicación del exploit no fue un acto de venganza.

El suicidio de Ligesh puede verse de dos formas, yo lo veo como un acto final de honor y sincero arrepentimiento, después de todo lo único que quedará de nosotros, luego de nuestra muerte, será el recuerdo que dejamos y ciertamente ser recordado como alguien que aceptó sus culpas, restituye en algo la imagen de administrador negligente e indiferente a asuntos críticos para su empresa. La otra forma de verlo es como un acto de cobardía para huir de las responsabilidades legales resultado de la terrible pérdida financiera infringida a VAServ, esta es la postura sostenida por mi compañero de trabajo Zilvinas Stumbras. Este es un tema muy controversial y cada quién puede verlo desde una perspectiva diferente.

Mi reflexión final es que si los CEOs fracasados de los grandes bancos norteamericanos de inversión, Bernie Madoff, George W. Bush o Dick Cheney se hubieran suicidado luego de sus fracasos tan sonoros, que tuvieron tanta repercusión en la sociedad, al menos yo podría tener otra mirada sobre sus vidas. El haber sido los causantes de tremendos desastres y seguir viviendo como si nada hubiera pasado, sin admitir la menor responsabilidad es simplemente una acción que los pinta de cuerpo entero como personas sin honor, que no merecen la confianza de sus semejantes. Un suicidio no devolvería el dinero a todos los afectados por la estafa de Madoff, sin embargo sería una señal de que el actuó de buena voluntad y no deseaba causar todo el daño que finalmente causó. Por otra parte el que siga vivo tampoco es garantía ni de que colabore con la justicia, ni que se recupere algo del dinero que dilapidó. Así que si me preguntan, en estos casos donde un ser humano por sus errores afecta la vida y el futuro de muchos otros, debe de elegir el camino más honorable posible.

Android sigue avanzando con fuerza en las netbooks

En la última Computex de Taipei, Android ha hecho su invasión al sector de las netbooks, un mercado para el cual originalmente no estaba diseñado. Todo comenzó con Acer anunciando que vendería netbooks con Android, para luego aclarar que tendría un boot dual Android/Windows, se sumo también a la corriente de Android en las netbook Asus con una nueva arquitectura basada en un procesador ARM.

A través de Slashgear me he enterado, que en la misma feria otros dos fabricantes taiwaneses han anunciado sendos dispositivos con Android. GNB ha presentado la GL-750, una netbook con pantalla táctil de 7 pulgadas y con un procesador Freescale de arquitectura ARM 11 de 533MHz (el iMX31). Que cuenta con una RAM de sólo 256MB y un disco de estado sólido SSD de 8GB. El equipo que debería venderse por menos de $200 ofrece una autonomía de sólo 3horas y media, lo cuál es bastante pobre para un procesador que se supone debe permitir ahorro de energía. Aquí el video de esta netbook que he tomado prestado de Netbooknews.com:
 

 
 
El otro dispositivo es de Kinpo y es una tablet PC equipada con Android, aunque el fabricante quiere promocionarla como un Thin Client (Cliente Liviano). Este dispositivo también cuenta con pantalla táctil de 7 pulgadas y esta basado sobre otro procesador de arquitectura ARM de Freescale el iMX51. Aún no hay precio ni fecha de entrada de este producto al mercado. Aquí el video:
 

 
 

Ingeniería de Software != Computer Science

En un largo e interesante artículo escrito por Chuck Connell, que tiene el mismo título de este post, el autor señala varios puntos que indican que el desarrollo de software nunca será una disciplina completamente formal y rigurosa. La razón de que esto sea así es que la ingeniería de software incluye a lo seres humanos como parte central del proceso. Desde esa perspectiva el desarrollo de software estaría más próximo a una ciencia social como la economía que a una ciencia exacta.

El artículo de Connell para Dr. Dobb’s puede ser encontrado en este URL, pero debido a su importancia he decidido traducir las partes más resaltantes del mismo, para los lectores de este blog.

Hace pocos años, yo estudie Algoritmos y Complejidad. El campo es maravillosamente claro, con cada concepto claramente definido y cada resultado construido en demostraciones anteriores. Cuando usted aprende un hecho en esta área, usted podria llevarlo al banco, desde que la matemática debería ser inconsistente para hacerle cambiar de dirección de lo que usted ha aprendido. Aún los resultados imperfectos, como las aproximaciones y los algoritmos probabilisticos, tienen un analisis riguroso sobre sus imperfecciones. Otras disciplinas de Computer Science, como la topología de redes y la criptografía tambien gozan de un estatus similar.

Ahora trabajo en Ingeniería de Software, y esta área es desesperante resbaladiza. No hay Conceptos definidos con precisión. Los resultados son calificados de "usualmente" o "en general". La investigación realizada hoy en día podría, o no, ayudar en el trabajo futuro. Nuevos enfoques a menudo revocan los métodos anteriores, con los nuevos enfoques brillando claramente por un tiempo para luego pasar de moda cuando sus limitaciones surgen. Creíamos que la programación estructurada fue la respuesta. A continuación, pusimos nuestra fé en los lenguajes de cuarta generación y, a continuación, los métodos orientados a objetos y, a continuación, la programación extrema, y ahora tal vez el modelo open source.

Pero la ingeniería de software es donde la llanta se une a la carretera. Pocas personas prestan atención de si P es igual a NP sólo por la belleza de la cuestión. El campo de Computer Science es hacer cosas con las computadoras. Esto significa escribir software para resolver problemas humanos, y que dicho software se ejecute en máquinas reales. Por la Tesis de Church-Turing, todos las computadoras son esencialmente equivalentes. Así, mientras que la nueva arquitectura de una máquina es novedosa, el verdadero reto que restringe a Computer Science es el problema de la creación de software. Necesitamos software que pueda ensamblarce en un monto de tiempo razonable, por un costo razonable, que trabaje de la forma como esperamos, y funcione con pocos errores.

Con estos objetivos en mente, algo que siempre me ha molestado (y a muchos otros investigadores) es: por qué no podemos tener resultados más rigurosos con la Ingeniería de Software, como las otras ramas de la Computer Science? Reformulando la pregunta de otro modo, "Cuánto del software diseñado y construido puede ser formalizado y probado?". La respuesta a dicha pregunta reposa en la siguiente figura:

Figura 1

Los temas por encima de la línea constituye la ingeniería de software. Las áreas de estudio por debajo de la línea son las materias básicas de Computer Science. Estos últimos temas son claros y de resolución formalizada. Para las preguntas aún abiertas en estos temas, esperamos que los nuevos resultados también sean formalizados. Estos temas se basan entre sí – la criptografía de la complejidad, y compiladores en algoritmos, por ejemplo. Además, creemos que demostrado resultados en estos ámbitos, los resultados seguirán siendo válidos por los próximos 100 años.

Entonces, ¿qué es que esa línea brillante y por qué ninguno de los temas de ingeniería de software está debajo de ella? La línea es la propiedad que "implica directamente la actividad humana". La ingeniería de software tiene esta propiedad, mientras que la Computer Science tradicional no. Los resultados de las disciplinas por debajo de la línea pueden ser utilizados por las personas, pero sus resultados no son afectados directamente por las personas.

La ingeniería de software tiene un componente humano. La mantenibilidad del software, por ejemplo, es la capacidad de las personas para comprender, encontrar y reparar los defectos de un sistema de software. El mantenimiento de software puede ser influenciado por algunas nociones formales de Computer Science – quizás la complejidad ciclica de los gráfos de control de software. Pero la mantenibilidad fundamentalmente implica humanos, y su capacidad para comprender el significado y la intención del código fuente. La cuestión de si un determinado sistema de software es altamente mantenible no puede ser respondida sólo por el examen de la mecánica de software.

[…]

Esta observación conduce a la tesis de Connell:

     Ingeniería de software nunca será una disciplina rigurosa con resultados probados, ya que implica la actividad humana.

Se trata de una declaración extra-matemáticas, acerca de los límites de los sistemas formales. Yo no ofrezco ninguna prueba del enunciado previo, aunque no hay pruebas de que no existe ninguna prueba. Pero el hecho es que las cuestiones centrales de la ingeniería de software son las preocupaciones humanas:

     * ¿Qué debe hacer este software? (requisitos, usabilidad, seguridad)
     * ¿Qué debe tener el software dentro de, por lo que es fácil de fijar y modificar? (arquitectura, diseño, escalabilidad, portabilidad, extensibilidad)
     * ¿Cuánto tiempo se tarda en crear [el software]? (estimación)
     * ¿Cómo debemos construir [el software]? (codificación, verificación, medición, la configuración)
     * ¿Cómo debemos organizar el equipo para trabajar con eficiencia? (gestión, proceso, documentación)

Todos estos problemas giran en torno a las personas.

Luego de la presentación de su hipótesis Connell procede a discutir detalladamente por qué método considerados formales en la Ingeniería de Software como COCOMO II o el CMMI, no producen resultados confiables pues se basan en tratar de sacar fuera de una ecuación matemática formal, el comportamiento humano que está intrínsicamente envuelto en los procesos que pretende modelar.

Realmente es un magnífico paper sobre Ingeniería de Software y recomiendo la lectura completa del mismo a todos los estudiantes de Computer Science, Informática o ramas afines envueltas en el desarrollo, despliegue, gestión y mantenimiento de sistemas de software.