Entradas etiquetadas como Multi-tenancy

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

¿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