Entradas etiquetadas como Multitenancy

El Software como Servicio y Aplicaciones Web

Software como Servicio y Aplicaciones WebEl Software como Servicio (mejor conocido como SaaS por sus siglas en inglés de Software as a Service), es hoy día una de las tendencias más tangibles y fuertes en el mundo de la tecnología. Cuando hablamos de Computación en la Nube o Cloud Computing, muchas veces estamos hablando realmente del Software como Servicio. Podemos decir que Infraestructura como Servicio (IaaS: Acceso, vía Internet, a recursos computacionales de hardware), Plataforma como Servicio (PaaS: Acceso, vía Internet, a recursos de desarrollo de software) y Software como Servicio son las tres principales variantes que conforman el movimiento de Computación en la Nube.

¿Software vía Internet? ¿Pero no son las aplicaciones Web, software que se usa y se consume vía Internet? Efectivamente así es. Pero entonces, las aplicaciones Web tienen años desarrollándose. Desde finales de la década de los 90s ya se hacían desarrollos en PHP o en ASP. Entonces, ¿porqué SaaS es una tendencia nueva? Bien, la respuesta corta es que efectivamente todo el software como servicio son aplicaciones Web (ya sea tradicionales o también algunas aplicaciones para móviles). Sin embargo no todas las aplicaciones Web pueden ser consideradas software como servicio. Más bien yo diría que, hoy día, muy pocas podrían ser consideradas así.

La diferencia esencial estriba en el concepto de Multitenancy. Este concepto tiene ligeramente diferentes significados (aunque todos similares) ya sea que estemos hablando de IaaS, PaaS o SaaS. En el caso del software se refiere a la capacidad que éste tiene de tener varias empresas usuario (o tenants) en la misma instalación de software. Por ejemplo, si un sistema CRM debe prestale el servicio a dos empresas que nada tienen en común, y además dicho CRM no necesariamente tiene que ser instalado dos veces (una vez para cada empresa), entonces estamos hablando de SaaS. Es decir la misma instalación de software (y la misma instancia de ejecución de dicho software) atiende a dos o más empresas distintas. De hecho, típicamente atiende a muchas empresas con una sola instalación.

En los casos donde se tuviese que hacer una nueva instalación del software por cada empresa usuaria (aunque fuese en el mismo servidor Web), entonces estaríamos hablando de una aplicación Web normal. Dicho de otro modo, para ser SaaS la empresa usuaria del software, debe tener una clave y una contraseña (típicamente muchas de hecho, para cada uno de sus empleados) que le permita al software saber de qué empresa se trata.

A nivel técnico crear software SaaS tiene algunas implicaciones. La más importante quizá (pero no la única) es que la Base de Datos debe estar bien diseñada para soportar Multitenancy, típicamente con algún mecanismo (existen varias soluciones) para que en sus tablas de información se guarde el código de empresa y, de esa manera, fácilmente la aplicación pueda mantener una “Vista” de la información de la empresa.

¿Y si usted es un proveedor de software que quiere desarrollar SaaS versus una Aplicación Web tradicional? Bueno, debe tener esto claro, para poder diseñar adecuadamente el software y más importante aún para hacer las adaptaciones a su modelo comercial (ya no licencia o venta del software sino vía alquiler del mismo). En mi caso particular, con Arckanto software estamos ya inmersos en la conversión de una aplicación Web (sistema de operaciones microfinancieras) hacia el modelo técnico y comercial de Software como Servicio.

¿Y si usted es una empresa que quiere desarrollar SaaS para su propia empresa o para beneficio de sus clientes individuales (como lo hacen hoy día la mayoría de los bancos, por ejemplo)? En este caso la diferencia entre SaaS y aplicación Web no tiene mayor relevancia, quizá ninguna. ¿Y si usted es una empresa que quiere comprar o rentar software? Bueno, tener claro que tendrá varios beneficios si el software es verdaderamente SaaS y no solo una aplicación Web tradicional, siendo los dos principales beneficios el que no tiene que desembolsar una inversión grande inicial en licencias (aunque el costo final es similar en ambos casos) y el hecho de que las actualizaciones y mejoras del software usted las obtendrá de manera automática (pues el proveedor mantiene una sola instancia de la aplicación).

Al final, quizá lo importante de todo esto es que el mundo del software está cambiando a ritmo vertiginoso. Precisamente el mes pasado di una charla sobre Tecnologías Emergentes para las cámaras de tecnología de información y de exportadores de Costa Rica (CAMTIC y CADEXCO) donde les describía esta tendencia: el 85% (¡sí, 85%!) del nuevo software para el año 2015 será entregado a las empresas bajo el modelo SaaS, de acuerdo a este artículo de la empresa Samanage basado en datos de la consultora Gartner. Es una buena noticia para todos, tanto empresas como proveedores de tecnología. A nivel mundial existe ya mucho software de negocios entregado bajo el modelo SaaS, aunque en América Latina es aún muy incipiente. Pero hay que ir pensando en el cambio ya.

