La tendencia XaaS: Todo como Servicio

En el artículo anterior se definieron los conceptos de la Nube y Cloud Computing, y se repasó rápidamente la evolución de tecnologías que favorecieron el surgimiento de dicho paradigma. En el presente artículo se definirán los diferentes conceptos “*aaS” relacionados con el concepto de cloud computing (SaaS, PaaS, IaaS, etc.). SaaS digamos que ya es un término hasta cierto punto conocido, pero ¿y los demás? Eso es lo que se aclarará en este artículo.

Los servicios de computación en la Nube, así como muchas otras implementaciones basadas en SOA, caen sobre el enfoque de servicios compuestos (composite services), una característica que en inglés se describe como “composable”. Wikipedia define a un “highly composable system” como un sistema que “provee componentes recombinables que pueden ser seleccionados y ensamblados en varias combinaciones diferentes para satisfacer los requerimientos específicos del usuario. Los atributos esenciales que definen que un componente sea composable consisten en que sea: auto-contenido (modular), esto es, que pueda ser desplegado independientemente, puede cooperar con otros componentes, pero los componentes dependientes son reemplazables. Debe ser también stateless, es decir, que no debe manejar estado, lo que significa que trata cada petición como una transacción independiente, sin relación con alguna petición anterior.”

CloudComputingLayers

Este gráfico muestra las 5 capas lógicas de una plataforma de cloud computing identificadas en el artículo Toward a Unified Ontology of Cloud Computing, de Lamia Youseff, Maria Butrico y Dilma Da Silva, un muy buen artículo que aporta una definición de la separación en categorías de los componentes de los entornos de cloud computing. A continuación una breve descripción de las diferentes categorías de componentes recombinables generalmente aceptados que contribuyen a brindar servicios de computación en la Nube, y que se encuentran presentes en todos (o casi todos, al menos por el momento) los proveedores de cloud computing:

Software como Servicio:

El término Software as a Service (SaaS) es comúnmente utilizado para referirse a software en la Nube. Sin embargo, a pesar de que la mayoría de los sistemas de software como servicio son servicios en la Nube, no todos lo son.

Application as a Service es sinónimo de SaaS. Este modelo consiste en el despliegue vía Web de una aplicación de software comercial, de manera que esté disponible para los usuarios finales a través de la Internet a través de un navegador Web, con un modelo de precios basado en suscripción o en uso, a diferencia de una licencia vitalicia tradicional para una versión en particular. Además, como usuarios de SaaS, no nos interesa dónde está alojada la aplicación, sobre qué Sistema Operativo se ejecuta, o si fue desarrollada utilizando .NET, Java, PHP u otra tecnología. Lo mejor de todo: no se requiere ninguna instalación en el entorno cliente.

Los ejemplos de SaaS incluyen aplicaciones como Microsoft Office Live, Microsoft Exchange Online, Microsoft SharePoint Online, Microsoft Dynamics CRM Online, GMail y SalesForce.com. Si bien Microsoft fue de los primeros en mostrar su apoyo al paradigma que representa SaaS con servicios Web basados en SOAP, ha ido migrando gradualmente para promover su visión de S+S (Software plus Services).

Software más Servicios:

El modelo de Sofware plus Services (S+S) propuesto por Microsoft como alternativa a SaaS consiste en la combinación de las capacidades de ejecución local de software con las de software como servicio. De esta manera, el software como servicio pasa a ser un complemento de las aplicaciones on premise para proveer algún valor agregado (mejor experiencia, más características, contenido adicional, etc.).

Algunos de los beneficios más importantes de este modelo sobre el de SaaS consisten en:

· Las aplicaciones on premise ofrecen por lo general una mejor experiencia que las aplicaciones Web. Tecnológicamente hablando, Por lo general es más simple brindar una muy buena experiencia de usuario en una aplicación local que una experiencia regularmente buena en una aplicación Web, lo cual se debe al funcionamiento del protocolo HTTP subyacente en Web. Esto se puede conseguir con tecnologías como AJAX, pero personalmente lo considero un esfuerzo adicional.

