UNIVERSIDAD TECNOLÓGICA DE PANAMÁ FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES BASE DE DATOS MONOGRAFÍA LA COMPUTACIÓN EN LA NUBE Y LAS DIFERENTES PLATAFORMAS DE SERVICIO IMPLEMENTADAS POR EMPRESA INTEGRANTES: VICTOR GONZALEZ EDZON GAITAN NOMBRE DEL ASESOR: DRA. LILIA MUÑOZ 2016 UNIVERSIDAD TECNOLÓGICA DE PANAMÁ FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES BASE DE DATOS MONOGRAFÍA LA COMPUTACIÓN EN LA NUBE Y LAS DIFERENTES PLATAFORMAS DE SERVICIO IMPLEMENTADAS POR EMPRESA ASESOR: DRA. LILIA MUÑOZ INTEGRANTES: VICTOR GONZALEZ EDZON GAITAN 2016 AGRADECIMIENTO Agradecemos a la profesora Lilia Muñoz por todo su apoyo, su tiempo, su confianza y su comprensión durante las clases y a la hora de evaluar este trabajo. Gracias por compartir con nosotros sus conocimientos y su colaboración. II DEDICATORIA A NUESTRAS FAMILIAS Dedicamos esta tesis principalmente a nuestras familias por apoyarnos cuando lo necesitamos, ya que siempre estuvieron ahí ante cualquier situación durante todos estos años de estudio, desde el colegio hasta la universidad velando por nuestro bien y ayudándonos a cumplir nuestras metas. A NUESTROS AMIGOS Y COMPAÑEROS DE TRABAJO: Por compartir con nosotros todos estos años de estudio y de crecimiento tanto personal como profesional, por sus consejos, su apoyo en las buenas y en las malas, por ayudarnos a pesar de las distancias y contratiempos. III ÍNDICE CAPÍTULO I. GENERALIDADES DE COMPUTACIÓN EN NUBE 1.1CONCEPTO ..................................................................................................... 7 1.2 CARACTERÍSTICAS ......................................................................................... 8 1.2.1 Auto-servicio por demanda ................................................................... 8 1.2.2 Conjunto de recursos ............................................................................ 8 1.2.3 Rápida elasticidad ................................................................................. 8 1.2.4 Servicio medido .................................................................................... 9 1.2.5 Acceso amplio desde la red .................................................................. 9 1.3 NIVELES DE LA COMPUTACIÓN EN LA NUBE ....................................................... 9 1.3.1 Nube publica ......................................................................................... 9 1.3.2 Nube privada....................................................................................... 10 1.3.3 Nube hibrida........................................................................................ 11 1.4 MODELOS DE IMPLEMENTACIÓN ..................................................................... 12 1.4.1 Software como servicio (SaaS) ........................................................... 12 1.4.2 Plataforma como Servicio (PaaS) ....................................................... 13 1.4.3 Infraestructura como Servicio (IaaS) .................................................. 13 CAPITULO II. DIFERENTES IMPLEMENTADAS POR EMPRESA PLATAFORMAS DE SERVICIO 2.1 PRINCIPALES PROVEEDORES DE SERVICIOS DE DESARROLLO EN LA NUBE ......... 15 2.1.1 Amazon.com Inc. ................................................................................ 15 2.1.2 Google Inc........................................................................................... 16 2.1.3 IBM .................................................................................................... 16 2.1.3 MICROSOFT ..................................................................................... 17 2.1.3 RED HAT ............................................................................................ 17 2.2 CARACTERÍSTICAS PARA LAS PLATAFORMAS ANALIZADAS ................................ 18 2.2.1 Escalabilidad automática .................................................................... 18 2.2.2 BluePrints/Imágenes para acelerar el aprovisionamiento ................... 20 2.2.3 Soporte para múltiples lenguajes ........................................................ 21 2.2.4 Soporte para almacenamiento de datos ............................................ 22 2.2.5 Soporte para Colas y Servidores Web ............................................... 25 2.2.6 Alternativas de Hipervisores .............................................................. 26 2.2.7 Soporte en Sistemas operativos Windows .......................................... 27 2.2.8 Soporte en Sistemas operativos Linux................................................ 27 2.2.9 Tabla de plataformas en la nube por empresa ................................... 28 CONCLUSION.................................................................................................... 30 REFERENCIAS .................................................................................................. 31 IV RESUMEN Dentro del presente trabajo se abordan los diferentes puntos como los conceptos, características, niveles y modelos de implementación de la computación en la nube, cabe destacar en este último punto se verán las una pequeña reseña de diferentes empresas desarrolladoras de plataformas de servicios como lo son Amazon, Google, IBM, Red Hat y Microsoft para pasar a comparar las principales características que comparten entre sí. V INTRODUCCION Se solía utilizar aplicaciones instaladas en nuestras propias computadoras, así como almacenar archivos y datos de todo tipo sobre ellos. En el entorno empresarial, este escenario es un poco diferente, ya que es más fácil encontrar aplicaciones disponibles en los servidores que pueden ser asequibles por cualquier terminal autorizado a través de una red. La principal ventaja de este modelo es de hecho posible, al menos en la mayoría de los casos, utilizar las aplicaciones, incluso sin acceso a Internet o de la red. En otras palabras, puede utilizar estos recursos modo fuera de línea. Sin embargo, todos los datos generados serán restringidas a ese equipo, excepto cuando red compartida, que no es muy común en el hogar. Incluso en el entorno empresarial, esto puede generar algunas limitaciones tales como la necesidad de tener una licencia de un software en particular para cada equipo, por ejemplo. Este escenario ha creado la situación ideal para el surgimiento de la Computación en la Nube, con estas muchas aplicaciones, así como los datos de archivo y afines, no es necesario ser instalados o almacenados en el ordenador o en un servidor del próximo. Este contenido se pasa que se disponga en "nubes", es decir, la de Internet. El proveedor de la aplicación encajar todas las tareas desarrollo, almacenamiento, mantenimiento, actualización, copia de seguridad, programación entre otros; con esto el usuario no tiene que preocuparse de nada de esto, sólo tiene que acceder y utilizar los diferentes servicios a su disposición. VI CAPÍTULO I. GENERALIDADES DE COMPUTACIÓN EN NUBE 1.1 Concepto. El Instituto Nacional de Estándares y Tecnología y su laboratorio de tecnología información, NIST por el acrónimo en idioma inglés, han definido la Computación en la nube de la siguiente manera: “Computación en la nube es un modelo para habilitar acceso conveniente por demanda a un conjunto compartido de recursos computacionales configurables, por ejemplo, redes, servidores, almacenamiento, aplicaciones y servicios, que pueden ser rápidamente aprovisionados y liberados con un esfuerzo mínimo de administración o de interacción con el proveedor de servicios.” Como se puede ver, es un nuevo modelo de prestación de servicios de negocio y tecnología, que permite incluso al usuario acceder a un catálogo de servicios estandarizados y responder con ellos a las necesidades de su negocio, de forma flexible y adaptativa, en caso de demandas no previsibles o de picos de trabajo, pagando únicamente por el consumo efectuado, o incluso gratuitamente en caso de proveedores que se financian mediante publicidad o de organizaciones sin ánimo de lucro. El cambio que ofrece la computación desde la nube es que permite aumentar el número de servicios basados en la red. Esto genera beneficios tanto para los proveedores, que pueden ofrecer, de forma más rápida y eficiente, un mayor número de servicios, como para los usuarios que tienen la posibilidad de acceder a ellos, disfrutando de la ‘transparencia’ e inmediatez del sistema y de un modelo de pago por consumo. Así mismo, el consumidor ahorra los costes salariales o los costes en inversión económica (locales, material especializado, etc.). 7 1.2 Características Existen varios modelos de nubes que varían en concepto según el autor, en este caso la NIST lo promueve según su disponibilidad: 1.2.1 Auto-servicio por demanda Un consumidor puede aprovisionar de manera unilateral capacidades de cómputo, tales como tiempo de servidor y almacenamiento en red, en la medida en que las requiera sin necesidad de interacción humana por parte del proveedor del servicio. 1.2.2 Conjunto de recursos Los recursos computacionales del proveedor se habilitan para servir a múltiples consumidores mediante un modelo “multi-tenant”, con varios recursos tanto físicos como virtuales asignados y reasignados de acuerdo con los requerimientos de los consumidores. Existe un sentido de independencia de ubicación en cuanto a que el consumidor no posee control o conocimiento sobre la ubicación exacta de los recursos que se le están proveyendo, aunque puede estar en capacidad de especificar ubicación a un nivel de abstracción alto; por ejemplo, país, estado o centro de datos. Algunos ejemplos incluyen almacenamiento, procesamiento, memoria, ancho de banda y máquinas virtuales. 1.2.3 Rápida elasticidad Las capacidades pueden ser rápidamente y elásticamente aprovisionadas, en algunos casos automáticamente, para escalar hacia fuera rápidamente y también rápidamente liberadas para escalar hacia dentro también de manera veloz. Para el consumidor, estas capacidades disponibles para aprovisionar a menudo aparecen como ilimitadas y pueden ser compradas en cualquier cantidad en cualquier momento. 8 1.2.4 Servicio medido Los sistemas en la nube controlan automáticamente y optimizan el uso de recursos mediante una capacidad de medición a algún nivel de abstracción adecuado al tipo de servicio; por ejemplo, almacenamiento, procesamiento, ancho de banda y cuentas de usuario activas. El uso de estos recursos puede ser monitoreado, controlado y reportado, proporcionando transparencia tanto para el proveedor como para el consumidor por el servicio utilizado. 1.2.5 Acceso amplio desde la red Las capacidades están disponibles sobre la red y se acceden a través de mecanismos estándares que promueven el uso desde plataformas clientes heterogéneas, pesadas o livianas, como el PC, un teléfono móvil o un navegador Internet. 1.3 Niveles de la computación en la nube 1.3.1 Nube Publica Es un término que hace referencia a una “infraestructura que está disponible para el público en general o para un gran sector de la industria, y es provista por una organización que comercializa servicios a demanda”. Cuando esa infraestructura es básica es decir que se refiere a equipamiento sin software ni servicios asociados hablamos de Infraestructura como servicio (un ejemplo de esta oferta es Amazon o IBM Blue Cloud); en cambio, cuando además se ofrece un sistema operativo, una base de datos y algunos servicios de administración y mecanismos automatizados de escalabilidad y facturación por uso, se hace referencia a una Plataforma como Servicio (por ejemplo, Windows Azure, Google App Engine o Sun Cloud). La nube pública es entonces un conjunto compartido de recursos, que sirven a muchas organizaciones, con un grupo compartido de recursos de proceso definidos por la relación entre un proveedor del servicio y un cliente. Pueden entregarse servicios como aplicaciones de productividad, o recursos de Infraestructura como servicio (IaaS por sus siglas en inglés) en ejecución en máquinas virtuales en un servicio de 9 10 nube disponible solo para usuarios autenticados registrados y administrados de manera remota por profesionales que trabajan para el cliente. En otros casos, el proveedor de nube puede entregar toda la administración día a día de recursos de proceso como parte de un servicio PaaS. El beneficio de este paradigma se resume en el ahorro de costos (no hay inversión inicial en equipamiento o licencias de software), y en la agilidad con que varía la utilización de recursos de TI; mientras avanza la adopción de este modelo, la industria trabaja para resolver algunos desafíos referidos a la seguridad, la interoperabilidad y la portabilidad de la información. Por esto, y por algunas dificultades que persisten en los sistemas de pago, en la actualidad son más las empresas que se orientan a la nube privada que aquellas que avanzan hacia la nube pública. Las plataformas de nube pública permiten a gobiernos, empresas y organizaciones de diversa índole montar sus aplicaciones, pero también existen aplicaciones disponibles genéricas listas para usar, como Office 365 o Intune de Microsoft, Google Apps o Microsoft Dynamics Online, entre otras. En el modelo de nube pública que no debe confundirse con nube comunitaria- habitualmente hay cargos variables según diferentes criterios: tiempo de uso, volumen de tráfico, cantidad de usuarios concurrentes o visitas, etc. En cualquier caso, el modelo de pago escala según el éxito del sitio o las aplicaciones que se coloquen en la nube. 1.3.2 Nube Privada Un centro de datos completamente virtualizado con autoservicio y automatización. El autoservicio y la automatización son las capacidades fundamentales para aumentar la agilidad y diferenciarse de un centro de datos virtualizado. Las Entidades corporativas y gubernamentales medianas y grandes implementan una nube privada para alcanzar mayor agilidad comercial, incrementar la eficiencia y adquirir una ventaja competitiva. En un ambiente de TI tradicional, el software de aplicaciones y el hardware 10 compatible son provisionados, administrados y financiados en sistemas aislados y, por lo general, implementados durante meses. Una infraestructura de nube privada permite el acceso a una variedad de recursos de TI en cuestión de minutos u horas y alinea los costos con el consumo real. Permite a la organización iniciar proyectos con mayor rapidez, aprovechar rápidamente nuevas funcionalidades y oportunidades de ingresos y responder ágilmente a los cambios del mercado; y esto hace que la TI deje de ser un centro de costos y se convierta en un socio estratégico. 1.3.3 Nube Hibrida El modelo híbrido combina los modelos anteriormente descritos, sobre nubes públicas y privadas, de manera que se aprovecha la ventaja de localización física de la información gestionada por las nubes privadas con la facilidad de ampliación de recursos de las nubes públicas. Las principales cuestiones a vigilar en este modelo son la privacidad y la protección de datos, al igual que en la nube pública. Las nubes híbridas consisten en combinar las aplicaciones propias de la empresa con las consumidas a través de la nube pública, entendiéndose también como la incorporación de servicios de computación en la nube a las aplicaciones privadas de la organización. Esto permite a una empresa mantener el control sobre las aplicaciones críticas para su negocio y aprovechar al mismo tiempo las posibilidades ofrecidas por los servicios ofertados por la nube en aquellas áreas donde resulte más adecuado. Parece que actualmente este tipo de nubes está teniendo buena aceptación en las empresas, por lo que se están desarrollando software de gestión de nube que permita controlar la nube privada e incorporar al mismo tiempo recursos y servicios de proveedores públicos de Cloud Computing. 11 1.4 Modelos de implementación Cuando nos referimos a desarrollar e implementar aplicaciones en la nube tenemos que remarcar de qué manera lo vamos a hacer, ya que dentro del concepto nube existen distintas formas de hacerlo que nos permiten una mayor flexibilidad a la hora de desplegar nuestras aplicaciones o mantenerlas. Entre estas distintas formas que puede adoptar los distintos modelos la nube se encuentran: Software as a Service (SaaS), Plataform as a Service (PaaS) y Infraestructure as a Service (IaaS) así como se puede apreciar en la Figura 1.1 . Figura 1.1 Modelo de capas de implementación de plataformas en la nube 12 1.4.1 Software como servicio (SaaS) Del inglés software as a service, SaaS, se encuentra en la capa más alta y caracteriza una aplicación completa ofrecida como un servicio, por-demanda, vía multitenencia —que significa una sola instancia del software que corre en la infraestructura del proveedor y sirve a múltiples organizaciones de clientes. Las aplicaciones que suministran este modelo de servicio son accesibles a través de un navegador web -o de cualquier aplicación diseñada para tal efecto- y el usuario no tiene control sobre ellas, aunque en algunos casos se le permite realizar algunas configuraciones. Esto le elimina la necesidad al cliente de instalar la aplicación en sus propios computadores, evitando asumir los costos de soporte y el mantenimiento de hardware y software. Ejemplos populares de Saas son Google Docs, Salesforce, Dropbox, Gmail Plataforma como Servicio (PaaS) Del inglés platform as a service, PaaS, es la capa del medio que se muestra en la Figura 1.1, esta provee la encapsulación de una abstracción de un ambiente de desarrollo y el empaquetamiento de una serie de módulos o complementos que proporcionan, normalmente, una funcionalidad horizontal (persistencia de datos, autenticación, mensajería, etc.). De esta forma, un arquetipo de plataforma como servicio podría consistir en un entorno conteniendo una pila básica de sistemas, componentes o APIs pre configuradas y listas para integrarse sobre una tecnología concreta de desarrollo (por ejemplo, un sistema Linux, un servidor web, y un ambiente de programación como Perl o Ruby). Las ofertas de PaaS pueden dar servicio a todas las fases del ciclo de desarrollo y pruebas del software, o pueden estar especializadas en cualquier área en particular, tal como la administración del contenido. Ejemplos comerciales son Google App Engine, que sirve aplicaciones de la infraestructura Google; Microsoft Azure, una plataforma en la nube que permite el desarrollo y ejecución de aplicaciones codificadas en varios lenguajes y 13 tecnologías como .NET, Java y PHP o la Plataforma G, desarrollada en Perl. Servicios PaaS como éstos permiten gran flexibilidad, pero puede ser restringida por las capacidades disponibles a través del proveedor. En este modelo de servicio al usuario se le ofrece la plataforma de desarrollo y las herramientas de programación por lo que puede desarrollar aplicaciones propias y controlar la aplicación, pero no controla la infraestructura. 1.4.2 Infraestructura como Servicio (IaaS) Del inglés infrastructure as a service IaaS, la infraestructura como servicio también llamada en algunos casos hardware as a service, HaaS) se encuentra en la capa inferior y es un medio de entregar almacenamiento básico y capacidades de cómputo como servicios estandarizados en la red. Servidores, sistemas de almacenamiento, conexiones, enrutadores, y otros sistemas se concentran (por ejemplo, a través de la tecnología de virtualización) para manejar tipos específicos de cargas de trabajo desde procesamiento en lotes (“batch”) hasta aumento de servidor/almacenamiento durante las cargas pico. El ejemplo comercial mejor conocido es Amazon Web Services, cuyos servicios EC2 y S3 ofrecen cómputo y servicios de almacenamiento esenciales (respectivamente). Otro ejemplo es Joyent, cuyo producto principal es una línea de servidores virtualizados, que proveen una infraestructura en demanda altamente escalable para manejar sitios web, incluidas aplicaciones web complejas escritas en Python, Ruby, PHP y Java. 14 CAPITULO II. DIFERENTES IMPLEMENTADAS POR EMPRESA 2.1 PLATAFORMAS DE SERVICIO Principales proveedores de servicios de desarrollo en la nube 2.1.1 Amazon.com Inc. Amazon.com Inc. es uno de los principales proveedores de servicios de desarrollo de nubes. Esta corporación ha invertido mucho tiempo y dinero en la creación de pequeños servidores al servicio de su página web, estos recursos de hardware están siendo puestos a disposición de los desarrolladores. La Computación elástica en la nube (EC2 acrónimo del inglés Elastic Cloud Computing) es un servicio web comercial para desarrolladores y compañías que les permite el alquiler en una nube dentro de los servidores de Amazon. Una de sus características principales de EC2 es el despliegue de aplicaciones escalables. Con esto permite a sus clientes solicitar un número determinado de maquina virtuales, en las que puede cargar cualquier aplicación que este desee. Un cliente puede crear, iniciar y poner fin a las instancias de demanda del servidor, logrando así una verdadera elasticidad. 2.1.2 Google Inc. Los servicios se presentan en forma de App Engine que permite ejecutar aplicaciones web en la infraestructura de Google. Las aplicaciones desarrolladas con esta tecnología son fáciles de construir, de fácil mantenimiento, y con muy buena escalabilidad cuando el tráfico y las necesidades de almacenamiento aumentan. Algunas de las ventajas que ofrece el uso del servicio de App Engine de Google son: pagar por lo que se usa, no hay costos de establecimiento, los recursos utilizados (ancho de banda y almacenamiento) se miden por gigabytes, los precios son competitivos, además de permitir control del importe máximo de los recursos que consume la aplicación. El servicio gratuito se limita a 500 MB de 15 almacenamiento, CPU y ancho de banda, suficientes para soportar 5 millones de visitas al mes. El consumo por encima de estos límites requiere de facturación (implican costos). App Engine incluye algunas características como son: Web de servicios dinámicos Almacenamiento persistente con consultas, ordenación y transacciones. Escala automática y balance de carga Soporte para todas las tecnologías web comunes API para la autentificación de usuarios y envió de correo electrónico utilizando cuentas Google. Un usuario desarrolla la aplicación (mediante Google API y en cualquiera de los dos lenguajes Java o Python) y la sube a la nube de App Engine, una vez ahí, está lista para ser utilizado por los usuarios. 2.1.3 IBM IBM es una de las compañías más fuertes a nivel mundial en lo referente a hardware de computación de nivel, lo cual le da la posibilidad de ofrecer soluciones de cómputo en la nube. Esta compañía centra sus esfuerzos en las pequeñas y medianas empresas con una suite de servicios basados en la nube en demanda a través Blue Cloud. Un ejemplo de oferta que ofrece Blue Cloud es la serie denominada IBM Express Advantage que incluye datos de copia de seguridad y recuperación, la continuidad de correo electrónico y archivos, además de funcionalidades de seguridad. IBM proporciona la carga de trabajo basado mayormente en código abierto. Incluye también herramientas de virtualización lo que la posicionan como una de las empresas más confiables para el modelo de IaaS. 16 2.1.4 MICROSOFT En su caso, WINDOWS AZURE es una plataforma de nube abierta y flexible que permite compilar, implementar y administrar aplicaciones rápidamente en una red global de centros de datos administrados por Microsoft. Puede compilar aplicaciones en cualquier lenguaje, herramienta o marco, permitiendo además integrar sus aplicaciones de nube públicas con el entorno de TI existente. Algunas de sus principales características de la plataforma Windows Azure son: Alto nivel de servicio Abierto Servidores ilimitados Almacenamiento ilimitado Gran capacidad 2.1.5 RED HAT OpenShift es la oferta de plataforma como servicio para Computación en la nube de Red Hat en esta plataforma los desarrolladores de aplicaciones pueden construir, desplegar, probar y correr sus aplicaciones. Proporciona espacio en disco, recursos de CPU, memoria, conectividad de red y un servidor Apache o JBoss. Dependiendo de la aplicación, también proporciona acceso a una plantilla de sistema de archivos para esos tipos (por ejemplo, PHP, Python y Ruby/Rails). También proporciona herramientas de desarrollo integradas para apoyar el ciclo de vida de las aplicaciones, incluyendo la integración de Eclipse, JBoss Developer Studio, Jenkins, Maven y GIT. OpenShift utiliza un ecosistema de código abierto para proporcionar servicios clave de la plataforma de aplicaciones móviles (Appcelerator), servicios No SQL (MongoDB), servicios de SQL (PostgreSQL, MySQL), y más. JBoss proporciona una plataforma de middleware empresarial para aplicaciones Java, proporcionando apoyo para Java EE6 y servicios integrados tales como transacciones y mensajes, que son fundamentales para las aplicaciones empresariales. 17 2.2 Características para las plataformas analizadas A continuación, se presenta las características para las plataformas analizadas según su Escalabilidad automática, BluePrints/Imágenes para acelerar el aprovisionamiento, Soporte para lenguajes, Soporte para almacenamiento de datos, Soporte para Colas y Servidores Web, Alternativas de Hipervisores, Soporte en Windows y Linux. 2.2.1 Escalabilidad automática (AutoScaling) Le permite mantener la disponibilidad de la aplicación y aumentar o reducir automáticamente la capacidad de Amazon EC2 según las condiciones que defina. Puede utilizar Auto Scaling para asegurarse de que está ejecutando la cantidad deseada de instancias de Amazon EC2. También puede incrementar automáticamente el número de instancias de Amazon EC2 durante los picos de demanda para mantener el desempeño y reducir la capacidad durante los periodos de calma en la demanda para minimizar los costos. Auto Scaling resulta adecuado tanto para aplicaciones con patrones estables de demanda como para aquellas aplicaciones que muestran variaciones de uso según la hora, el día o la semana. Ejemplos de estos proveedores más evolucionados son las plataformas Amazon EC2 Cloudwatch, Windows Azure Autoscaling application Block, que otorgan la posibilidad de definir los criterios y o umbrales que determinarán las reglas de escalabilidad que dispararán los mecanismos necesarios para incrementar o decrementar la cantidad de recursos de hardware virtualizados que serán asignados a las aplicaciones, de manera que estas puedan cumplir ajustándose dinámicamente a la demanda de sus clientes. En particular, Google está diseñado para alojar aplicaciones multi usuarios. Cuando una aplicación puede atender a múltiples usuarios sin degradar el rendimiento, se dice que esta aplicación es escalable. Las aplicaciones escritas escalan en forma automática, si más personas utilizan la aplicación, el App Engine permitirá más recursos para esta aplicación y administra el uso de estos recursos. 18 A diferencia de los servicios de alojamiento tradicionales o servidores que uno puede administrar, con Google App Engine, sólo paga por los recursos utilizados. El pago es por recursos de CPU, almacenamiento mensual, ancho de banda utilizado y distintos recursos dentro del App Engine es lo que se factura. Para iniciar, Google App Engine proporciona cierta cantidad de recurso gratis, perfecto para aplicaciones pequeñas con bajo tráfico. La escalabilidad RedHat OpenShift permite que una aplicación reaccione a cambios en el tráfico y automáticamente re-distribuya los recursos disponibles. Si la aplicación es no-escalable, el “cartridge” web o principal sólo ocupa un “gear”. Si es escalable, hasta tres: “cartridge” web, “cartridge” embebido y HAProxy Si el tráfico aumenta, el “gear” HAProxy comprueba si hay un gear libre y crea una copia del web “cartridge” web. Si el tráfico disminuye, el HAProxy elimina el “gear” innecesario. Sin embargo, el arquitecto de una aplicación que se ejecuta en la plataforma OpenShift no cuenta con la posibilidad de definir cuáles serán los umbrales que dispararán los mecanismos de escalabilidad automática. En el caso de IBM SmartCloud, los nodos individuales que participan en la consola de procesos o en el servidor de búsqueda son totalmente escalables. Pueden añadirse más nodos para ampliar el rendimiento del componente de análisis. Para mejorar el rendimiento de almacenamiento y de búsqueda, se añaden nuevos nodos de búsqueda. Se pueden añadir nodos de consola de procesos para abarcar un aumento de usuarios conectados simultáneamente. La plataforma de IBM también brinda cierta flexibilidad para definir reglas de escalabilidad. 19 2.2.2 BluePrints / Imágenes para acelerar el aprovisionamiento Se componen de máquinas virtuales que ya tienen un sistema operativo y los aplicativos o marcos de trabajo (frameworks) instalados y pre configurados, para que sea más rápido comenzar a trabajar en la plataforma, permitiendo al usuario final focalizarse en la construcción o despliegue de sus aplicaciones. Un ejemplo popular de blueprint es llamado “LAMP”, imagen de máquina virtual conformada por Linux Apache MySQL y PHP. Amazon con su plataforma EC2 tiene la mayor oferta de imágenes para acelerar el aprovisionamiento de los proveedores analizados, contando con casi 2000 plantillas de máquinas virtuales con diferentes configuraciones. Otro proveedor que brinda buenas soluciones en este aspecto es Microsoft Azure, que otorga la posibilidad de acelerar el aprovisionamiento de máquinas virtuales con diferentes sistemas operativos y configuraciones listadas en una galería, brindando además la posibilidad de crear las propias imágenes de máquinas virtuales personalizadas para que se adecúen perfectamente a las necesidades de sus clientes. Aunque Microsoft Azure virtualiza sus entornos con su hipervisor Hiper-V, otorga igualmente la posibilidad de convertir máquinas virtuales de VMware de manera que se puedan subir y utilizar en la plataforma Windows Azure, facilitando considerablemente la migración de aplicaciones existentes a su plataforma. Google App Engine, en cambio, no brinda la posibilidad de acelerar el aprovisionamiento de entornos puesto que su plataforma es Infraestructura como servicio (IaaS); esto implica que App Engine no otorga la posibilidad de crear máquinas virtuales propias ni tampoco utilizar otras existentes. Existe un nuevo servicio de Google llamado Google App Compute que otorga la posibilidad de crear máquinas virtuales basadas en el sistema operativo Linux y tiende a otorgar servicios de plataforma como servicio (PaaS), sin embargo, esta plataforma aún se está gestando y no ha alcanzado un grado de madurez siquiera comparable 20 con las plataformas que en este estudio se tratan y analizan. La plataforma abierta de Red Hat, OpenShift, permite gestionar y acelerar el aprovisionamiento de máquinas virtuales por medio de su producto RHC (Red Hat Client), y el uso de lenguajes de scripting, mayoritariamente en lenguaje Bash, bajo el sistema operativo Red Hat Linux. IBM SmartCloud brinda también las herramientas para que sus usuarios puedan acelerar el aprovisionamiento de entornos en su Plataforma como servicios, otorgando 10 tamaños de instancias diferentes para sus máquinas virtuales de manera que se puedan ajustar a los requerimientos de sus aplicaciones. Asimismo, brinda 3 modelos de licenciamiento: máquinas virtuales preconfiguradas con la modalidad de pago basado en el uso, acceder a las imágenes utilizando licencias propias ya adquiridas, o subir programas de software de IBM bajo la modalidad “traer software y licencias propias (del inglés” Bring Your Own Software and License”). 2.2.3 Soporte para múltiples lenguajes El soporte dedicado para distintos lenguajes de programación es transcendental al momento de escoger una plataforma, puesto que es un factor limitante en cuanto a las posibilidades que un proveedor puede ofrecer, y que sus clientes pueden explotar. En este aspecto, Amazon EC2 ofrece múltiples opciones que cubren los principales lenguajes y plataformas de desarrollo del mercado actual. Estas opciones se derivan del soporte y compatibilidad de la plataforma con gran cantidad de versiones de sistemas operativos cubriendo desde aplicaciones .net escritas en C#, aplicaciones Java multiplataforma, aplicaciones C++, aplicaciones Ruby, y también lenguajes interpretados como Perl y Python. Microsoft Windows Azure, por su parte, brinda soporte para los lenguajes .Net (C#, Vb.net, J#, Asp.net, etc), Java (tanto con máquinas virtuales con sistema operativo Microsoft Windows, como también con Sistemas operativos basados en Kernel Linux, tales como Ubuntu u OpenSUSE), Node.js para ejecutar código 21 javascript del lado del servidor (por su expresión en inglés “server side”), y también Python. Podrían soportarse además otros lenguajes y plataformas utilizando imágenes de máquinas virtuales propias, por ejemplo, las VMware, convertidas a su equivalente Windows Azure definida como disco duro virtual (por su acrónimo en inglés “VHD”, de Virtual Hard Disc). Las opciones que ofrece Google AppEngine para soporte de lenguajes se encuentran restringidas exclusivamente a Python y java, con la opción añadida de Google, que aún se encuentra en fase alpha. OpenShift incrementa las opciones de lenguajes soportados por App Engine, concediendo la posibilidad de implementar aplicaciones desarrolladas en Java, Ruby, node.js, Python, PHP y Perl; sin embargo, dadas las limitaciones de sistema operativo que se derivan dado que se trata de una plataforma abierta, y al no soportar sistemas operativos basados en Windows, no es posible implementar en OpenShift aplicaciones Win32 u otras basadas en .Net Framework, con lenguajes como C#, J#, Vb.net, Asp.net, etc. Este hecho descarta a un sector del mercado que prefiere las plataformas Microsoft como opción para desarrollar sus aplicaciones. IBM SmartCloud restringe las posibilidades de soporte nativo en su plataforma para los lenguajes Java y PHP, aunque visto que es posible hacer uso de imágenes de máquinas virtuales soportadas por múltiples hipervisores, sería también posible implementar aplicaciones desarrolladas en otros lenguajes tales como aplicaciones .net (C#, J#, Asp.net, Vb.net, etc), aplicaciones PHP, Python y otros lenguajes, aumentando su potencial de lenguajes para múltiples plataformas, de manera que permite cubrir un segmento más amplio del mercado de aplicaciones. 2.2.4 Soporte para almacenamiento de datos Esta particularidad define cuáles son los medios físicos que ofrecen las aplicaciones probadas para la persistencia de datos. Los servicios de la plataforma Amazon EC2 se recalcan por sus alternativas de almacenamiento de datos, puesto que cuenta con varias opciones aprovechables que pueden ser 22 utilizadas de manera independiente por sus clientes en función de las necesidades puntuales que cada aplicación que tenga que cubrir. Algunas de ellas son: Amazon Simple Storage Service, que facilita una interfaz de servicios web (generalmente basadas en los protocolos REST o SOAP sobre HTTP) que puede utilizarse para almacenar y recuperar prácticamente cualquier cantidad de datos desde cualquier parte de la Web. Hace uso de la misma infraestructura (económica, escalable, y segura) que utiliza Amazon para tener en funcionamiento su propia red internacional de sitios web. Este servicio tiene como fin maximizar las ventajas del escalado y trasladar estas ventajas a los desarrolladores. Otra opción de almacenamiento de datos dada por Amazon EC2 consiste en Amazon Relational DB Service, que ofrece servicios de bases de datos relacionales, las cuales son altamente compatibles con la amplia mayoría de las aplicaciones ya existentes y con las técnicas de persistencia de datos más populares del mercado (maximizando los recursos humanos disponibles con conocimientos de estas técnicas y bases de datos basadas en esta clase de tecnología). Amazon EC2 asimismo ofrece el servicio Amazon SimpleDB, que es un almacén de datos no relacionales de alto recurso y flexible que no requiere trabajo de administración de bases de datos por parte de los clientes. Los desarrolladores claramente almacenan elementos de datos y los examinan mediante solicitudes de servicios Web (en general utilizando APIs basadas en el protocolo REST o SOAP). Además, Amazon ofrece soporte para varias versiones de SQL Server, que conceden primordialmente la posibilidad de formar aplicaciones que persistan sus datos utilizando las tecnologías de Microsoft SQL para efectuar su propósito. Algunas aplicaciones que suelen hacer uso más habitual de los motores de base de datos SQL Server, son aquellas plataformas dirigidas a tecnologías .Net y PHP. Windows Azure en este aspecto ofrece 3 tipos de warehouse de datos. Uno para dar soporte a SQL Relacional, que permite que las aplicaciones ya desarrolladas se puedan adaptar y adaptarse fácilmente a la nube sin necesidad de modificar sus capas de acceso a datos (por los conectores y consultas), y tampoco modificar 23 el modelo de datos de la base de datos ya disponible. Para las aplicaciones nuevas o aquellas que quieran aplicar técnicas de reingeniería para utilizar tecnologías tales como los productos NoSQL, Azure ofrece almacenes de tablas NoSQL permitiendo el almacenamiento de grandes cantidades de datos no estructurados, que se pueden escalar automáticamente para satisfacer un rendimiento y volumen masivos de hasta 100 terabytes, accesibles prácticamente desde cualquier lugar a través de REST y las API administradas. La última opción que ofrece Microsoft Windows Azure para el acopio de datos reside en Blobs no organizados, que otorgan la posibilidad de recopilar ingentes conjuntos de múltiples tipos de datos. El App Engine de google por su parte sugiere una excelente opción para dar solución a la persistencia de datos, consistente en una base de datos no relacional conocida como “Big Table”. Si bien Google es precursor en esta tecnología, su mercado competitivo ha avanzado a pasos agigantados y todos sus proveedores competidores de servicios cloud ofrecen actualmente muchas más opciones para dar solución a la persistencia de datos. Como resultado de esto, AppEngine no soporta bases de datos relacionales, lo cual entorpece y dificulta la migración de aplicaciones existentes habituales a su plataforma. La aplicación basada en RedHat, está diseñada, basada y pensada para aplicaciones que corren sobre sistemas operativos Linux, no ofrece la posibilidad de persistir datos en bases de datos SQL Server de Microsoft, pero sí ofrece distintas opciones de persistencia de datos relacionales. Además, ofrece también la posibilidad de persistencia de datos en un motor de base de datos NoSQL. La oferta de IBM SmartCloud para el almacenamiento de datos es amplia. Otorga la posibilidad de utilizar almacenes de bases de datos relacionales, como el motor IBM DB2, Oracle, Microsoft SQL Server, Informix y Sybase. Con respecto a los productos NoSQL, SmartCloud implementa almacenes de datos basados en productos muy populares como por ejemplo Hadoop. 24 2.2.5 Soporte para Colas y Servidores Web Esta característica define cuáles serán los valores brindados por las diferentes aplicaciones. Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operación de inserción push se realiza por un extremo y la operación de extracción pop por el otro. También se le llama estructura FIFO (del inglés First In First Out), debido a que el primer elemento en entrar será también el primero en salir. En líneas generales, todos los proveedores de servicios cloud ofrecen un único producto para implementar técnicas de Colas. En el caso de la plataforma Amazon EC2, cuenta con un producto propietario cuyo nombre comercial es Amazon Simple Queue Service. Google App Engine también ofrece un producto propietario comercializado como App Engine Task Queue. OpenShift implementa soluciones para colas con IronMQ que es un producto de colas pensado para aplicaciones que corren en la nube, el cual basa sus comunicaciones en los protocolos HTTP/Rest, brindando además soporte para JSON. IBM SmartCloud ofrece un producto de colas propietario con el cual ya contaba en su suite WebSphere, y que es comercializado como WebSphere Message Broker. En el caso de los Servidores Web esta característica permite evaluar cuáles son las opciones de servidores web (del inglés web server) ofrecidas por cada proveedor. Un servidor web o servidor HTTP es un programa informático que procesa una aplicación del lado del servidor realizando conexiones bidireccionales y/o unidireccionales, y síncronas o asíncronas con el cliente generando o cediendo una respuesta en cualquier lenguaje o Aplicación del lado del cliente. Algo similar ocurre con la estrategia elegida por los proveedores para dar solución a las necesidades de servidores Web: la mayoría de los proveedores ofrecen una única alternativa para publicar aplicaciones web, tales son el caso de Google App Engine, con Jetty Web Server, Red Hat OpenShift con Apache Server, o IBM SmartCloud con WebSphere Application Server. Otros casos como Amazon EC2 y Microsoft Windows Azure ofrecen al menos dos alternativas para dar soporte a 25 las aplicaciones web, y esto se deriva de que estas plataformas soportan múltiples lenguajes, algunos de los cuales que no pueden compatibilizar sus ejecuciones en los mismos servidores Web, como por ejemplo aplicaciones Web de Microsoft (Asp.net) que requieren el servidor web Internet Information Server, y aplicaciones web Java, que requieren Servidores de tipo Apache/Tomcat. 2.2.6 Alternativas de Hipervisores Un hipervisor (del inglés hypervisor) o monitor de máquina virtual (virtual machine monitor) es una plataforma que permite aplicar diversas técnicas de control de virtualización para utilizar al mismo tiempo diferentes sistemas operativos en una misma computadora. Esta característica es crucial y determinante para el modelo de negocio ofrecido por los proveedores de servicios cloud, puesto que en función de las alternativas de virtualización que estos ofrecen, se deriva la facilidad de portabilidad de máquinas virtuales que contienen las aplicaciones ya existentes en los datacenters (on premise) de sus potenciales clientes a sus entornos Cloud. En muchos casos, aplicar reingeniería para migrar las aplicaciones o instalarlas y adaptarlas en nuevas plataformas puede demandar mucho tiempo y resultar costoso en extremo. De allí se desprende la relevancia de esta característica. Amazon EC2, al igual que Google App Engine y OpenShift, utiliza hipervisores basados en XEN y LXC (Linux Containers) IBM SmartCloud, en cambio, ofrece muy buenas capacidades de virtualización, soportando múltiples hipervisores que van desde VMware, Hyper-V hasta otros basados en XEN. Windows Azure, por su parte, trabaja con Windows Azure hipervisor, que se trata de una versión de Hyper-V (el conocido y tradicional hipervisor de Microsoft) ajustada y optimizada para la virtualización en la nube. Adicionalmente, Microsoft permite (como se mencionó con anterioridad) la posibilidad de migrar máquinas virtuales de VMware a formatos aceptados por este virtualizador, de manera que brinda también una alternativa de compatibilidad con esta tecnología. 26 2.2.7 Soporte en Sistemas operativos Windows Esta característica permite evaluar la capacidad de implementar sistemas o aplicaciones de usuarios finales que operen bajo Sistemas Operativos Windows, y en caso afirmativo, también definir cuáles de sus versiones son soportadas. Todas las plataformas vistas dan soporte a entornos basados en Windows a excepción de la App Engine de Google y el Open Shift de Red Hat, esto se pueda deber a la creciente competencia de estas 2 compañías por acaparar el mercado. 2.2.8 Soporte en Sistemas operativos Linux Esta característica permite evaluar la capacidad de implementar sistemas o aplicaciones de usuarios finales que operen bajo Sistemas Operativos Linux, y en caso afirmativo, también definir cuáles de sus versiones son soportadas. En este caso todas las plataformas vistas ofrecen soporte para el sistema operativo Linux o sus diferentes distribuciones basados en el mismo a excepción de la App Engine de Google que da acceso limitado al sistema operativo en pro de permitir distribuya peticiones web para la aplicación en varios servidores, así como también iniciar y detener los servidores para satisfacer las demandas de tráfico. La caja de arena (traducción literal del término en inglés "Sandbox") aísla la aplicación en su propio entorno seguro y confiable que es independiente del hardware, sistema operativo y la ubicación física del servidor web. 27 2.2.9 Tabla de plataformas en la nube por empresa Muchas de las plataformas de estos proveedores proponen servicios análogos que pueden ser explotados con diversos lenguajes de programación y plataformas de desarrollo. Es por ello que se considera necesario realizar un cotejo acerca de los servicios y características ofrecidos por los principales proveedores de las tecnologías mencionadas en las siguientes tablas 1.1 y 1.2: Plataforma € Característica ↓ Servidor Web Alternativas de hipervisores Soporte para Colas Amazon EC2 Apache IIS Otros Microsoft Windows Azure Google App Engine Red Hat OpenShift IIS V7.5 Jetty Web Server Apache XEN y LXC (Linux Containers) Windows Azure Hipervisor (customized Hyper-V) Amazon Simple Queue Service Windows Azure Service Bus, Colas FIFO con protocolos Rest, AMQP, WS XEN/KVM App Engine Task Queue KVM (Kernelbased VM) Xen QEmu IronMQ IBM SmartCloud WebSphere Application Server V7.0 and V8.0 VMWare Hyper-V Otros WebSphere Message Broker V8.0 Tabla 1.1 Cuadro de plataformas en la nube por empresa 28 Plataforma € Característica ↓ Amazon EC2 Microsoft Windows Azure Escalabilidad automática (auto scaling) Sí, a través de Amazon CloudWatch Autoscaling application block y Windows Azure Fabric Controller. Sí (AMI) – Imagen de máquina Amazon Sí, provistas en una galería, y también imágenes propias guardadas Blueprints / Imágenes para acelerar el aprovisionamiento Soporta Sistema operativo Windows Soporta Sistema operativo Linux Soporte para lenguajes Soporte para almacenamiento de datos Windows Server® 2003 R2 Windows Server 2008 Windows Server 2008 R2 Windows Server 2012 Sí Windows Server 2012 Datacenter Windows Server 2008 R2 SP1 Sí: SUSE Linux Enterprise Server Red Hat Enterprise Linux OpenSUSE 12.3 SUSE Linux Enterprise Server 11 Service Pack 2 Ubuntu Server 12.04 LTS Ubuntu Server 12.10 Ubuntu Server 13.04 OpenLogic CentOS 6.3 Ubuntu Server 12.10 DAILY C++ C# Java Perl Python Ruby Amazon SSS Amazon Relational DB Service Amazon SimpleDB SQL Server® Express SQL Web SQL Server Standard Google App Engine BigTable y GFS No No Sí, pero las aplicaciones corren en un sandbox y Google provee acceso limitado al sistema operativo, el cual no puede ser alterado. .Net Java Node.js Python Python Java Go(experimental) SQL Relacional Almacenes de tablas NoSQL Blob no estructurado Base de datos no relacional “BigTable”. No soporta bases de datos relacionales Red Hat OpenShift OpenShift HA Proxy IBM SmartCloud Application Workload Service Sí (Single and Multitier VM Applications) No Sí, Red Hat Linux Enterprise Java Ruby node.js Python PHP Perl MySQL Postgre sSQL Mongo DB SQLite Tabla 1.2 Cuadro de plataformas en la nube por empresa 29 IBM SmartCloud Sí Sí Microsoft Windows Server 2003 Microsoft Windows Server 2008 Sí Red Hat Enterprise Linux SUSE Linux Enterprise Server Java PHP DB2 Oracle MS SQL MySQL Informix Sybase CONCLUSIONES Con la computación en la nube, muchas aplicaciones, así como los datos de archivo y afines, no es necesario ser instalados o almacenados en el ordenador o en un servidor del próximo. Este contenido se pasa que se disponga en "nubes", es decir, la de Internet. El proveedor de la aplicación encajar todas las tareas desarrollo, almacenamiento, mantenimiento, actualización, copia de seguridad, programación, etc. el usuario no tiene que preocuparse de nada de esto, sólo tiene que acceder y utilizar. La Nube es una de las tendencias actuales, adoptada por numerosas empresas alrededor del mundo de gran prestigio. Aunque al principio sea algo retador en muchas ocasiones exista el temor de adoptarlas, es una tendencia que está cambiando perspectiva de muchas personas a través de su implementación en negocios. Entre las empresas de que ofrecen servicios en la nube, Amazon está muy por encima de la competencia en cuanto a funcionalidades, número de datacenters y número de clientes, en cambio Google ofrece una oferta es más reducida que la de Amazon, pero por contra es más simple de utilizar, más económica y con gran capacidad de crecimiento. IBM y Microsoft tienen una oferta muy completa no solo de tecnologías, sino también de tecnologías open source, por las que sorprendentemente Microsoft está haciendo una gran apuesta en los últimos años, así mismo Red Hat está basada en estándares abiertos, integra con las tecnologías open source de referencia y tiene un market en constante crecimiento su inconveniente radica en su documentación confusa y poca información actualizada en la web. 30 REFERENCIAS Amazon.com Inc. 2016. AMI de Amazon Linux. Recuperado el 11 de Junio de 2016 de http://aws.amazon.com/es/amazon-linux-ami/. Amazon.com Inc. 2016. Amazon Elastic Compute Cloud (Amazon EC2). Recuperado el 10 de Junio de 2016 http://aws.amazon.com/es/ec2/#functionality. Del Lunn. Febrero 2014. Almacenamiento en nube híbrida: ¿Qué datos van dónde? Recuperado el 20 de Junio de 2016, de http://searchdatacenter.techtarget.com/es/consejo/Almacenamiento-en-la-nubehibrida-Que-datos-van-donde IBM Corp. 2016. IBM SmartCloud Application Services (Beta). Recuperado el 15 de Junio de 2016, de http://www 05.ibm.com/it/cloud/assets/IBMSmartCloud_Application_Services_FAQ.pdf ICIC ¿QUÉ ES EL CLOUD COMPUTING? Recomendaciones para Empresas Versión1.0, Recuperado el 19 de Junio de 2016 de http://www.internetsano.gob.ar/archivos/cloudcomputing_empresas.pdf Genbeta: dev. 2016, Entendiendo la nube: el significado de SaaS, PaaS y IaaS. Recuperado el 21 deJunio de 2016 de, http://www.genbetadev.com/programacion-enla-nube/entendiendo-la-nube-el-significado-de-saas-paas-y-iaas Glosario de EMC. QUÉ ES UNA NUBE PRIVADA. Recuperado el 20 de Junio de 2016 de http://mexico.emc.com/corporate/glossary/private-cloud.htm 31 Google Inc. 2016. Google Cloud Platform Documentation. Recuperado el 17 de Junio de 2016, de https://cloud.google.com/docs/ Luis Joyanes Aguilar, CLOUD COMPUTING Notes for a spanish cloud computing strategy. Recuperado el 21 de Junio de 2016 de, http://revista.ieee.es/index.php/ieee/article/download/10/49 Microsoft Corp., Windows Azure. Cloud Services documentation. Recuperado el 15 de Junio de 2016 de, https://azure.microsoft.com/en- us/documentation/services/cloud-services/ Microsoft Corp. Guía sobre el almacenamiento en caché. Recuperado el 16 de Junio de 2016 de, https://azure.microsoft.com/es-es/documentation/articles/bestpractices-caching/#almacenamiento-en-cach-en-aplicaciones-distribuidas. Peter Mell Timothy Grance. Septiembre 2011. NIST SP 800-145, The NIST Definition of Cloud Recuperado el 17 de Junio de 2016 de, Computing http://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-145.pdf Plataform as a Service (PaaS). Recuperado el 20 de Junio de 2016 de, http://www.platformasaservice.com Red Hat Inc. 2013. Open Shift. Open Shift All Versions User Guide. Recuperado el 17 de Junio de 2016 de, https://access.redhat.com/documentation/en- US/OpenShift_Enterprise/2/pdf/User_Guide/OpenShift_Enterprise-2User_Guide-en-US.pdf Software as a Service (SaaS). Recuperado el 19 de Junio de http://www.saas.com. 32 2016 de,