Y finalmente, este video explicativo (versión inglés) de InfoWorld, sintetiza muy bien en dos minutos los principales elementos del concepto de SaaS. Recomendado.

, , , , , ,

2 comentarios

[Video] ¿Qué es el software como servicio?

Con tanto “ruido” y novedades acerca del Cloud Computing y el Software-as-a-Service he notado que existe algo de confusión con los términos. Inclusive existe un sobreuso de los mismos. Debido al “momentum” tan positivo que existe para las aplicaciones en la Nube, muchos proveedores de software mercadean sus aplicaciones de negocios como “de Nube”. Aunque muchas de ellas sí lo son, existe una gran mayoría que únicamente aprovechan el concepto para vender sistemas de información con un modelo ya bien conocido: el de proveer una aplicación vía la Web o Internet. Esto no es necesariamente “Software como Servicio” (o aplicaciones de Nube).

Un excelente video que nos clarifica varios conceptos acerca del Software-as-a-Service o aplicaciones de negocio “en la Nube” es el siguiente, creado por la empresa norteamericana Salesforce. El video es muy bueno; lo recomiendo. Y por supuesto, debo aclarar que aunque no tengo ninguna relación con esa empresa, sí tengo en cartera de mis servicios, la consultoría de implantación de productos de Salesforce.


Fuente del video: Salesforce.com

¿Qué distingue entonces a una aplicación de negocios “de Nube” o al software como servicio? OJO: No estoy incluyendo aquí el servicio de Infraestructura de Hardware en la Nube (Infraestructure as a Service – IaaS) sino especícamente el caso del software de aplicaciones de negocios en la Nube. Sus características distintivas:

  1. Existe una sola aplicación (una sola instalación) para muchas empresas clientes. Es decir, usa Arquitectura Multitenancy (en el video esto lo traducen como Multiusuario). Y por tanto, la aplicación debe ser escalable.
  2. Cada una de las empresas clientes podrá configurar su propia aplicación y determinar los usuarios que la usarán. El uso del software se realiza vía el browser o navegador de Internet.
  3. El modelo de uso del software es vía renta o suscripción. La aplicación no es instalable en equipos de la empresa cliente, ni dentro ni fuera de ella. Y lógicamente no existe el concepto de “licencias de uso”.
  4. No importa, en lo que a la aplicación concierne, qué infraestructura de hardware la soporta. El hardware no es de la empresa que usa la aplicación y tampo esto debe ser importante para la empresa cliente.
  5. Los beneficios principales son: costo menor; accesibilidad desde cualquier lado y en cualquier momento; actualizaciones automáticas (siempre al día).

Creo que la mayor confusión que existe es al confundir una aplicación de Nube y una aplicación Web. Las aplicaciones de Nube son necesariamente aplicaciones Web. Pero no viceversa pues la gran mayoría de las aplicaciones de Internet no están basadas en Arquitectura Multitenancy.

That is it. Eso es. Entonces cuando les ofrezcan una aplicación de negocios de Nube o Software-as-a-Service, regresen a ver los 3 minutos del video y pregúntense si el software es realmente de Nube.

, , , , , ,

1 comentario

[Video] Multitenancy con Ruby on Rails

Una de las características esenciales de las aplicaciones para la Nube es su arquitectura de Multitenancy. La arquitectura multitenancy implica una sola instancia de la aplicación y una sola base de datos para múltiples empresas clientes quienes usan la aplicación de negocios de acuerdo a sus necesidades. Para cada empresa cliente es como si la aplicación fuera únicamente para ellos. El concepto de Multitenancy es fácil de entender cuando lo comparamos con lo que no es Multitenancy. Veamos:

1. Una aplicación que desarrollamos y que aunque está lista para funcionar en Web e Internet (o en Intranet), tenemos que instalarla nuevamente cada vez que alguna empresa la requiere. Así, si hacemos 10 instalaciones (aunque sea en el mismo servidor Web físicamente; o sea, en la misma infraestructura) tenemos 10 Bases de Datos y 10 instancias de la aplicación. Si el sistema tenemos que corregirlo o hacer algún upgrade tendríamos que hacerlo 10 veces. So, esa aplicación aunque funciona en Web e Internet NO es Multitenant. Sí; es una aplicación Web pero No es una aplicación de Nube. De hecho este es el típico modelo anterior que se usaba en los servicios de los Application Service Providers (ASP).

2. Una aplicación masiva (muchos usuarios) tales como Facebook o Twitter no se considera Multitenant porque su modelo de separación de datos está basado en el Rol de Acceso de los usuarios que Inician Sesión. Es decir, todos los usuarios ven lo mismo (o casi) basándose en los permisos que le otorga el sistema. Aunque es una base de datos, los usuarios no entran a un espacio donde sus datos están separados de los demás.

