Alfonso Marín López

Blog personal de un programador

App Engine

| 0 comments

appengine_lowres

Llevo ya unos meses jugando con la nueva plataforma como servicio (PAAS) de Google. Para empezar explicare un poco por encima que es una PAAS. No es más que una plataforma basada en un lenguaje, donde ya tienes montado y configurado el servidor de aplicaciones, la base de datos y el servidor web. Tu solo tienes que realizar tus aplicaciones en ese lenguaje y desplegarlo en su plataforma.

No voy a entrar cuales son las ventajas e inconvenientes de tener una infraestructura en la nube, hay cientos de páginas que hablan de ello. Por dejarlo clara mi postura solo diré que estoy totalmente a favor de ellas.

El tema que me trae ahora es el de las aplicaciones multi-tenant. Es la cualidad que tiene un software de soportar multitud de usuarios y empresas sobre la misma infraestructura. Tenéis un post mucho mejor explicado de Martin y en este otro de Saasmania tenéis los diferentes niveles y modelos.

Como estaba jugando con App Engine, me preguntaba cual sería la mejor manera de hacerlo.

  • Diferentes bases de datos: Teniendo en cuenta que no controlas tú la base de datos, ya que no hay una base de datos relacional detrás, esta opción resulta difícil.
  • Diferentes servidores: igual que antes, solo tenemos un dominio y un contexto, y hay va todo. Tampoco veo la forma.

Así que me he puesto a buscar que hacen algunos para estos casos. Ni que decir tiene que en español no hay apenas información relevante sobre el tema. Así que con mi muy defectuoso ingles me he puesto a mirar alternativas. Pido un poco de comprensión por si entiendo mal las cosas.

En el grupo Google de AppEngine hablan precisamente de esto. Hare un resumen de las ideas que comentan.

  • Implementación propia de DatastoreService: Añadir un campo que sea el namespace, para poder filtrar los datos de las peticiones. Aunque advierten de que puede dar mucho trabajo. Es la primera aproximación que se me había ocurrido.
  • Una aplicación por cada inquilino: Los de Datanueclears hablan de una nueva funcionalidad para poder hacer esto mismo, con cada alta se instancia todo en un nuevo dominio. Aunque en AppEngine ya estas limitado a 10 aplicaciones.
  • Y por ultimo parece que los chicos de Google tienen pensado permitir un cierto multi-Tenant. Aunque no está claro.

Estaba bastante ilusionado con AppEngine en java, pero ahora que lo veo con más detenimiento puede que no sea tan bonito.
¿Conocéis alguna forma de salvar el escollo? ¿Alguna alternativa?