3. • Las aplicaciones de escritorio se pasan a la
web (gmail, google docs)
• Nuestras vidas y actividades se mueven a la
nube
• Los servicios y la información en la nube,
accesibles con cualquier navegador conectado
a la nube. (SaaS)
• Necesitamos igualdad de condiciones y
rendimiento en la nube
10. • El usuario, sus aplicaciones y sus datos se
mueven a la web
• La web, los navegadores y las conexiones
evolucionan
• + velocidad
• En cualquier lugar
15. • Tiempo de respuesta
– 0.1s a 1s: No es necesario feedback al usuario
– 1s a 10s: Es necesario feedback al usuario
(cargador, opciones de carga)
– >10s: El usuario no llega a los 10s
16. ¿Cómo escalamos?
Scaling up (vertical) Scaling out (horizontal)
• Upgrades a cada nodo • Aumentar el nro de nodos
• Más CPU • Más máquinas
• Más memoria • Distribuir
• Más máquina • Descentralizar
• Sencillo • Complicado
• Muy limitado
18. • “sólo se puede escalar con Java” (JA!)
• “PHP/Python/Ruby no escalan” (JA!)
• La escalabilidad depende del diseño de la
arquitectura, NO de la tecnología utilizada
• NO es una tecnología
• NO es un protocolo
19. Escalar verticalmente
• Reemplazar el servidor por uno más grande
• Usar CPUs más rápidos
• Un servidor que es el doble de rápido cuesta
bastante más que el doble.
20. Escalar horizontalmente
• Agregar servidores (1, 10, 100, 1000)
• Barato
• Depende de la red (gigabit, 10GB, Infiniband)
• Obtenemos gratis: redundancia (AD!)
• Escalabilidad NO ES alta disponibilidad
• Pero se intersecan
• Eliminar SPFs! (escalabilidad+AD+seguridad)
21. • LAMP básico
– Linux, Apache, MySQL, PHP (lenguaje
de programación)
– ¿Escalable?
• Máquina compartida para servidor web y
base de datos
– ¿Confiable?
• Un solo punto de fallo (SPF)
22. • Base de datos dedicada
– La base de datos corre en un servidor
separado
– Requerimientos
• Otra máquina más administración
– ¿Escalable?
• Hasta un servidor
– ¿Confiable?
• DOS puntos de fallo
23. • Múltiples servidores web
– Beneficios
• El tráfico puede crecer más allá de la capacidad de un servidor
– Requerimientos
• Más máquinas
• Configurar balanceo de cargas
24. – Balanceo de cargas utilizando DNS (DNS round robin)
• Registrar la lista de IPs en el DNS
• Balanceo de carga estadístico
• Los registros DNS son cacheados con TTL (Time To Live)
25. – Balanceo de cargas utilizando DNS (DNS round robin)
• Registrar la lista de IPs en el DNS
• Balanceo de carga estadístico
• Los registros DNS son cacheados con TTL (Time To Live)
• Downtime hasta que los registros DNS se propaguen
26. – Balanceo de cargas utilizando DNS (DNS round robin)
– ¿Escalable?
• Agregar más servidores web como sea necesario
– ¿Confiable?
• No se puede redirigir tráfico rápidamente
• La base de datos aún es SPF
27. – Balanceo de cargas utilizando reverse proxy
– Beneficios
• Ruteo flexible
• Balanceo de carga a nivel aplicación
– Requerimientos
• Más máquinas
• Configuración y código para proxies
28. Reverse proxy
– ¿Escalable?
• Agregar más servidores web
• Especialización
• Limitado por
– Capacidad de ruteo del proxy
– Una base de datos
– ¿Confiable?
• Ruteo rápido a nivel de aplicación
• Componentes especializados son más robustos
• Múltiples proxies requieren ruteo a nivel de red
– Balanceo de carga con DNS (DNS Round Robin)
– Hardware de ruteo de red
• Base de datos sigue siendo el SPF
29. – Base de datos Maestro - Esclavo
– Beneficios
• Mejor rendimiento de lectura
• Invisible a la aplicación
– Requerimientos
• Aún más máquinas
• Cambios a MySQL
30. – Base de datos Maestro - Esclavo
– ¿Escalable?
• Escala el ratio de lectura con el número de servidores
• Pero no la escritura
– Requerimientos
• Aún más máquinas
• Cambios a MySQL
31. – Base de datos Maestro - Esclavo
– ¿Confiable?
• Maestro es SPF para escrituras
• Maestro puede morir antes de replicarse
32. • Base de datos particionada
– Beneficios – Requerimientos
– Escala el rendimiento en – Aún más máquinas
lectura tanto en escritura como – Mucha administración
lectura – Re arquitectura del modelo de
datos
– Reescribir consultas
33. Shared nothing (SN)
• Cada nodo independiente
• Eliminar SPFs
• Storage separado
• DB separada de web
• Cache
• Sesiones
35. Cloud computing es un nuevo modelo de prestación de
servicios de negocio y tecnología, que permite al
usuario acceder a un catálogo de servicios
estandarizados y responder 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.
Wikipedia
36. – Todo el trabajo de escalabilidad, alto rendimiento y alta disponibilidad esta a
cargo del proveedor del servicio y totalmente abstraído del cliente – recursos
abstraidos.
– Escalabilidad “instantánea”
– Capacidad de procesamiento y almacenamiento “ilimitado” - Capacidad
elástica
– Software as Service
– Pago solo por lo que uso
– Dependencia de otras empresas proveedoras
– Ejemplos
• Google app engine
• Amazon web services
• Azure de Microsoft
• Rackspace