format internet:

…please wait (46% completed)…

Archive for the ‘ruby on rails’ Category

masochism: plugin para replicación master-slave en MySQL

Posted by javier ramirez on May 18, 2008

Recientemente me he encontrado con la necesidad de trabajar desde Rails contra una base de datos MySQL replicando en modo master-slave.

Replicación Master-Slave In a Nutshell:

La idea de montar un master-slave es tener la base de datos maestra para realizar las modificaciones a la base de datos, y usar la/las bases de datos esclavas para realizar las lecturas. De esta forma, las operaciones de lectura, que son las más habituales, se pueden balancear entre diferentes instancias de una base de datos.

Por otro lado, cada vez que se hace una modificación en la maestra, esta modificación se replica en las esclavas, de forma que los datos siempre están sincronizados.

Esta imagen del manual online de MySQL es muy explicativa

mysql master slave

Claramente este esquema nos puede ayudar mucho de cara a la escalabilidad de una aplicación, ya que la base de datos es uno de los cuellos de botella típicos.

Lo que necesitamos en este caso, es asegurarnos de que todas las operaciones de escritura van contra la conexión de la maestra, mientras que las lecturas van por una conexión esclava.

Una de las ventajas de usar un framework- en este caso Rails, pero podría haber sido cualquier otro- es que tu aplicación tiene una arquitectura bien definida. O al menos debería. Esto significa que al usar Rails tenemos bajo control las operaciones que se hacen contra la base de datos, con lo que identificar las de lectura y las de escritura debería ser simple. Si seguimos las reglas del framework, las operaciones contra la base de datos pasarán siempre por el modelo y por los métodos que AR nos proporciona.

Al final, el número de métodos que realmente acaban accediendo a la base de datos son más bien pocos, con lo que podríamos jugar un poco con el framework, establecer dos conexiones con la base de datos (una con la maestra, y otra con la esclava) y decidir qué conexión va a usar cada método. Así todos los métodos “find” y similares irían por la esclava, y los “delete”, “insert”, etc.. irían por la maestra.

Esto mismo es lo que el plugin masochism hace automáticamente por nosotros. El plugin viene de la mano del hiperproductivo Rick Olson.

Uno de estos días tendré que contar en más detalle cómo va, pero el resumen ejecutivo es que lo instalas, le añades una conexión master_connection en tu fichero database.yml, llamas a un método en uno de tus initializers… y te olvidas. A partir de ahí todo funciona de forma transparente (siempre que hayas configurado tu master/slave de MySQL previamente, claro).

De momento le he encontrado una única pega. Entre los métodos que se envían a la base de datos maestra no está el método “execute”, que es el típico método que sólo utilizas cuando quieres modificar algo en la base de datos. Sin ir más lejos, el (imprescindible) plugin Foreign Key Migrations usa ese método para crear las FK, por lo que si no nos aseguramos de que se usa la base de datos maestra, podemos tener problemas.

Le he mandado un parche (en realidad es añadir una palabra y una coma) a Rick , a ver si le parece apropiado incuírlo como parte del plugin.

update: y el patch ya ha sido incluído :)

Y a escalar!!

searchwords: scalability, mysql replication, master-slave, javier ramírez

Posted in development, javier ramirez, ruby, ruby on rails, ruby on rails | Tagged: , , , , , , , | 4 Comments »

Desarrollo de Plugins Rails (programa en rails como si jugases con lego)

Posted by javier ramirez on November 24, 2007

Tras mi charla de ayer sobre desarrollo de plugins con rails dejo disponible por aquí el material que usé durante mi presentación (la tira de cartón negra y las piezas de lego no van incluídas en el pack).

La podeis ver online un poco más abajo o descargarla en pdf desde la página de descargas.

Así en frío, sin los comentarios que iba haciendo, quizá la presentación no os diga demasiado (aunque da varias pistas), pero en cuanto se publique el video de la conferencia anunciaré el link para que podais ponerlo todo en contexto. *update* el video está publicado más abajo.

Un punto que me gustaría destacar es cómo la ponencia ha crecido un poquito gracias a una aportación realizada durante la conferencia. Durante mi sesión hablé de problemas derivados de la prueba de plugins que trabajen con modelos (el típico, acts_as_xxx).

Nada más terminar, y ya en la zona del coffee break, Sergio Gil Pérez de la Manga me comentó que él se encontró ese mismo problema y que implementó una solución para resolverlo. He añadido una página más a la presentación para reflejar esta solución y ahorrar trabajo a quien se encuentre con esta situación. Otra prueba más de que tener una comunidad activa y amigable es toda una garantía para mejorar tu productividad. Gracias Sergio!

Este material tiene una licencia Creative Commons Atribución-NoComercial-LicenciarIgual 2.5

searchwords: rails plugins development, plugins howto, conferenciarails2007, acts_as plugin

Posted in conferences, conferenciarails, conferenciarails2007, development, javier ramirez, plugins, ruby on rails | Tagged: , , , , , | 5 Comments »

yellow pages hecho en rails

Posted by javier ramirez on November 17, 2007

Gracias a happycodr acabo de enterarme de que AT&T ha lanzado su web yellowpages.com en Rails.

Me parece muy relevante porque yellowpages lleva un montón de tiempo online (no sé si era con la misma empresa detrás, pero yo la usaba sobre el 2001 bajo el mismo dominio) y porque AT&T no es precisamente ‘Cooperativa de Almacenes Ruipérez’. Otro caso de negocio para tener en la recámara cuando hable de sitios relevantes usando Rails.

update: investigando un poco más, me he ido a su web y he visto que entre las actuales ofertas de empleo tienen dos en las que entre varios otros lenguajes ponen Ruby como deseable (junto a Java, PHP y Python), y como cualidades deseables del candidato indican

  • Contributions to open source community
  • Experience working in AGILE environment

A ver si cunde el ejemplo y este tipo de requisitos se empieza a hacer genérico no sólo en empresas pequeñas sino en entornos corporativos.

searchwords: relevant sites using rails

Posted in javier ramirez, ruby on rails, sites | Tagged: , , , , | Leave a Comment »

video de la mesa de frameworks del SIMO

Posted by javier ramirez on November 12, 2007

Por gentileza de Sergio, acabo de ver que el video de la mesa redonda de frameworks en la que participé en SIMO ya está colgado en google video.

Lo podeis ver directamente en este blog o si lo preferís podéis ir directamente a la web de google video

(dura más de una hora, pero realmente se puede dejar de fondo porque la imagen no es significativa, solamente el audio)

Posted in conferences, internet, javier ramirez, ruby on rails | Tagged: , , , , | Leave a Comment »