OSCON 2008 (II)

En este segundo post voy a dar un paseo por las distintas presentaciones en las que participé y de las que creo que se puede sacar provecho para futuros proyectos. Pero antes, para los que quieran tener un pantallazo general de Porland y la conferencia, pueden disfrutar el siguiente video con entrevistas a las distintas personalidades y links a sus presentaciones:

Los temas que me parecieron interesantes son los siguientes (sin ningún orden en particular):

- Ruby on Rails: asistí a un tutorial titulado “Advanced ActiveRecord“, pero al margen del tema técnico particular, veo que Rails sigue creciendo con mucha fuerza y es un framework líder en lo que a innovación se refiere. A pesar de tener su propia RailsConf desde hace unos años, la presencia en OSCON fue importante. Una novedad a destacar, aunque es previa a la conferencia, es existencia de mod_rails, un módulo para Apache que simplifica la instalación de aplicaciones y, junto con Enterprise Ruby Enterprise Edition, mejora mucho la performance y el uso de memoria.

- An Open Source Startup in Three Hours: de este tutorial saqué sólo algunas referencias interesantes:

  • La importancia de la presentación y el diseño; un sitio con diseños open source: opendesigns.org
  • ElasticFox: un plugin para Firefox para manejar las instancias de Amazon EC2.
  • Utilizar Google (o Yahoo!) como CDN para hostear las bibliotecas de AJAX: code.google.com/apis/ajaxlibs/
  • Utilizar servicios que ayudan a escalar rápidamente al estilo Amazon: GoGrid.com

- Beyond REST? Building Data Services with XMPP PubSub: este es una de los presentaciones que despertó mucho interés ya que está muy relacionado con las redes sociales y la forma en que notifican sus actualizaciones. Tradicionalmente estos servicios publican APIs (en formato REST o similar) que permiten a terceros hacer polling para conocer si hubo cambios. Pero claramente esta estrategia no escala bien ya que para lograr una mayor rapidez en la detección de actualizaciones deben hacer el polling más frecuentemente, pero sólo uno de esos muchos accesos es el que obtiene un resultado positivo, el resto es pérdida de energía, por así decirlo.

Así es como surge la idea de utilizar XMPP, el protocolo de mensajería instantánea de Jabber (y de Google Talk), para suscribirse a determinados servicios de notificación. La estructura abierta de dicho protocolo y el hecho de estar pensado para grandes escalas, permite que se puedan contruír aplicaciones más allá del chat. Características de XMPP:

  • Conexiones persistentes, lo que disminuye el overhead de establecimiento de conexiones.
  • Federado, es decir, puede distribuir la carga y la funcionalidad en distintos servidores.
  • Protocolo Basado en XML, Stateful, Asincrónico y liviano.
  • Identidad, seguridad y presencia son nativos del protocolo.
  • PubSub es una extensión del protocolo XMPP que permite este tipo de utilización más allá de la mensajería instantátea.

- Hypertable: An Open Source, High Performance, Scalable Database (presentación): En la mayoría de las aplicaciones dinámicas, la base de datos suele ser el punto que más dificultades presenta a la hora de escalar ya que es donde justamente se concentran los datos. Los esquemas de un master con réplica en varios slaves también tienen problemas para mantener el sincronismo en forma instantánea.

Hypertable está pensado justamente para aplicaciones web de gran escala, alta performace y en forma distribuída, es la respuesta de código abierto a BigTable, la tecnología utilizada por Google.

No se trata de una base de datos relacional tradicional ya que no tiene, por ejemplo, transacciones, pero su estructura permite dar soporte a las necesidades de grandes cantidades de datos que están exigiendo las aplicaciones web 2.0. Algunas características:

  • Sparse, two-dimensional tables: esto quiere decir que los registros de las tablas pueden tener cantidad variable de columnas, las cuales no son necesarias de declarar cuando se crea la tabla. Los registros se acceden en forma de pares key-value.
  • Escalable, permite altísimas velocidades de inserts, update y deletes.
  • Concurrencia implementada a partir de MVCC (multi-version concurrency control)
  • Funciona sobre un filesystem distribuído como Hadoop (ver a continuación).

- Hadoop Distributed File System (HDFS) under de hood (presentación): Hadoop es la respuesta de open source a Google File System. Hadoop proporciona un framework para almacenar y procesar petabytes de datos y que funciona sobre HW convencional. La premisa sobre la que está diseñado es que los problemas de HW no son la excepción sino la norma. Está implementado en Java y es uno de los Top Level Projects de Apache. Actualmente existen clusters de entre 1 y 2000 servidores en producción en empresas tales como Yahoo!, Last.fm, Joost, Facebook y A9. Algunas características:

  • Escalamiento horizontal en commodity HW, asume que el HW va a fallar.
  • Compensa el problema de las fallas con replicas de los datos.
  • Separación de los datos, que escalan horizontalmente, de los metadatos, que son más fáciles de escalar en forma vertical.
  • Dado que cada servidor agrega almacenamiento y capacidad de procesamiento, la idea es que el procesamiento esté lo más cerca de los datos, lo que minimiza las transferencias de información.
  • La arquitectura está dividida en un Namenode, que es el que administra la metadata y coordina la replicación de los datos, y múltiples Datanodes, que son los que contienen las copias de los datos.

2 Responses to “OSCON 2008 (II)”

  1. [...] (Continuar con la parte II) [...]

  2. Hola Juán!, muy interesante lo que comentas. En la YAPC::Europe de este año se ha hablado tambien mucho sobre la distribucion de carga en hardware barato… Nosotros estamos usando MogileFS para la distribucion de datos y es realmente muy comodo. Voy a pegarle una mirada a Hadoop :)

    Un abrazo!

Leave a Reply

About Authors

Hay quien ve el futuro y lo divulga como si de un oráculo se tratase. Ha quien intenta adivinarlo y se sumerge en estudios de tendencias. Y hay quien simplemente hace el futuro. NP3i pretende hacer el futuro de Internet, o al menos contribuir a una parte de él. >>>