Escola Tècnica Superior d’Enginyeria Informàtica Universitat Politècnica de València Desarrollo de aplicaciones en la nube (cloud computing) Trabajo Fin de Grado Grado en Ingeniería Informática Autor: Vicente Agut Navarro Tutor: Juan Vicente Capella Hernandez 2016-2017 Desarrollo de aplicaciones en la nube (cloud computing) Resumen En este trabajo nos centraremos en un estudio sobre la computación en la nube, además del desarrollo en algunas de las plataformas en la nube disponibles. Para ello, estudiaremos las diferentes plataformas que podemos encontrar, para centrarnos en el desarrollo en las plataformas Windows Azure y Google App Engine, que serán las utilizadas por nuestro proyecto. Por otro lado, analizaremos las plataformas en las nubes utilizadas, así como un estudio práctico aplicando un lenguaje de programación distinto en cada una de ellas, seguidamente se realizaran pruebas de rendimiento de cada una de ellas. Finalizaremos exponiendo sus resultados y conclusiones obtenidas, así como también las recomendaciones para desarrollar nuestra propia aplicación en la nube. Para concluir, obtendremos las opiniones sobre nuestro trabajo y opiniones personales sobre el proyecto desarrollado. Palabras clave: computación en la nube, plataformas, Windows Azure, Google App Engine. Abstract In the present work we will focus on a study of cloud computing as well as development on some of the available cloud platforms. For this, we will study the different platforms that we can find, to focus on the development in the platforms Windows Azure and Google App Engine, which will be used by our project. On the other hand, we will analyze the platforms in the clouds used, as well as a practical study applying a different programming language in each of them, followed by performance tests of each one of them. We will conclude by presenting the results and conclusions obtained, as well as the recommendations for developing our own application in the cloud. In conclusion, we will get opinions about our work and personal opinions about the project developed. Keywords: cloud computing, platforms, Windows Azure, Google App Engine. 2 Índice 1. Introducción ................................................................................................................ 6 1.1. Justificación / Motivación ......................................................................................... 6 1.2. Objetivos del proyecto ...............................................................................................7 1.3. Estructura de la memoria ...........................................................................................7 2. Estudio de plataformas en la nube ................................................................................. 8 2.1. Descripción ............................................................................................................. 8 2.1.1. Características ...................................................................................................... 9 2.1.2. Cloud computing para usuarios finales .................................................................. 10 2.1.3. Cloud computing para administradores de sistemas. ............................................... 10 2.1.4. Cloud computing para desarrolladores de software................................................. 10 2.1.5. Tipos de Nubes.................................................................................................... 11 2.1.6. Capas de nube ..................................................................................................... 12 2.1.6.1. SaaS (Software as a Service)............................................................................. 12 2.1.6.2. IaaS (Infraestructura as a service) ...................................................................... 13 2.1.6.3. PaaS (Platform as a service).............................................................................. 13 2.1.7. Servicios Web ..................................................................................................... 14 2.1.7.1. ¿Qué son los "servicios web"? .......................................................................... 14 2.1.7.2. Computación de alto rendimiento como un servicio (HPCaaS) ............................ 15 2.1.7.3. Toleración a fallos en cloud computing ............................................................. 15 2.1.8. Tendencias .......................................................................................................... 16 2.1.9. Ventajas y desventajas de la computación en la nube ............................................. 17 2.1.9.1. Ventajas .......................................................................................................... 17 2.1.9.2. Desventajas ..................................................................................................... 18 2.2. Diferencias entre el hosting tradicional y el cloud computing .................................... 20 2.2.1. Ventajas de cloud computing frente a housing ....................................................... 21 2.3. Google APP Engine ............................................................................................... 22 2.3.1. Descripción ........................................................................................................ 22 2.3.2. Características .................................................................................................... 23 2.3.3. Aplicación ......................................................................................................... 24 2.4. Microsoft Azure ..................................................................................................... 26 2.4.1. Descripción .........................................................................................................27 2.4.2. Copias de seguridad .............................................................................................27 3 Desarrollo de aplicaciones en la nube (cloud computing) 2.4.3. Servicios de Windows Azure ............................................................................... 28 2.4.4. Características de Windows Azure ....................................................................... 28 2.4.5. Componentes ..................................................................................................... 29 2.5. Amazon EC2 ......................................................................................................... 30 2.5.1. Características .................................................................................................... 30 2.5.2. Almacenamiento persistente ................................................................................. 31 2.5.3. Direcciones IP elásticas....................................................................................... 32 2.5.4. Amazon CloudWatch .......................................................................................... 32 2.5.5. Escalamiento automatizado ................................................................................. 32 2.5.6. Confiabilidad ..................................................................................................... 33 2.5.7. Almacenamiento de bloque elástico ..................................................................... 33 2.5.8. Tipos de instancia ............................................................................................... 33 2.6. Comparativa de plataformas .................................................................................... 34 2.6.1. Google App Engine ............................................................................................ 34 2.6.2. Microsoft Azure ................................................................................................. 34 2.6.3. Comparación Microsoft Azure, google app Engine y Amazon EC2 ........................ 35 3. Diseño e implementación de aplicaciones en la nube .....................................................37 3.1. Aplicación carrito compra para tienda de pintura .......................................................37 3.1.1. Diagrama UML de nuestra aplicación .................................................................. 38 3.2. Windows Azure ..................................................................................................... 38 3.2.1. ASP.NET ........................................................................................................... 39 3.2.1.1. Características ................................................................................................ 39 3.2.1.2. Modelo Code-behind ....................................................................................... 39 3.2.1.3. Controles de usuario........................................................................................ 40 3.2.1.4. Administración del estado ............................................................................... 40 3.2.1.5. Motor de plantillas .......................................................................................... 42 3.2.1.6. Modelos de programación en ASP.NET ........................................................... 42 3.2.1.7. Uso actual del lenguaje.................................................................................... 43 3.2.2. Aplicación Servicolor ......................................................................................... 43 3.2.2.1. Pasos previos .................................................................................................. 43 3.2.2.2. Detalles de implementación ............................................................................. 45 3.2.2.3. Subir aplicación en Windows Azure ................................................................. 80 3.2.3. Pruebas de rendimiento ....................................................................................... 85 3.3. Google App Engine ................................................................................................ 86 3.3.1. Principales características de PHP........................................................................ 87 3.3.2. Aplicación servicolor .......................................................................................... 87 4 3.3.2.1. Pasos previos .................................................................................................. 87 3.3.2.2. Detalles de implementación ............................................................................. 90 3.3.2.3. Subir aplicación a GAE ..................................................................................120 3.3.3. Pruebas de rendimiento ...................................................................................... 122 3.4. Comparativa entre GAE y Windows Azure en nuestra aplicación ............................. 123 3.4.1. Conclusiones ..................................................................................................... 131 4. Conclusión ............................................................................................................... 133 5. Bibliografía .............................................................................................................. 134 5 Desarrollo de aplicaciones en la nube (cloud computing) 1. Introducción 1.1. Justificación / Motivación En la actualidad y tal vez sin darnos cuenta, utilizamos la computación en la nube, para compartir archivos con amigos o compañeros para no tener que estar cada vez en el mismo lugar todos y poder trabajar desde cualquier lugar y poder compartir cualquier archivo. Debido a que es la computación en la nube es un campo emergente está creciendo de forma exponencial así como sus posibles aplicaciones. También se puede utilizar ésta tecnología para crear aplicaciones accesibles desde cualquier lugar y pagar solo por el uso que tenga. Las principales ventajas que encontramos son: 1) Reducción de costes 2) Movilidad: Acceso desde cualquier dispositivo y lugar 3) Pagas por uso y gasto bajo control. 4) Tecnología siempre actualizada 5) Escalabilidad 6) Seguridad 7) Menos mantenimiento 6 1.2. Objetivos del proyecto Los objetivos principales de nuestro Proyecto son: Estudiar las plataformas actuales de cloud computing, comparando las mismas y clasificarlas según las posibilidades que ofrecen. Diseñar y desarrollar aplicaciones hacienda uso de plataformas cloud computing. Evaluar las posibilidades de dos plataformas cloud computing ampliamente extendidas (Azure y GAE), atendiendo a sus capacidades, servicios disponibles, prestaciones, etc. Proponer recomendaciones de utilización de plataformas de cara al desarrollador en función de sus requisitos. 1.3. Estructura de la memoria En los diferentes capítulos de la memoria encontraremos para empezar que es el cloud y sus utilidades, además también con las previsiones a medio y largo plazo de las aplicaciones cloud. Seguidamente encontraremos una explicación de las plataformas utilizadas en nuestro proyecto. Una vez hemos explicados nuestras plataformas pasaremos al diseño e implementación de nuestra aplicación en la nube, explicando paso a paso lo realizado además de realizar una comparación entre los resultados obtenidos en dichas plataformas. Para finalizar tendremos una breve conclusión de nuestro proyecto. 7 Desarrollo de aplicaciones en la nube (cloud computing) 2. Estudio de plataformas en la nube 2.1. Descripción La computación en la nube (del inglés cloud computing) es un paradigma que permite ofrecer servicios de computación a través de una red, que usualmente es Internet. Cloud computing cambia todo eso al incorporar tecnología de virtualización que permite que la infraestructura física sea alquilada por poco pago por uso en comparación con las viejas maneras de diseñar software Web. Además, cambia la ecuación proporcionando herramientas de plataforma específicas para la nube para acelerar el desarrollo. El cloud computing es un modelo para permitir el acceso conveniente a la demanda a un conjunto compartido de recursos computacionales configurables (por ejemplo, redes, servidores, almacenamiento, aplicaciones y Servicios) que se pueden aprovisionar y liberar rápidamente con un mínimo esfuerzo de gestión o interacción con el proveedor de servicios. Imagen 1 Explicación gráfica cloud computing 8 2.1.1. Características La computación en nube presenta las siguientes características clave: Agilidad: Capacidad de mejora para ofrecer recursos tecnológicos al usuario por parte del proveedor. Coste: Reduce barreras de entrada, ya que la infraestructura se proporciona típicamente por una tercera parte y no tiene que ser adquirida por una sola vez o tareas informáticas no frecuentes. Escalabilidad y elasticidad: aprovisionamiento de recursos sobre una base de autoservicio en casi en tiempo real, sin que los usuarios necesiten cargas de alta duración. Independencia entre el dispositivo y la ubicación: permite a los usuarios acceder a los sistemas utilizando un navegador web, independientemente de su ubicación o del dispositivo que utilice (por ejemplo, PC, teléfono móvil). La tecnología de virtualización permite compartir servidores y dispositivos de almacenamiento y una mayor utilización. Las aplicaciones pueden ser fácilmente migradas de un servidor físico a otro. Rendimiento: Los sistemas en la nube controlan y optimizan el uso de los recursos de manera automática, dicha característica permite un seguimiento, control y notificación del mismo. Esta capacidad aporta transparencia tanto para el consumidor o el proveedor de servicio. Seguridad: puede mejorar debido a la centralización de los datos. La seguridad es igual o mejor que otros sistemas tradicionales, en parte porque los proveedores son capaces de dedicar recursos a la solución de los problemas de seguridad que muchos clientes no pueden permitirse el lujo de abordar. Mantenimiento: en el caso de las aplicaciones de computación en la nube, es más sencillo, ya que no necesitan ser instalados en el ordenador de cada usuario y se puede acceder desde diferentes lugares. 9 Desarrollo de aplicaciones en la nube (cloud computing) 2.1.2. Cloud computing para usuarios finales La computación en la nube permite al usuario final ejecutar aplicaciones de software y acceder a datos desde cualquier lugar y hora, y desde cualquier ordenador; sin necesidad de instalar, actualizar o solucionar problemas de aplicaciones de software físicamente en un escritorio o servidor local. Este es uno de los elementos más importantes de la computación en nube, y el por qué se ha vuelto tan popular hoy en día. La computación en la nube hace que sea más fácil hacer el trabajo en cualquier momento y desde cualquier lugar. 2.1.3. Cloud computing para administradores de sistemas. La superioridad del modelo de nube viene cuando empezamos a darnos cuenta de que las aplicaciones de escritorio son más o menos estáticas, y las aplicaciones en la nube pueden perfeccionarse continuamente. Las aplicaciones de escritorio se deben instalar físicamente en un PC, se actualizan periódicamente, se aplican parches cuando están disponibles y se vuelven a instalar cuando el usuario se mueve a un nuevo escritorio o cuando el antiguo se bloquea. El modelo de nube elimina esos inconvenientes. 2.1.4. Cloud computing para desarrolladores de software Cloud computing es una aplicación en la nube, gracias a esto no existe el requisito de tener nada instalado en el escritorio. Todas las actualizaciones tienen lugar en el extremo posterior, que no requieren intervención, acción, atención o paciencia del usuario final. Esto hace que sea mucho más fácil para los desarrolladores actualizar continuamente sus aplicaciones y empujar esas actualizaciones a los usuarios en tiempo real. 10
Description: