Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 57

DESARROLLO DE APLICACIONES WEB - TEMA 3

Despliegue de
aplicaciones web
Micael Gallego
Correo: [email protected]
Twitter: @micael_gallego
Blog: http://micaelgallego.github.io

ESCUELA TÉCNICA SUPERIOR DE DEPARTAMENTO DE CIENCIAS


INGENIERÍA INFORMÁTICA DE LA COMPUTACIÓN
DESARROLLO DE APLICACIONES WEB
Despliegue de las aplicaciones web

• Introducción
• Alojamiento tradicional
• Computación en la nube
• Arquitecturas escalables y tolerantes a fallos

Tema 3 - Despliegue de aplicaciones web 2


DESPLIEGUE DE LAS APLICACIONES WEB
Introducción

• Las aplicaciones web tienen las siguientes


características:
 Se ejecutan en un servidor (físico o virtual), no en el
dispositivo del usuario
 Pueden atender a miles de usuarios simultáneos, no a
uno sólo
 Es muy habitual que se necesiten varios servidores para
una única aplicación web (por escalabilidad y
tolerancia a fallos)

Tema 3 - Despliegue de aplicaciones web 3


DESPLIEGUE DE LAS APLICACIONES WEB
Introducción

• Las aplicaciones web tienen las siguientes


características:
 Se ejecutan dentro de un servidor web
 Están formadas por código y por recursos (imágenes,
documentos html, css, js, ficheros estáticos…)
 Utilizan servicios adicionales: base de datos, servidor
de correo, servidor de vídeo…
 Requieren de un proceso de instalación y
configuración (despliegue) en el servidor o servidores

Tema 3 - Despliegue de aplicaciones web 4


DESPLIEGUE DE LAS APLICACIONES WEB
Introducción

• Empresas de alojamiento o hosting


 Son empresas que permiten a sus clientes que ejecuten
sus aplicaciones web en sus instalaciones
 Se encargan del suministro eléctrico, conexión a
Internet, compra y mantenimiento de servidores,
contol de acceso físico, etc…
 Existe una amplia variedad de servicios que dependen
del proveedor y de las necesidades del cliente

Tema 3 - Despliegue de aplicaciones web 5


DESARROLLO DE APLICACIONES WEB
Despliegue de las aplicaciones web

• Introducción
• Alojamiento tradicional
• Computación en la nube
• Arquitecturas escalables y tolerantes a fallos

Tema 3 - Despliegue de aplicaciones web 6


DESPLIEGUE DE LAS APLICACIONES WEB
Alojamiento tradicional

• Tipos de alojamiento
 Compartido: Varias aplicaciones web conviven en la
misma máquina física. El desarrollador no tiene
control total sobre el servidor
 Dedicado: El cliente dispone de una máquina física
que controla completamente.

Tema 3 - Despliegue de aplicaciones web 7


DESPLIEGUE DE LAS APLICACIONES WEB
Alojamiento tradicional

• Tipos de alojamiento
 Virtual: El cliente dispone de una máquina virtual
que controla completamente y se ejecuta en un
servidor físico compartido con otras máquinas
virtuales

Tema 3 - Despliegue de aplicaciones web 8


DESPLIEGUE DE LAS APLICACIONES WEB
Alojamiento tradicional

• Existen muchos proveedores con diferentes


servicios (compartido, dedicado y virtual)
• Algunos de los más conocidos en España

Tema 3 - Despliegue de aplicaciones web 9


ALOJAMIENTO TRADICIONAL Datos Enero 2012

Ejemplo 1&1 – Hosting compartido

Tema 3 - Despliegue de aplicaciones web 10


ALOJAMIENTO TRADICIONAL Datos Enero 2012

Ejemplo 1&1 – Hosting compartido

Tema 3 - Despliegue de aplicaciones web 11


ALOJAMIENTO TRADICIONAL Datos Enero 2012

Ejemplo 1&1 – Hosting compartido

Tema 3 - Despliegue de aplicaciones web 12


ALOJAMIENTO TRADICIONAL Datos Enero 2012

Ejemplo 1&1 – Hosting compartido

Tema 3 - Despliegue de aplicaciones web 13


ALOJAMIENTO TRADICIONAL Datos Enero 2012

Ejemplo 1&1 – Servidores dedicados

Tema 3 - Despliegue de aplicaciones web 14


ALOJAMIENTO TRADICIONAL Datos Enero 2012

Ejemplo 1&1 – Servidores virtuales

Tema 3 - Despliegue de aplicaciones web 15


ALOJAMIENTO TRADICIONAL
Alojamientos nacionales

• Hostalia
 http://www.hostalia.com
• Strato
 https://www.strato-alojamiento.es/
• Arsys.es
 http://www.arsys.es
• Sync.es
 http://www.sync.es

Tema 3 - Despliegue de aplicaciones web 16


DESARROLLO DE APLICACIONES WEB
Despliegue de las aplicaciones web

• Introducción
• Alojamiento tradicional
• Computación en la nube
• Arquitecturas escalables y tolerantes a fallos

Tema 3 - Despliegue de aplicaciones web 17


DESPLIEGUE DE APLICACIONES WEB
Computación en la nube
• La computación en la nube (Cloud computing) es un concepto de
marketing más que un concepto técnico
• Cuando los proveedores utilizan la palabra cloud se refieren a la
posibilidad de configurar y redimensionar los recursos que se usan
de forma rápida y sencilla, o manualmente vía web o usando APIs
REST
• Dado que son tan dinámicos, se suele cobrar por tiempo de uso de
los recursos (horas o minutos), sin tener que hacer un contrato
previo con un tiempo de permanencia determinado.
• Los recursos de computación en la nube suelen estar virtualizados,
aunque en algunas ocasiones pueden ser máquinas físicas

Tema 3 - Despliegue de aplicaciones web 18


DESPLIEGUE DE APLICACIONES WEB
Computación en la nube
• Los proveedores de cloud computing ofrecen diversos tipos de
servicios, tanto de bajo nivel como de alto nivel.
 Servidores virtuales (instancias)
 Gestión del sistema operativo que tendrán los servidores (imagen)
 Sistema de copias de seguridad de los servidores completos
 Balanceadores de carga entre servidores
 Bases de datos administradas
 Servicios de gestión de logs, monitorización, alarmas…
 Plataforma auto-escalable para ejecución de aplicaciones

Tema 3 - Despliegue de aplicaciones web 19


DESPLIEGUE DE APLICACIONES WEB
Computación en la nube

• La diferencia con los alojamientos tradicionales consiste en


la elasticidad de los recursos
• Desde una consola web o una app móvil se pueden activar
o desactivar recursos (servidores, sistemas operativos,
copias de seguridad…)
• También se pueden gestionar de forma automática con APIs
REST o librerías en lenguajes de programación
• El software es verdaderamente escalable. Si necesita más
recursos hardware, los puede conseguir de forma
automática

Tema 3 - Despliegue de aplicaciones web 20


DESPLIEGUE DE APLICACIONES WEB
Computación en la nube

• Proveedores más conocidos

Tema 3 - Despliegue de aplicaciones web 21


DESPLIEGUE DE APLICACIONES WEB
Computación en la nube

• Los servicios ofrecidos por los proveedores


pueden ser de diferentes niveles de
abstracción:
 Desarrolladores
 Infraestructura como servicio (bajo nivel)
 Plataforma como servicio (nivel medio)
 Usuario final
 Software como servicio (alto nivel)

Tema 3 - Despliegue de aplicaciones web 22


DESPLIEGUE DE APLICACIONES WEB
Computación en la nube

• Infraestructura como servicio


 Infraestructure as a Service (IaaS)
 Servicios:
 Servidores (instances)
 Balanceadores de carga (load balancer)
 Gestión de sistemas operativos (images)
 Copias se seguridad de servidores
 Almacenamiento de datos
 Direcciones IP
 Servidores DNS

Tema 3 - Despliegue de aplicaciones web 23


DESPLIEGUE DE APLICACIONES WEB
Computación en la nube

• Plataforma como servicio


 Platform as a Service (PaaS)
 Plataforma para el despliegue de aplicaciones web:
 La plataforma está diseñada para ser escalable de forma
automática (sin intervención del
desarrollador/administrador)
 Dependiendo del proveedor existen plataformas para las
tecnologías mas usadas: Java, PHP, Ruby, .NET..
 La plataforma ofrece servicios adicionales como un
servicio: Bases de datos, servidor de correo, bus de
comunicaciones, etc…

Tema 3 - Despliegue de aplicaciones web 24


DESPLIEGUE DE APLICACIONES WEB
Computación en la nube

• Software como Servicio


 Software as a Service (SaaS)
 El software se ofrece como un servicio por Internet (vía
web)
 El usuario no instala el software, lo usa vía web
 Generalmente se paga por uso o por número de usuarios
 Normalmente están destinados al usuario final, aunque
algunos servicios están orientados a desarrolladores
 Ejemplos: Dropbox, GMail, GoogleDocs, Microsoft 365,
iCloud, flickr

Tema 3 - Despliegue de aplicaciones web 25


DESARROLLO DE APLICACIONES WEB
Despliegue de las aplicaciones web

• Introducción
• Tipos de Alojamiento
• Computación en la nube
 Infraestructura como Servicio
 Plataforma como Servicio
 Software como Servicio
• Arquitecturas escalables y tolerantes a fallos

Tema 3 - Despliegue de aplicaciones web 26


DESPLIEGUE DE LAS APLICACIONES WEB
Infraestructura como servicio

• Es la capa de abstracción más baja del cloud


computing
• Amazon Web Services es el proveedor más famoso y
más completo en estos servicios
• AWS ofrece un conjunto de servicios y un modelo de
precios muy completo y que se ajusta a las
necesidades de cada cliente

Tema 3 - Despliegue de aplicaciones web 27


INFRAESTRUCTURA COMO SERVICIO
Amazon Elastic Compute Compute (EC2)

• http://aws.amazon.com/es/ec2/
• Es el nombre comercial del servicio de
servidores virtuales o instancias
• Disponen de varios tipos de instancias según su “hardware”:
 Instancias estándar: Pequeñas, medianas, grandes y extragrandes
 Instancias micro
 Instancias con gran cantidad de memoria
 Instancias con CPU de alto rendimiento
 Instancias en clúster (con redes de alta velocidad ente ellas)
 Instancias de GPU para clústeres

Tema 3 - Despliegue de aplicaciones web 28


INFRAESTRUCTURA COMO SERVICIO
Amazon Elastic Compute Compute (EC2)

• Otros servicios adicionales


 Amazon Elastic Block Store: Disco duro de
las instancias persistente. Sus datos permanecen
cuando la instancia se apaga
 Varias ubicaciones: El cliente puede elegir la ubicación para
reducir la latencia a los usuarios de los servicios. Además, existen
varias zonas de disponibilidad dentro de la misma ubicación para
minimizar el impácto de las catástrofes
 Direcciones Elastic IP: Por defecto Las instancias tienen IPs
internas en la red de Amazon. Se puede asociar una IP pública a
una instancia

Tema 3 - Despliegue de aplicaciones web 29


INFRAESTRUCTURA COMO SERVICIO
Amazon Elastic Compute Compute (EC2)

• Otros servicios adicionales


 Amazon Cloud Watch: Servicio de
monitorización de instancias con sistema
de alarmas y gráficas de uso de recuros (memoria, CPU, red…)
 Auto Scaling: Se pueden configurar reglas para que Amazon inicie
más instancias cuando la carga de las existentes supere un umbral
y volver a bajar cuando la carga disminuya
 Elastic Local Balancer: Dispositivos que reparten las peticiones
web a cada una de las instancias que se han creado con el
escalado automático o manual

Tema 3 - Despliegue de aplicaciones web 30


INFRAESTRUCTURA COMO SERVICIO
Amazon Elastic Compute Compute (EC2)

• Otros servicios adicionales (software)


 Imágenes de Instancias (AMI): Amazon
permite la gestión de imágenes de las instancias (AMI),
pudiendo crear y gestionar varias imágenes. Se puede iniciar
una instancia con cualquier imagen. Se puede crear una
imagen como una copia de seguridad de una instancia.
 Software preconfigurado en las instancias:
 Sistemas operativos: Windows y Linux (Red Hat, Ubuntu,
Oracle, Debian, Fedora, Suse…)
 Otro tipo de software: BBDD, Servidores web, Gestión de
recursos, servidores de vídeo, etc…

Tema 3 - Despliegue de aplicaciones web 31


INFRAESTRUCTURA COMO SERVICIO
Amazon Elastic Compute Compute (EC2)
• Forma de pago
 Instancias bajo demanda (on-demand) :
 El usuario paga exclusivamente por el uso
que hace de las instancias (se paga por horas)
 Instancias reservadas:
 El usuario puede reservar las instancias que quiera pagando una
cantidad por adelantado para 1 o 3 años.
 En las instancias reservadas el coste por hora es menor
 Instancias Spot:
 El usuario fija el precio al que está dispuesto a pagar una hora
de cómputo. Amazon ofrece al usuario las instancias “que
sobran” cuando están disponibles a ese precio en base a la
oferta y la demanda

Tema 3 - Despliegue de aplicaciones web 32


DESARROLLO DE APLICACIONES WEB
Despliegue de las aplicaciones web

• Introducción
• Tipos de Alojamiento
• Computación en la nube
 Infraestructura como Servicio
 Plataforma como Servicio
 Software como Servicio
• Arquitecturas escalables y tolerantes a fallos

Tema 3 - Despliegue de aplicaciones web 33


DESPLIEGUE DE LAS APLICACIONES WEB
Plataforma como servicio

• En el Platform as a Service (PaaS) se ofrece una


plataforma para la ejecución de aplicaciones
(servidores web, bases de datos, gestión de logs,
monitorización, auto-escalado, etc…)
• Los desarrolladores no se preocupan de la gestión de
la plataforma, sólo se preocupan de su software
• La ventaja fundamental es que es escalable y
tolerante a fallos de forma automática
• Cada proveedor ofrece unos servicios diferentes

Tema 3 - Despliegue de aplicaciones web 34


DESPLIEGUE DE LAS APLICACIONES WEB
Plataforma como servicio

• Servicios PaaS de Amazon


 Amazon Elastic BeanStalk: Plataforma de
ejecución de código Java y PHP escalable y elástica
 Amazon Simple Notification Service (Amazon
SNS): Envío de notificaciones SMS, Correo,…
 Amazon Simple Queue Service (Amazon SQS):
Servicio de comunicación basado en colas de los
diferentes módulos de la aplicación

Tema 3 - Despliegue de aplicaciones web 35


DESPLIEGUE DE LAS APLICACIONES WEB
Plataforma como servicio

• Servicios PaaS de Amazon


 Almacenamiento
 Amazon Simple Storage Service (Amazon S3):
Servicio de almacenamiento de ficheros
 Amazon Rational Database Service (Amazon RDS):
Base de datos MySQL u Oracle escalable
 Amazon Simple DB: Base de datos NoSQL simple
 Amazon DynamoDB: Base de datos NoSQL
avanzada

Tema 3 - Despliegue de aplicaciones web 36


DESPLIEGUE DE LAS APLICACIONES WEB
Plataforma como servicio

• Existen otros proveedores de PaaS que


ofrecen otros servicios:
 Heroku
 Google App Engine
 Appfog
 CloudFoundry
 OpenShift
 Muchos más…

Tema 3 - Despliegue de aplicaciones web 37


DESPLIEGUE DE LAS APLICACIONES WEB
Plataforma como servicio

• Cada proveedor ofrece diferentes funcionalidades


• Algunos ofrecen algunas tecnologías cerradas y otros
ofrecen tecnologías abiertas (típicamente open source)
• Algunos se ejecutan sobre proveedores de IaaS (AWS,
Rackspace) y otros tienen su propia infraestructura (Google
App Engine)
• Algunos permiten que instales su sistema de PaaS en tus
máquinas (ideal para desarrollo)
• Algunos permiten la ejecución de aplicaciones sin
modificar, otros requieren adaptaciones

Tema 3 - Despliegue de aplicaciones web 38


DESARROLLO DE APLICACIONES WEB
Despliegue de las aplicaciones web

• Introducción
• Tipos de Alojamiento
• Computación en la nube
 Infraestructura como Servicio
 Plataforma como Servicio
 Software como Servicio
• Arquitecturas escalables y tolerantes a fallos

Tema 3 - Despliegue de aplicaciones web 39


DESPLIEGUE DE APLICACIONES WEB
Software como servicio

• Software as a Service (SaaS)


• El software como servicio engloba aquellos
servicios que se ofrecen al usuario final vía web
• Desde un punto de vista técnico, muchos servicios
del Platform as a Service se podrían considerar
como Software as a Service, pero con Software as
a Service se incide en que el usuario final usa el
servicio

Tema 3 - Despliegue de aplicaciones web 40


DESPLIEGUE DE APLICACIONES WEB
Software como servicio

• En este modelo es habitual que el


proveedor/desarrollador ofrezca un modelo
de pago por uso a los usuarios
• Ejemplos: Google Apps,
Microsoft Office 365, Salesforce

Tema 3 - Despliegue de aplicaciones web 41


DESARROLLO DE APLICACIONES WEB
Despliegue de las aplicaciones web

