1. Desarrollo de aplicaciones en
la nube
Trabajo fin de master:
Master executive en dirección de tecnologías de la
información
Manuel Crespo González
9 de Octubre de 2012
2. Introducción
• El porqué de elegir este tema para realizar el
trabajo de fín de master
• Herramientas en la nube usadas para realizar
el trabajo:
– Google apps
– Google drive
– Amazon EC2
3. ¿Qué es cloud computing?
• Convergencia de varias tecnologias
– Web + Virtualización
• Acceso a ordenadores y sus funcionalidades a
través de internet.
• Normalmente pago por uso.
• No hay una estandarización aunque algunos
fabricantes lo están intentando con algunos
frameworks: Eucalyptus, OpenStack, etc.
4. Clasificación de nubes
• Según grado de privatización:
– Pública
– Privada
– Híbrida
• Según tipología de servicio:
– IaaS o Infraestructura como servicio.
– PaaS o Plataforma como servicio.
– SaaS o Software como servicio.
6. Ventajas
• Pago por consumo, ideal para la creación de
nuevos servicios.
• Normalmente reducción de costos en
infraestructuras y operación.
– Outsourcing de TI.
• Escalabilidad sencilla y absorción de picos.
• Despreocupación sobre backups o reparación de
máquinas o infraestructuras.
• Facilidad de realizar pruebas.
• Time to market reducido.
7. Desventajas
• Servicios poco personalizados.
• Alta latencia. Se necesitan accesos más
rápidos.
• Mas dificil controlar la seguridad y privacidad.
• Confiar en proveedores externos para albergar
datos y aplicaciones, a veces sensibles.
• En algunos casos podria resultar mas caro que
tener recursos própios.
8. Evolución de arquitectura de
aplicaciones
• Aplicaciones monolíticas.
• Aplicaciones cliente / servidor
• Arquitectura multi-capas
12. Evolución de arquitectura de
aplicaciones
• Aplicaciones web
– RIA (Rich Internet Applications)
• Applet
• Adobe Flash
• Java WebStart
• Ajax
• HTML5
– Webservices Soap & REST
– SOA (Service Oriented Architecture)
• SOA podría ser visto como la evolución de la computación
distribuida y la programación modular, siendo el paso
anterior al SaaS en el Cloud Computing.
14. Evolución de arquitectura de
aplicaciones
• Aplicaciones web
– Web 2.0 y Mashups
• Apps móviles
• Aplicaciones SaaS
15. Evolución de arquitectura de
aplicaciones
• El futuro de las técnicas de programación:
– Se tiende a lenguajes de scripting.
– Lenguajes cada vez de mas alto nivel.
– Automatización de pruebas.
– Otras tendencias NaCl (Google native client)
16. Lenguajes de programación adaptados
al desarrollo en la nube
• IaaS:
– Cualquier lenguaje actual (C++, Java, Pascal, .net, etc).
• PaaS:
– Proporcionado por el proveedor:
– Java, Spring, Ruby, Scala, Php, .net.
• SaaS:
– Parametrización de las aplicaciones.
– Apex de Salesforce (A caballo entre PaaS y SaaS).
Google Apps Script.
17. Persistencia de datos
• BBDD relacionales:
– MySql, PostgreSQL, Oracle, DB2, Microsoft SQL
Server o Google Cloud SQL.
• Big tables / NoSQL:
– Hadoop, Apache
Cassandra, Hypertable, LevelDB, Amazon
SimpleDB, MapReduce, Microsoft
SDS, MongoDB, CouchDB, LucidDB.
20. Seguridad. Gestión del ciclo de vida de
la información.
• Seguridad de los datos.
Confidencialidad, Integridad, Disponibilidad, Aute
nticidad, Autorización, Autenticación y No
Repudio.
• Geo-localización de los datos.
• Remanencia o persistencia de datos.
• Mezcla de datos con otros clientes de la nube.
• Planes de backup y recuperación de datos para la
recuperación y restauración.
• Descubrimiento de datos.
• Agregación de datos e inferencia.
21. Seguridad de las aplicaciones
• Arquitectura de seguridad de la aplicación.
• Ciclo de vida del desarrollo de software.
• Cumplimiento normativo.
• Herramientas y servicios.
• Vulnerabilidades.
22. Testeo de aplicaciones en la nube
• Pruebas de humo.
• Pruebas funcionales.
• Pruebas de regresión.
• Pruebas de aceptación.
• Pruebas de rendimiento.
• Pruebas de seguridad.
• Testeo basado en modelos.
• Testeo de interface de usuario gráfico.
• Testeo de servicios web.
• Testeo de aplicaciones móviles.
• Pruebas en la nube o TaaS (Test as a service).
23. Ejemplos de servicios en la nube
• Amazon EC2 (Elastic Compute Cloud) (IaaS)
– Elastic block store, Elastic IP, Private
cloud, CoudWatch, Elastic Load Balancing, AWS
marketplac, etc.
• Microsoft Azure (Paas + IaaS + SaaS)
– Windows Azure, Servicios .net, Servicios
SQL, Servicios Live, Virtual Network, Websites, etc.
• Google App Engine (Paas + SaaS)
• Arsys.es CloudBuilder (IaaS)
24. Migración y vuelta atrás
• Mas complicado según modelo: IaaS < PaaS <
SaaS
• Entre IaaS. Uso de herramientas como SCP o
FastSCP. Intentar usar proveedores que usen
estandares como OpenStack o Eucalyptus.
• Entre PaaS. El uso de librerias y Apis complica la
migración. También hay frameworks: Cloud
Foundry, Red Hat OpenShift, Jclouds.
• Entre SaaS. Extremadamente complejo. Ejemplo
de Salesforce a SugarCRM.
25. Migración y vuelta atrás
• Entre SaaS. Extremadamente complejo.
Ejemplo de Salesforce a SugarCRM:
– Migración de datos.
– Adaptaciones realizadas.
– Aplicaciones de terceros.
– Estudiar rendimiento.
– Estudios de seguridad.
– Formación de usuarios.
26. Migración y vuelta atrás
• Migración de modelo tradicional a SaaS:
– Migrar de modelo de negocio centrado en producto a
uno centrado en servicios.
– Rediseñar las estrategias de salida a mercado.
– Reestructurar los modelos de reconocimiento de
ingresos “paga lo que consumas”.
– Reorientar los departamentos de desarrollo, ventas y
soporte.
– Sin instalación o automatizada.
– Manejo de suscripciones.
– Monitorización de transacciones y operativa.
27. Caso práctico. Televisión interactiva
para la fundación Cristóbal Gabarrón
• Que es la fundación.
• Que tipo de proyecto quiere.
• Análisis técnico. Referencia de Spiegel.tv.
– Amazon EC2 (Elastic compute Cloud) para sistemas CMS (gestión
de conteni-dos) y transcodificación de video.
– Amazon SQS (Simple Queue Service) para colas.
– Amazon CloudFront para la distribución de ficheros estáticos y
streaming de vi-deo (mas de 70 millones de peticiones
mensuales).
– Amazon S3 (Simple Storage Service) para almacenamiento.
– Amazon EBS (Elastic Block Store) como una instancia de
almacenamiento con snapshots cada hora y recuperación de
desastres.
28.
29. Caso práctico
• Uso de un CDN o Content delivery network
– Mayor capacidad de conexión
– Disminución del tiempo de respuesta
– Disminución de los costos asociados a la entrega
de contenidos.
– Disminución de carga de la red.
• Adobe Flash Media Server
30. Caso práctico
Bitrate ideal
• 15 minutos diarios a 1000 usuarios diferentes = 7500 horas servidas al mes.
• 7500 x 0,80Gb/h = 6000 Gb/mes
• Almacenamiento, 20 horas nuevas cada mes. 16Gb mensuales. Unos 200 Gb
/ año.
• En Amazon EC2 el coste de 1 instancia de Adobe Flash Media Server mensual
incluye el precio del servidor.