¿Qué es SaaS?

Software as a Service (SaaS, tipicamente pronunciado ‘sass’) es un modelo de implementación de software, según el cual un proveedor licencia una aplicación a los usuarios para su uso como un servicio bajo demanda. Los proveedores de software SaaS pueden hospedar la aplicación en sus propios servidores web o descargar la aplicación e el equipo del usuario, con la posibilidad de deshabilitarlo después de su uso o después de que el contrato bajo demanda expire. La funcionalidad bajo demanda puede ser manejada internamente para compartir licencias dentro de una compañía, o por un proveedor de servicios de aplicación (ASP por sus siglas en inglés) compartiendo licencias entre varias compañías.

Propósito y objetivo

Al contar con una licencia de usuario final compartida y bajo demanda, se busca “reducir la inversión” (que realiza la compañía) en hardware, desarrollo interno, mantenimiento, equipo humano e instalaciones.

Adicionalmente se busca brindar alta disponibilidad y acceso desde cualquier terminal que cuente con un navegador de internet.

Características principales

Las características principales son:
Características principales

Implementación

La arquitectura SaaS puede clasificarse dentro en cuatro “niveles de madurez”, donde los atributos principales son fácil configuración, eficiencia multi-tenant y escalabilidad. Cada nivel se distingue del anterior por la adición de uno de estos atributos.

  • Nivel 1 – Ad-Hoc / personalizado: En el primer nivel de madurez, cada cliente cuenta con su propia versión de la aplicación hospedada y ejecuta su propia instancia de la aplicación en los servidores de hospedaje. Migrar una aplicación tradicional no compartida o bajo un esquema de cliente-servidor, a este nivel de SaaS, generalmente requiere menos esfuerzo de desarrollo y reduce los costos de operación al consolidar el hardware de servidores y la administración.
  • Nivel 2 – Fácil configuración: El Segundo nivel de madurez proporciona mayor flexibilidad de programación a través de meta-datos configurables, de manera que varios clientes puedan utilizar instancias separadas del mismo código de la aplicación. Permitiendo al proveedor satisfacer diferentes necesidades a través de opciones de configuración detalladas, simplificándose el mantenimiento y la actualización del código base, el mismo que es común a todos los clientes.
  • Nivel 3 – Configurable y eficiencia Multi-Tenant: El tercer nivel de madurez agrega el concepto de “multi-tenancy” al segundo nivel, de manera que una sola instancia del programa se ejecuta para todos los clientes. Esto hace que el uso de recursos del servidor sea más eficiente, de tal forma que es completamente transparente para el usuario final. Sin embargo y en el transcurso del tiempo se tropieza con los limites de escalabilidad.
  • Nivel 4 – Escalable, configurable y eficiencia Multi-Tenant: El último nivel de madurez de SaaS, agrega la escalabilidad a través de un arquitectura que soporta una “conjunto”, donde se balancea la carga, de instancias de aplicaciones idénticas, ejecutándose en varios servidores. El proveedor puede incrementar o disminuir la capacidad del sistema a fin de cumplir con la demanda, adicionando o retirando servidores, sin la necesidad de alterar o modificar la arquitectura de las aplicaciones.

La arquitectura SaaS también puede utilizar la solución de virtualización, esto como una adición al concepto de multi-tenancy o como reemplazo. Uno de los beneficios de la virtualización es el incremento de capacidad del sistema sin esfuerzo de programación adicional. Visto desde la otra cara, se podría requerir un esfuerzo considerable de desarrollo para mejorar la eficiencia de la aplicación multi-tenant. La combinación de multi-tenancy y la virtualización proporcionan mayor flexibilidad el momento de afinar el sistema para un optimo rendimiento. Adicional a la virtualización a nivel del sistema operativo, existen otras técnicas que se pueden aplicar al modelo SaaS, como la virtualización de aplicaciones y dispositivos virtuales o de virtualización.

Para el desarrollo de aplicaciones SaaS se puede utilizar una gran variedad de componentes de software y frameworks. Estas herramientas ayudan a reducir el tiempo de desarrollo y la puesta en producción (time-to-market) de la aplicación SaaS, así como reducir el costo de conversión de aplicaciones tradicionales o el desarrollo e implementación de nuevas soluciones SaaS. Como ejemplo se incluyen los componentes para la administración de la suscripción, software de grid-computing, frameworks de aplicaciones web y productos de plataforma SaaS.

Saas y SOA

Como otras aplicaciones, las soluciones SaaS pueden aprovechar SOA (Service Oriented Architecture), a fin de permitir la comunicación entre diferentes aplicaciones. Cada servicio puede ser interpretado como un proveedor de servicios, exponiendo su funcionalidad a otras aplicaciones a través de intermediarios públicos. También pueden interactuar como solicitantes de servicios, incorporando datos y funcionalidades de otros servicios. Proveedores de ERP (Enterprise Resource Planning), promueven SOA en el desarrollo de sus propuestas SaaS.