· En el modelo S+S un usuario puede trabajar desconectado localmente y sincronizar luego su información con la de la Nube, lo cual es un factor importante para usuarios móviles como vendedores o trabajadores en campo.

· Si la privacidad de la información es un tema delicado para la organización, en el modelo de S+S el proveedor puede proveer a sus usuarios una opción de mover sus datos no privados a la Nube y mantener la información sensible de manera local sin que eso impacte en las capacidades de la solución de software.

· Para los fabricantes de soluciones de software, el modelo de S+S se torna bastante atractivo debido a que les brinda nuevos modelos de negocio le permiten monetizar sus soluciones con estrategias de precios basadas por ejemplo en transacciones, suscripciones, publicidad, sincronización, respaldo de información, etc.

· En el modelo S+S se puede aprovechar la potencia de procesamiento del equipo cliente, justificando la inversión en el mismo. De acuerdo con la Ley de Moore, con los constantes avances tecnológicos, cada vez se tienen mejores equipos y más baratos, me parece que habría que aprovecharlos.

Uno de los ejemplos más interesantes de S+S es el EC2 de Amazon Web Service que corre en Windows Server 2003 y SQL Server [Express] 2005 con almacenamiento de datos de EBS (Elastic Block Storage) y almacenamiento de S3 para AMIs (Amazon Machine Images) y respaldos de instantáneas de EBS.

Almacenamiento como Servicio:

Debido a que la abstracción de nuestro hardware en la Nube no es tan simple como reemplazar nuestros servidores con la virtualización ofrecida por el proveedor de cloud computing, sino que también es necesario reemplazar el sistema de almacenamiento físico. Este es el motivo por el cual el almacenamiento en la Nube es de vital importancia en una implementación de cloud computing. Este modelo nos permite cargar nuestros datos (documentos, imágenes, etc.) hacia la Nube sin tener que preocuparnos de cómo se almacena o de las estrategias de backup o de alta disponibilidad utilizadas por nuestro proveedor de servicios para garantizar el acceso a nuestra información cuando la necesitemos.

El ejemplo más simple de almacenamiento como servicio es aquel de tipo Files as a Service (o FaaS por sus siglas en inglés), permite a los usuarios almacenar archivos de diferentes tipos de datos en un sistema de archivos jerárquico altamente escalable y recuperarlos a través de la Internet utilizando los diferentes tipos MIME (Multipurpose Internet Mail Extension). FaaS fue uno de los primeros servicios disponibles basados en la Nube. Diversas compañías en Internet(como SmugMug, DropBox, Ozmo, y HolaServers) están aprovechando las capacidades de FaaS provistas por el servicio S3 (Simple Storage Service) de Amazon Web Services (AWS) para proveer sobre esa plataforma sus propios servicios para almacenar imágenes y otros archivos, y le brindan acceso a los usuarios de manera gratuita o a cambio de un pequeño monto. Windows Live SkyDrive de Microsft es un desde hace ya unos años un proveedor de FaaS que le brinda actualmente a los usuarios hasta 25GB de almacenamiento libre de cargos.

El término Data Storage as a Service o Database as a Service implica el almacenamiento estructurado de datos con al menos algunas de las características de un sistema de gestión de bases de datos relacionales (RDBMS), como capacidades de consulta, índices de llave primaria y foránea, y asociaciones de entidades a través de JOINs. Los servicios en la Nube comerciales, como Amazon Web Services (AWS), Google App Engine (GAE) y Windows Azure, ofrecen tablas EAV (Entity-Attribute-Value) indexadas y lenguajes de consulta que tienen alguna relación con SQL. Microsoft ofrece con SQL Azure Database (SADB) “servicios de bases de datos altamente escalables, expuestas en Internet y distribuidas en la Nube para el almacenamiento y procesamiento de consultas relacionales.” (ver referencia).

SADB, Amazon SimpleDB, y el DataStore de GAE ofrecen características avanzadas que los califican como Databases-as-a-Service (DBaaS). Las características de estos sistemas de bases de datos en la Nube, que por el momento son limitadas, van a ir incrementándose con el tiempo, conforme los proveedores de dichos servicios van actualizando su plataforma.

Plataforma como Servicio:

Los componentes de Platform as a Service (PaaS) son todos aquellos orientados al desarrollo y despliegue de aplicaciones sobre la plataforma de la Nube. Estos componentes proveen los medios necesarios para soportar el ciclo de vida de construcción y entrega de servicios y aplicaciones Web sobre la nube. Usualmente comprende por lo menos estos tres elementos distintos:

❑ Componentes de tipo Herramientas como Servicio o Tools as a Service (TaaS), que provee herramientas de desarrollo y lenguages basados en la Web, como Microsoft Visual Studio (para Visual C#, Visual Basic, IronPython y IronRuby) o la alternativa de código abierto Eclipse (principalmente para Java). Las Herramientas de Windows Azure para Visual Studio 2008 (y las recientemente lanzadas para Visual Studio 2010) incluyen plantillas para crear roles Web y roles de trabajo, y servicios de flujos de trabajo secuenciales en la Nube, que pueden ejecutarse bajo una instancia local (desarrollo) o en la Nube (staging/producción) de Windows Azure (conocida como la Fábrica). Google App Engine ofrece soporte de una variante de Python y Java, así como los frameworks webapp y Django.

❑ Una plataforma virtualizada de ejecución de aplicaciones que permita ejecutar aplicaciones en la Nube, típicamente sobre una IaaS y entregada como SaaS. Amazon EC2 tiene AMIs pre-configuradas para distribuciones de 32 bits y de 64 bits de Linux, Windows Server 2003 R2 con SQL Server 2005, y bases de datos Oracle, así como OpenSolaris de 64 bits. Windows Azure corre sobre Windows Server 2008 con una version personalizada del hipervidor Hyper-V de Microsoft. Google App Engine ofrece entornos de ejecución de Python y de Java por separado.

❑ Componentes de tipo FaaS para persistir el estado en tiempo de ejecución de la aplicación. En el EBS (Elastic Block Store) de Amazon Web Services, se utilizaría SimpleDB o S3, en el entorno de GAE se utilizaría BigTable, o las tablas y blobs del Servicio de Almacenamiento de Windows Azure.

Infraestructura como Servicio:

En el artículo anterior se mencionó que a través de la Nube su podía consumir servicios, que podían consistir en software o hardware. El concepto de infraestructura como servicio aterriza los principios de TI orientada a servicios.

Los proveedores de Infrastructure as a Service (IaaS) brindan los recursos tradicionales de un centro de datos, como potencia de procesamiento, memoria y almacenamiento de computación, solo que en el caso del cloud computing, estos recursos se encuentran en un ambiente virtualizado sobre una red (típicamente, pero no obligatoriamente, la Internet), y esto lo hace altamente escalable. A las implementaciones de IaaS o PaaS proporcionadas sobre una Intranet se les conoce como nubes privadas.

El modelo de negocio que los proveedores de IaaS utilizan generalmente consiste en un modelo de precios basado en uso o en suscripciones, modelo conocido para el caso particular de IaaS como de utility computing o de computación de utilidad.

Comunicaciones como Servicio:

Communications as a Service es un modelo de outsourcing orientado a las comunicaciones empresariales. Estas comunicaciones pueden incluir los servicios de VoIP, mensajería instantánea, colaboración y aplicaciones de videoconferencia utilizando dispositivos fijos y móviles.

El proveedor de CaaS es responsable por toda la administración y mantenimiento del hardware y el software de comunicaciones. Este provee las capacidades de comunicaciones a través de un entorno orientado a servicios, configurable, programable, predecible y confiable, y que cuenta con seguridad de red, provisionamiento dinámico de overlays de red virtuales para el aislamiento de tráfico o para asignar ancho de banda dedicado, encriptación de comunicaciones, y monitoreo de la red. Todo esto es críticio, pues el proveedor de servicios de CaaS ofrece una calidad de servicio garantizada en base los Acuerdos de Nivel de Servicio (o SLAs por sus siglas en inglés).

Este modelo le permite a las empresas desplegar selectivamente los medios y dispositivos de comunicaciones en un modelo “pay as you go”, según sea necesario, eliminando la gran inversión de capital y los gastos generales en curso para un sistema cuya capacidad a menudo pueden ascender o descender por debajo de la demanda actual. El modelo de CaaS ofrece flexibilidad y capacidad de expansión que las pequeñas y medianas empresas de otro modo no podrían costear, que permite la adición de dispositivos, modos o la cobertura de la demanda. La capacidad de red y conjunto de características se puede cambiar de un día para otro si es necesario para mantener nivelada la funcionalidad con el ritmo de la demanda y no desperdiciar los recursos cuando no se requieran.

Monitoreo como Servicio:

Los componentes de (Monitoring as a Service) MaaS se encargan de monitorear el funcionamiento de la plataforma en la Nube y de notificar al usuario de computación en la Nube de eventos como fallas de disponibilidad de la red, errores, o disminución en las velocidades de la Nube. Por ejemplo, Cloud Status es una simple aplicación para el iPhone que monitorea el estado de Amazon Web Services, Google App Engine y Twitter y reporta si el servicio es normal, tiene problemas, o si está caído. Una implementación de MaaS puede contener componentes de auditoria para la evaluación de vulnerabilidad de la red o para verificar el cumplimiento de los contratos de nivel de servicio (SLAs) y la precisión de los cargos de uso mensuales.

Algunos proveedores de servicios de MaaS, como RightScale, también proveen de automatización del despliegue de instancias para incrementar el número de instancias AMI en ejecución durante picos de demanda del servicio y para reducir el número de las mismas conforme la demanda disminuye.

Todo como Servicio:

EaaS, XaaS, o *aaS son las diferentes siglas asociadas al modelo de Everything as a Service, subconjunto del modelo de cloud computing. Wikipedia describe al modelo propuesto por EaaS como “el concepto de ser capaz de invocar componentes reutilizables y de grano fino de software a través de una red.’’ Lo que falta en esta definición es la interacción orquestada entre los diversos componentes para poder resolver un problema de negocio, que es frecuentemente llamada Integration as a Service.

Del mismo modo que Microsoft es el principal propulsor de S+S, HP es el mayor promotor del modelo de EaaS. Este modelo tiene como propósito principal superar los retos técnicos que surgen al migrar las operaciones de un negocio completamente a Internet, o lo que es lo mismo, a la Nube.

Espero que hayan quedado un poco más claros los diversos conceptos *aaS aquí tratados. El siguiente artículo se tratará acerca de los diversos factores que favorecen o dificultan la adopción del modelo de cloud computing. Hasta la próxima.

La Nube como Plataforma Computacional

En estos días mucho se escuchan los términos de “cloud computing” o computación en la nube, y se habla mucho de lo beneficioso que puede resultar este modelo para las empresas, pero ¿de qué se trata realmente toda esta nueva revolución? ¿Cuáles son los verdaderos beneficios de adoptar este modelo de computación? Y como nada puede ser 100% positivo (por lo menos no para todos los escenarios posibles), ¿cuáles son los riesgos que conlleva adoptar la computación en la nube? El presente artículo es el primero de una serie en la que trataré de responder estas y otras preguntas que suelen surgir al mencionar el concepto del cloud computing.

¿Y qué es realmente la computación en la Nube?

En primer lugar, podemos definir la computación en la nube como la evolución de una serie de tecnologías que han llevado a alterar la manera en la que las organizaciones de hoy (y de mañana) conceptualizan y construyen su infraestructura de TI. Esta evolución ha originado un nuevo paradigma en el cual se pueden ofrecer/consumir servicios de computación a través de Internet.

Respecto a la “Nube”, según la definición de Wikipedia, es simplemente una metáfora de la Internet, y la computación en la Nube es un paradigma que permite ofrecer servicios de computación a través de Internet. Personalmente, me parece un poco escasa dicha definición. Sin embargo, me parece excelente la definición que formula George Reese en su libro Cloud Application Architectures:

“La Nube no es simplemente una manera más elegante de describir a la Internet. Si bien la Internet es un fundamento clave para la Nube, la Nube es algo más que la Internet. La Nube es donde vas para usar la tecnología cuando la necesitas, por el tiempo que lo necesites, y ni un minuto más. No instalas nada localmente, y no pagas por la tecnología cuando no la estás utilizando.”

De esta manera, la Nube como tal pasa a ser un servicio que podemos consumir bajo nuestras propias necesidades. Dicho servicio puede consistir en hardware o en software, o en una combinación de ambos, y se encuentra conceptualmente en la Nube. Es bajo este contexto que surgen conceptos como SaaS, IaaS y PaaS, que revisaremos más adelante en un artículo posterior.

Otro factor que contribuye al concepto de la Nube por su esencia intangible es el hecho de que ni el usuario, ni los desarrolladores saben en dónde ni cómo se encuentra alojado su servicio (y ciertamente no necesitan saberlo). Quizás incluso ni el proveedor de los servicios puede determinar inmediatamente en dónde se encuentra una instancia de los servicios dentro de su centro de datos.

¿Y cómo llegamos a este modelo de la nube?

Ahora que ya sabemos un poco acerca de lo que representa la Nube como plataforma, me parece que sería adecuado centrarnos en cómo es que ha sido posible este fenómeno. Como mencioné unas líneas arriba, se ha tratado de una evolución progresiva en distintos ámbitos de las llamadas Tecnologías de la Información.

En cuanto a la plataforma de servicios de Internet desde un simple proveedor de acceso telefónico a Internet hasta la inminente realidad de una plataforma de aplicaciones de software de nivel empresarial.

EvolucionISPs

Al principio los proveedores de servicios de Internet se enfocaban únicamente en establecer la infraestructura de conectividad necesaria para que los individuos o empresas puedan acceder a la World Wide Web. Por su parte, las empresas estaban enfocadas en construir su propia infraestructura de redes.

Posteriormente, con el “Boom” de Internet, el enfoque de los proveedores de servicios de Internet se orientó a brindar el acceso a sus servidores Web (por entonces aún con recursos limitados)  para que los clientes puedan hospedar sus sitios Web y puedan tener presencia en Internet.

Más adelante tomó importancia el concepto de housing, en el que las empresas hospedan sus propios servidores en los grandes centros de datos de los proveedores de servicios de Internet. Bajo este modelo, una vez delegadas las tareas de TI y de comunicaciones en el proveedor especializado en la materia, las empresas se pueden enfocar en lo que es realmente importante para su negocio, e incluso pueden aprovechar sus propias instalaciones de red y su ancho de banda para otros usos exclusivamente internos.

Últimamente ha surgido una creciente oferta de suscripciones a servicios de software, de manera que los clientes no tienen la necesidad de preocuparse por los detalles de la infraestructura subyacente. Es aquí que son los fabricantes de software quienes han tomado la iniciativa y aprovechan la Internet no sólo como medio para ofrecer sus servicios a sus clientes sino como plataforma para esos servicios.

En el futuro próximo, conforme van madurando los diferentes aspectos (entre ellos destacan por su importancia la seguridad, la interoperabilidad y la conectividad) de las diferentes plataformas de “Cloud Computing”, la Nube se terminará de consolidar como esa gran plataforma de servicios en la que será totalmente transparente para las empresas consumir sus servicios como si se tratara de soluciones on-premise, con la ventaja obvia de utilizar los recursos a la medida de sus necesidades en todo momento. De esta manera se podrán contar con soluciones completas en las que resulte relativamente sencillo integrar la plataforma en la Nube con la plataforma on-premise y, eventualmente, dependiendo de las necesidades particulares de cada cliente, se podría migrar gran parte o incluso toda la infraestructura de la organización a la Nube.

Hasta aquí hemos dado un repaso rápido al proceso evolutivo de los servicios brindados por los ISPs (Proveedores de Servicios de Internet). Sin embargo, para llegar a la propuesta de computación en la Nube, no solamente ha tenido que ver la evolución de los servicios de Internet. Otro factor importante que también ha sido sujeto de esta evolución es el que representan los dispositivos con los cuales el usuario puede acceder a estos servicios, y a las aplicaciones brindadas a través de estos servicios. Las computadoras también han sido objeto de una evolución similar que nos han llevado a nuestra realidad actual. En esta evolución destacan las siguientes fases:

EvolucionClientes

Las PCs y Laptops tradicionales son las protagonistas indiscutibles de esta evolución, pues si bien aún se mantienen vigentes, son algunos de sus aspectos los que han conllevado a la evolución en los equipos cliente utilizados por las empresas. Un factor clave que ha dirigido esta evolución es el costo, tanto de los equipos como de las licencias de software de las computadoras.

Como alternativa a las PCs tradicionales surgieron inicialmente las Network Computers (NCs), la primera generación de clientes ligeros. Estos equipos contaban con componentes y software más baratos que los de las PCs pero carecían de unidades de almacenamiento, por lo cual requerían de un servidor de archivos para almacenar la información. Las NCs se diferenciaban de los terminales tontos antiguos en que éstos últimos utilizaban los recursos de procesamiento (memoria y procesador) del mainframe al cual se conectaban mientras que las NCs tenían los suyos propios, pero mucho más limitados que los de las PCs, por lo que solamente podían ejecutar un navegador Web y unas pocas aplicaciones descargadas. A esta oleada iniciada por las NCs de Oracle se unieron algunos otros fabricantes entre los que destacan IBM con su Network Station y Sun con su Java Station. Finalmente al surgir soluciones para utilizar las PCs tradicionales como NCs este tipo de dispositivos fueron quedando descontinuados.

Posteriormente, WebTV Networks desarrolló entre los años 1995 y 1996 un dispositivo que conectados a la línea telefónica accedía por discado directo a un servicio online propietario que le brindaba el acceso a correo electrónico y a Internet, y que se conectaba a las entradas de audio y video de una TV convencional. Microsoft vio una oportunidad en esta variación de cliente ligero para Internet y adquirió la compañía a fines de 1997. En 1999 entró en escena AmericaOnLine con su servicio AOL-TV para competir directamente con la oferta de Microsoft. En 2001 Microsoft relanzó WebTV, entonces bajo el nombre MSN TV. En 2002 AOL-TV cerró sus servicios. Más adelante, en 2004, Microsoft lanzó MSN TV2, esta vez basado en Windows CE. Actualmente Microsoft todavía brinda el servicio de WebTV y MSN TV, pero ya no comercializa los equipos.

Durante los últimos 2 años ha habido una explosión en la demanda de dispositivos móviles como Smartphones y Netbooks, y esta tendencia no hace más que acentuarse con el surgimiento de dispositivos cada vez más ligeros y con mejores prestaciones, y ¿cómo no mencionarlo? Los precios también van disminuyendo conforme mejora la tecnología. Las Netbooks son pequeñas laptops pensadas principalmente en la movilidad y en el acceso a Internet. Perfectas para consumir aplicaciones en la Nube, no les parece? Estas Netbooks tienen sus orígenes en las pequeñas y baratas (pero robustas) laptops del programa Una Laptop por Niño (ULPN u OLPC, por sus siglas en inglés) orientado a brindar a cualquier niño del mundo conocimiento y acceso a las tecnologías de la información como formas modernas de educación. El éxito del programa impulsó a diferentes fabricantes a desarrollar laptops con las características necesarias para poder brindar movilidad, una razonable capacidad de proceso y, sobre todo, el acceso a redes inalámbricas e Internet. Esta nueva generación de dispositivos está principalmente orientada al mercado de consumo, pero también podría ser aprovechada a un nivel empresarial conforme las prestaciones van mejorando.

Va quedando claro cómo los avances tecnológicos acontecidos en la última década han ido allanando el camino para el surgimiento de este nuevo paradigma de computación que representa el cloud computing, con una plataforma en Internet en la que se pueden montar diversos servicios y dispositivos cliente optimizados para consumir los servicios brindados por dicha plataforma. En el siguiente artículo revisaremos la tendencia de XaaS (Todo como Servicio) que ha surgido como parte del modelo de cloud computing. Hasta la próxima.