3. Siendo así, la característica fundamental de una aplicación Multitenant es que tengamos una sola base de datos para las 10 ó 100 ó las que sean empresas clientes de nuestra aplicación. Un ERP Multitenant (o sea, de Nube) tendrá una única base de datos y una sola instancia de la aplicación. Si debemos corregir un error o hacer un upgrade bastará con que lo hagamos una sola vez y todos las empresas clientes del ERP recibirían el beneficio de manera inmediata. Buenos ejemplos: Salesforce, Zoho, Paymo, entre muchos.

Con esto en mente, vean este excelente video donde Guy Naor, CTO de MorphLabs, explica cómo diseñar una aplicación Ruby on Rails con Arquitectura Multitenancy y, por ende, una aplicación 100% de Nube. Si eres un Rails Developer o Rails Architect y estás por empezar una aplicación Nube Multitenant, entonces este video es imperdible..!

Vodpod videos no longer available.

Fuente: Confreaks 2009

, , , , , ,

Deja un comentario

¿Computación “en la Nube”? – Parte 1: Una opinión desde el punto de vista técnico

A veces me pregunto si toda este buzzword con respecto a la Computación en la Nube (Cloud Computing) no es más que un concepto tecnológico algo difuso pero, al fin y al cabo, un “refrito” (como sucede en muchas ocasiones) de conceptos antiguos del mundo de la Tecnología de la Información (TI). Pero mientras más lo pienso, veo que no; que esto es algo realmente nuevo; sobre todo desde el punto de vista tecnológico (y esto es lo esencial de este post) aunque desde el punto de vista negocios sí pueda parecerse a otras ideas ya exploradas (sobre esto me explicaré en la Parte 2 de este post donde abordaré el punto de vista empresarial del concepto).

Desde un punto de vista técnico simplista, el concepto de Computación en la Nube podría erróneamente resumirse como todo aquel sistema que funciona enteramente en Internet vía la Web y que se accede mediante un Navegador (browser) o algún otro dispositivo, incluyendo los móviles. Pero no; visto desde ese punto de vista el concepto no sería ni nuevo ni innovador pues existen sistemas que funcionan de esa manera casi desde el inicio de la popularización de las páginas Web por allá en el segundo lustro de la década de los 90s.

Además, si yo hospedo en un servidor de Internet un sistema o sitio Web que luego vendo o alquilo por una cuota, esto también sería considerado Computación en la Nube y eso existe ya desde hace varios años. Inclusive compañías grandes tienen sistemas que les pueden vender a sus clientes y que son instalados en servidores de Internet listos para ser usados vía Web.

Aunque la computación en la Nube incluye todo lo anterior, técnicamente hablando, eso aún NO es computación en la Nube, ya que estamos hablando de una instancia de la aplicación pero atendiendo a un solo cliente (uni-tenant). Si el proveedor de la solución cambia el software o actualiza la versión de software por una versión mejor y, suponiendo que quiere darle ese beneficio a todos los clientes que han comprado dicha aplicación, tendría que ir instalación por instalación a actualizar el software (o pedirle a cada cliente que ellos mismos hagan la actualización).

Entonces la palabra clave es Multi-tenancy. Esto quiere decir que el software funcionará con una sola instancia de la aplicación para muchos clientes. Todos a la vez. Multi-tenancy: Una instancia de la aplicación, quizá sólo una Base de Datos (elástica y escalable, pero una sola) atendiendo a muchos clientes a la vez. He ahí lo nuevo del Cloud Computing. Este es lo esencial; lo core del concepto: Arquitectura Multi-tenancy.

Ante un escenario así, ¿qué sucedería si el proveedor del software cambia de versión a una mejorada? Teóricamente, cambiaría únicamente la versión de producción de dicho software y ¡voilá!, todos los clientes que acceden a la aplicación tendrían la nueva versión sin tener que actualizarla o que el proveedor tenga que actualizar cliente por cliente. Por ejemplo, si Google cambia Gmail, automáticamente todos los clientes (usuarios) de Gmail obtienen las mejoras que Google le hace a dicho producto. Este mismo escenario es posible con aplicaciones empresariales (tanto de misión crítica como otras) o utilitarias, no sólo con correo electrónico.

El caso más conocido en el mundo es quizá Salesforce que es un CRM que nació y creció con el concepto de Cloud Computing. Así, las empresas que usan dicho CRM obtendrán las últimas versiones del software ya que están en un ambiente Multi-tenancy. Lógicamente, detrás de todo ello, existen complejas arquitecturas (que espero podamos ir comentando en este blog) y plataformas que deben (y de hecho, lo hacen) asegurar la escalabilidad, elasticidad de la aplicación, desempeño, seguridad, estabilidad, entre otros conceptos. Pero lo logran y he ahí lo novedoso del caso.

Así que, a seguir explorando el mundo del Cloud Computing.

, , , ,

1 comentario