Administración del Conocimiento – UML Simulation

Arquitectura GLASS comparada con Ruby on Rails

Posted in Aplicaciones, OODBMS - Base de Objetos, Web by smalltalkuy on enero 26, 2011

Descripción

En esta ocasión voy a describir la arquitectura del framework GLASS (gemstone/s – linux – apache – seaside – smalltalk) con más detalle, y luego voy hacer una comparación sencilla con Ruby on Rails.

También ver el blog de Avi Bryant (Twitter) sobre GemStone/SRuby on Railshttp://www.avibryant.com/2008/03/ive-had-a-numbe.html

En la comparación solamente se mostrarán las diferencias, cada uno puede sacar sus conclusiones según su conocimiento.

La siguiente imagen denota de forma detallada (pero no completa) la arquitectura de GLASS:

Network: representa la web y los diferentes clientes web que se conectan con GLASS.

Database host: es el repositorio alojado físicamente en un servidor. El repositorio se puede dividir en N extent, cada extent es un archivo en disco.

Transaction logs host: es el LOG de transacciones de GemStone/S que puede estar ubicado en otro servidor diferente del  repositorio (como en este caso).

Stoned Process: el proceso Stoned es el coordinador del repositorio y de los procesos Gem. Este proceso se encarga de guardar y recuperar objetos del repositorio en disco, asi como asegurar la concurrencia de los procesos Gem y la consistencia del repositorio. El proceso Stoned puede correr en el mismo host que los Gem o no (esto es configurable).  Los conflictos de actualización son resueltos por el proceso Stoned. Hay un Stoned por repositorio.

Gem Process: son (procesos) máquinas virtuales que le dan vida a los objetos del repositorio, ejecutan métodos de las clases, alteran objetos y crean nuevos, etc. Cada Gem actual como un repositorio único para los clientes. Los procesos Gem también pueden actualizar el repositorio si esa actualización no entra en conflicto con algún otro proceso Gem.

Shared Page Cache: son segmentos de memoria virtual del SO. Cuando los objetos son accedidos a disco entonces se van cargando en el Shared Page Cache. Si un objeto todavía no ha sido accedido entonces cuando se lee por primera vez se carga en el Shared Page Cache, luego el próximo Gem que requiera ese objeto no tiene que acceder a disco. Como se ve en la figura puede haber más de un Shared Page Cache, estos se llaman Remote Shared Page Cache. Las sincronización entre los diferentes Shared Page Cache se haceautomáticamente  y es transparente para el desarrollador. Hay procesos (que son invisibles cuando estamos desarrollando) que se encargan de copiar y mantener actualizados los diferentes Shared Page Cache.

Continuations

Esta plataforma de desarrollo soporta Continuations. Continuations da la capacidad de persistir la pila de ejecución de un proceso Gem (recordar un Gem es una máquina virtual) y guardarla en el repositorio. Luego otro proceso Gem puede acceder a esa pila de ejecución en el repositorio, cargarla en memoria y continuar con su normal . Por lo que no hay que preocuparse en identificar que proceso Gem se hizo cargo de que petición.

Debug

Si ocurre un error en nuestra aplicación web somos capaces de guardar la pila de ejecución en el repositorio, y luego acceder al servidor y como DBAs levantar la pila de ejecución y analizar el error.

Si !!! todo el contexto del error se guarda en el repositorio y vamos a poder explorar todo los objetos involucrados en ese error, y ejecutar paso a paso lo que hizo el usuario para que surgiera ese error.

Escalabilidad

GLASS soporta escalabilidad horizontal, es decir, que a cualquier problema de performance se puede agregar más servidores para albergar más procesos Gem. Como los procesos Gem son las máquinas virtuales entonces tengo más recursos para responder a las diferentes peticiones.

Sistemas Reales

Toda esta arquitectura puede correr sobre el mismo servidor o distribuido en N servidores.

JP Morgan

Hay sistemas en producción dónde cientos de máquinas (de los mismo usuarios de la intranet) albergan cientos de procesos Gem. En este caso al escalabilidad es horizontal.

London Petroleum Exchange

Un solo servidor alberga toda la aplicación, este servidor es un AIX Power 6 con 512 Gb de memoria.

Comparación con Ruby on Rails

No soy experto en Ruby on Rails solamente conozco parte de la arquitectura.

Una aplicación Ruby on Rails típica consta de: un cluster de servidores para soportar la base de datos, varios caches en memoria, varios procesos que se encargan del funcionamiento de los objetos y la renderización de páginas web.

Normalmente la base de datos es MySQL y se ubica en unos o más servidores, luego hay varios servidores que albergan los caches en memoria (memcached) (el número de servidores para MySQL es el mismo que para los memcached), y se activan entre 8 y 12 worker processes para realizar el procesamiento, llamados mongrels (incluyen el interprete Ruby y el Web Server Mongrel).

Los mongrels aceptan las peticiones web y ejecutan el código de la aplicación. Los objetos dentro de los worker processes están vivos, envían y reciben mensajes, ejecutan métodos, cambian los estados de los objetos Ruby, etc. Los objetos solamente existen en la memoria de un mongrel en particular.

Estos objetos se persisten en la base de datos usando los Active Records de Ruby. Cuando un mongrel modifica un objeto, y la transacción hace commit entonces objeto se actualiza en MySQL, y cuando algún otro proceso lo lea obtendrá la versión actualizada del objeto.  Los objetos dentro de MySQL están muertos, no hacen nada hasta que son puestos dentro del algún proceso mongrel.

Ruby on Rails y GLASS (gemstone/s linux smalltalk seaside)

MAGLEV hace posible el desarrollo de aplicaciones Ruby sobre GemStone/S, con una la arquitectura idéntica a la de Smalltalk.

 

Anuncios

4 comentarios

Subscribe to comments with RSS.

  1. La pagina de tu Blog se ha actualizado…

    [..]Articulo Indexado Correctamente en la Blogosfera de Sysmaya[..]…

  2. […] Articulos Actualizados : Arquitectura GLASS comparada con Ruby on Rails […]

  3. […] Articulos Actualizados : Arquitectura GLASS comparada con Ruby on Rails […]

  4. […] GemStone/S para principiantes – Martin McClure,  más info sobre GemStone/S click aquí y aquí. […]


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s

A %d blogueros les gusta esto: