Post on 24-Jun-2015
Computación
Computación en AWS
• Dos servicios
• Amazon EC2 (Elastic Cloud Computing)
• Computación virtualizada escalable
• Uno de los servicios más populares
Computación en AWS
• Amazon EMR (Elastic MapReduce)
• Análisis de Datos, Minería de Datos
• Sobre la infraestructura de EC2
• Tareas en diferido
Amazon EC2Elastic Cloud Computing
Amazon EC2
• Servicio que provee de capacidad de computación elástica
• Máquinas virtuales
• Basadas en Linux ó en Windows
Amazon EC2
• Tarficación “compleja”
• aws.amazon.com/ec2/pricing
Amazon EC2
¿Cómo debemos usar las máquinas de EC2?
Amazon EC2• Podemos emplear estas máquinas virtuales
como servidores e infraestructura de Red
• Servidor(es) Web
• Servidor(es) de BBDD
• Servidor(es) de colas de mensajería
• Servidor(es) de correo
• Servidor(es) de tareas en diferido/cron
• etc.
Amazon EC2
• NO deberiamos emplearlas como:
• Servidor de Ficheros
• Servidor de Web estáticas
• Servidor de Balanceo de Carga
• “Usos que se solapen con otros servicios de AWS”
Amazon EC2
• Deberiamos evitar:
• Distribución de assets
• javascripts, stylesheets e imágenes
• El tráfico hacia fuera de AWS
• En la medida de lo posible
Amazon EC2
Arquitectura de un Servicio Web con EC2
Amazon EC2• Una arquitectura ideal aislaría los diferentes
elementos dentro máquinas EC2
• Notablemente más sencillo de escalar
• A gran escala coste menor
• Mayor resilencia
• Se evitan cuellos de botella
• Basada en Escalabilidad Horizontal + Vertical
Amazon EC2
• Sharding de la base de datos
• Balanceo de carga de Servidores Web y Workers
• Elastic Load Balancer
Amazon EC2
Load Balancer (ELB)
EC2Web Server
EC2Web Server
EC2Web Server···
EC2Database
EC2Database
EC2Database···
EC2Worker
EC2Worker···
Amazon EC2
• Esto sistema presenta un coste relativamente elevado
• En el otro extremo se plantea una estructura de servidor con toda la infraestructura de la plataforma
• Pudiendo separar diferentes elementos en máquinas aisladas
Amazon EC2
• Buen rendiemiento para servicios relativamente pequeños
• Puesta en marcha notablemente más sencilla
• Manteniemiento más sencillo
• Escalabilidad hasta cierto límite
• Basada en Escalabilidad Vertical
Amazon EC2
EC2
BBDD Servidor Web Worker
Amazon EC2
• Un punto intermedio entre ambas puede ser la mejor solución
• Tratar de asegurar la separación entre:
• Datos
• Código
• Archivos
Amazon EC2
• Links de interés
• Horizontal vs Vertical Scalingsinginghorsestudio.com/horizontal-vs-vertical-scaling
• highscalability.com
Amazon EC2
• Puesta en práctica
Amazon EMRElastic Map Reduce
Amazon EMR
• Servicio basado en EC2 + Apache Hadoop
• Especialmente diseñado para datasets largos
• Hace uso de MapReduce
Amazon EMR
• Map Reduce
• Modelo de programación para largos sets de datos
• Mediante este sistema se simplifica la escalabilidad horizontal
Amazon EMR
• Map Reduce
• Recibe este nombre de las dos funciones básicas que lo componen Map y Reduce
• Map: función aplicada a cada clave/registro generando 0 o varias parejas clave/registro
• Reduce: función aplicada a los grupos clave/registros generados en Map
Amazon EMR
• Map Reduce - Ejemplo
• Supongamos que queremos obtener los usuarios por edad de una plataforma
• SQL:
• SELECT age, count(*) FROM users GROUP BY age
• ¿Aplicado a la base de datos de Facebook?
Amazon EMR
• Map Reduce - Ejemplo
• Con MapReduce// Agrupa las ids por edad
function Map(id, user): emit(user.age, id)
// Contabiliza cada uno de los grupos
function Reduce(age, ids[]): emit(age, ids.count)
Amazon EMR
• Por tanto
• EMR es un servicio orientado a calculos en grandes datasets
• Escalado dinámicamente bajo demanda
• Ej: Calculo de nóminas a final de mes
Amazon EMR
• Links de interés
• hadoop.apache.org
• MapReduce with Ruby and Hadoop
• Hadoop MapReduce Tutorial
• en.wikipedia.org/wiki/MapReduce
• es.wikipedia.org/wiki/Hadoop