• Introducción
• Alojamiento tradicional
• Computación en la nube
• Arquitecturas escalables y tolerantes a fallos

Tema 3 - Despliegue de aplicaciones web 42


DESPLIEGUE DE APLICACIONES WEB
Arquitecturas escalables y tolerantes a fallos

• Las aplicaciones web tienen que atender a


todos los usuarios que la estén usando (aunque
sean muchos): escalabilidad
• Hay veces que hay muchos usuarios y otras
veces que hay pocos usuarios: elasticidad
• El hardware falla, pero la aplicación web tiene
que seguir prestando servicio a los usuarios:
tolerancia a fallos

Tema 3 - Despliegue de aplicaciones web 43


DESPLIEGUE DE APLICACIONES WEB
Arquitecturas escalables y tolerantes a fallos

• Una arquitectura en la que el servidor web y la


base de datos están en el mismo servidor:
 Arquitectura monolítica
 Si falla la máquina, no se atiende a los usuarios (no
tolerante a fallos)
 Si hay muchos usuarios, puede que la máquina colapse,
y no se atiende a ninguno (no escalable)
 Poner una máquina muy potente sólo alivia el problema
temporalmente. Además, se estarían desaprovechando
recursos con pocos usuarios (no elástica)

Tema 3 - Despliegue de aplicaciones web 44


DESPLIEGUE DE APLICACIONES WEB
Arquitecturas escalables y tolerantes a fallos

Arquitectura monolítica en AWS

Tema 3 - Despliegue de aplicaciones web 45


DESPLIEGUE DE APLICACIONES WEB
Arquitecturas escalables y tolerantes a fallos

• Los proveedores de computación en la nube


ofrecen servicios para que las aplicaciones
web se desplieguen en arquitecturas
escalables, tolerantes a fallos y elásticas

Tema 3 - Despliegue de aplicaciones web 46


DESPLIEGUE DE APLICACIONES WEB
Arquitecturas escalables y tolerantes a fallos

Arquitectura escalable

Tema 3 - Despliegue de aplicaciones web 47


DESPLIEGUE DE APLICACIONES WEB
Arquitecturas escalables y tolerantes a fallos

Arquitectura escalable

Tema 3 - Despliegue de aplicaciones web 48


DESPLIEGUE DE APLICACIONES WEB
Arquitecturas escalables y tolerantes a fallos

Arquitectura escalable

Tema 3 - Despliegue de aplicaciones web 49


DESPLIEGUE DE APLICACIONES WEB
Arquitecturas escalables y tolerantes a fallos

Arquitectura escalable

Tema 3 - Despliegue de aplicaciones web 50


DESPLIEGUE DE APLICACIONES WEB
Arquitecturas escalables y tolerantes a fallos

Arquitectura escalable

Tema 3 - Despliegue de aplicaciones web 51


DESPLIEGUE DE APLICACIONES WEB
Arquitecturas escalables y tolerantes a fallos

Arquitectura escalable

Tema 3 - Despliegue de aplicaciones web 52


DESPLIEGUE DE APLICACIONES WEB
Arquitecturas escalables y tolerantes a fallos

Arquitectura escalable

Tema 3 - Despliegue de aplicaciones web 53


DESPLIEGUE DE APLICACIONES WEB
Arquitecturas escalables y tolerantes a fallos

• La arquitectura que se ha mostrado no hace


uso de una base de datos.
• Cuando se usa una base de datos, también
tiene que ser escalable y tolerante a fallos
• Se puede usar el servicio Amazon RDS que
ofrece una base de datos MySQL gestionada,
escalable y tolerante a fallos

Tema 3 - Despliegue de aplicaciones web 54


DESPLIEGUE DE APLICACIONES WEB
Arquitecturas escalables y tolerantes a fallos

Tema 3 - Despliegue de aplicaciones web 55


DESPLIEGUE DE APLICACIONES WEB
Arquitecturas escalables y tolerantes a fallos

• Una de las técnicas que se pueden usar para


aumentar la escalabilidad de una web es
utilizar una caché
• Una caché guarda en memoria la información
que se consulta a la bbdd con mucha
frecuencia, lo que reduce el tiempo de
consulta

Tema 3 - Despliegue de aplicaciones web 56


DESPLIEGUE DE APLICACIONES WEB
Arquitecturas escalables y tolerantes a fallos

Tema 3 - Despliegue de aplicaciones web 57

También podría gustarte