116
organizan patrocinan colaboran Jornadas Symfony 5 y 6 de julio 2010 Universitat Jaume I, Castellón http://decharlas.uji.es/symfony

Symfony, cloud computing y web escalables

Embed Size (px)

DESCRIPTION

Mi ponencia en las jornadas sobre symfony en la Universitat Jaume I de Castellón

Citation preview

Page 1: Symfony, cloud computing y web escalables

organizan patrocinan

colaboran

Jornadas Symfony 5 y 6 de julio 2010

Universitat Jaume I, Castellón

http://decharlas.uji.es/symfony

Page 2: Symfony, cloud computing y web escalables

Symfony, cloud computing y web escalablesAsier Marqués, blackslot.com

Jornadas Symfony 5 y 6 de julio 2010Universitat Jaume I, Castellón

http://decharlas.uji.es/symfony

Page 3: Symfony, cloud computing y web escalables

http://blackslot.com

Jornadas Symfony http://decharlas.uji.es/symfony

Proveemos y gestionamos

infraestructuras basadas en servidores y

soluciones cloud

Page 4: Symfony, cloud computing y web escalables

http://blackslot.com

Jornadas Symfony http://decharlas.uji.es/symfony

Proveemos y gestionamos

infraestructuras basadas en servidores y

soluciones cloud

Desarrollamos aplicaciones web

Page 5: Symfony, cloud computing y web escalables

http://blackslot.com

Jornadas Symfony http://decharlas.uji.es/symfony

Proveemos y gestionamos

infraestructuras basadas en servidores y

soluciones cloud

Desarrollamos aplicaciones web

Por supuesto, en Symfony

Page 6: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Agenda

0. Presentación/Spam

1. Arquitectura web: escalabilidad y rendimiento

2. Cloud computing

3. Preguntas

Page 7: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Agenda

0. Presentación

1. Arquitectura web: escalabilidad y rendimiento

2. Cloud computing

3. Preguntas

Page 8: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Escalabilidad:• Capacidad de crecimiento• Rendimiento• Alta disponibilidad• Gestión simplificada

Page 9: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Escalabilidad:• Capacidad de crecimiento• Rendimiento• Alta disponibilidad• Gestión simplificada

Page 10: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Conceptos

Page 11: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Una aplicación web o infraestructura es escalable cuando es capaz de aumentar la capacidad de dar servicio y funcionalidad, con la menor carga administrativa y de desarrollo posible.

Escalabilidad

Page 12: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Disponemos de buen rendimiento cuando somos capaces de soportar la mayor carga de trabajo posible con los menores recursos de hardware posibles.

Rendimiento

Page 13: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Gozamos de Alta disponibilidad cuando seguimos dando servicio aunque nuestra infraestructura sufra problemas en algunas de sus partes críticas.

Alta disponibilidad

Page 14: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

- Implementación nativa de MVC

- Flexible gracias a especialización y configuración

- Arquitectura REST

- Potente framework para automatizar tareas mediante línea de comandos

Symfony

Page 15: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

- Desarrollo

- Base de datos

- Caché

- División de nuestra aplicación en capas críticas

- Gestión de la infraestructura

Escalabilidad / puntos críticos

Page 16: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

- Desarrollo (pensando en nuestra infraestructura)

- Base de datos

- Caché

- División de nuestra aplicación en capas críticas

- Gestión de la infraestructura

Escalabilidad / puntos críticos

Page 17: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

DesarrolloDesarrolla pensando en la infraestructura

Page 18: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Usa la configuraciónPermite que una persona no programador mantenga tu aplicación.

Automatiza el mantenimiento mediante tareas.

Symfony / Desarrollo

Page 19: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

ejemplo

SITUACIÓN

1. Son las 4am y nuestro administrador de sistemas necesita añadir un nuevo nodo de memcached al pool

2. Nosotros estamos ([ durmiendo | en Tokio | bien acompañados ]+)

Page 20: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Problema: implementación actual

Page 21: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Problema: implementación actual

Ips hardcodeadas en el código

Page 22: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Problema: implementación actual

Ips hardcodeadas en el código

Page 23: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Problema: implementación actual

Usamos nuestro

propio sistema de

cache

Page 24: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

- Las ips de los servidores están hardcodeadas en el código

- Si un administrador añade un nuevo servidor de memcached, debe modificar el código para que nuestra aplicación lo pueda utilizar

- No es fácilmente automatizable

Problema: implementación actual

Page 25: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Configuración de caché propia

config / bsCache.yml

Page 26: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Configuración de caché propia

Más elegante y mantenible

config / bsCache.yml

Page 27: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Configuración de caché propia

Page 28: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Configuración de caché propia

Cacheamos el archivo de

configuración

Leemos la configuración

desde cache

Page 29: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

- Hemos dejado más accesible la configuración a los sysadmin y otras personas no programadoras que mantengan el pool de memcached

- Estaría bien que se pudiese automatizar el despliegue de nuevos nodos para memcached de forma fácil

Configuración de caché propia

Page 30: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Automatizamos el añadir nuevos servers al pool

Page 31: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Automatizamos el añadir nuevos servers al pool

Leemos la configuración y

agregamos un nuevo

servidor en el caso de que

sea necesario

Page 32: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Resultado

Page 33: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Resultado

Con un solo comando la aplicación usará el nuevo nodo del pool de memcached

Page 34: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

MySQL

Page 35: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Suele ser la primera necesidad a la hora de escalar y el principal cuello de botella en rendimiento

Opciones habituales:

• Arquitectura Master – Slave• Optimización de consultas , ¿ORM, DQL? y

mysql • Desnormalización y No-SQL• Particiones o estrategias federated• Busquedas: Sphinx

Symfony / MySql

Page 36: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Nodos master: para escribir

Nodos slaves: para leer

Objetivos:

- Replicación y alta disponibilidad.

- Delegamos las consultas read-only en los Slaves, liberando de esa carga a los servidores Master.

MySql / Master - Slave

Page 37: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

MySql / Master - Slave

Page 38: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

MySql / Master - Slave

lecturas y escrituras

Page 39: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

MySql / Master - Slave

Page 40: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

MySql / Master - Slave

LECTURASESCRITURAS

Page 41: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

MySql / Master - Slave

LECTURASESCRITURAS

Page 42: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

MySql / Master - Slave

Page 43: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

MySql / Master - Slave

Page 44: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

MySql / Master - Slave

Extendemos las clases Doctrine_Query y

Doctrine_Record

Page 45: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

MySql / Master - Slave

Page 46: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

MySql / Master - Slave

Si la query es de tipo SELECT la conexión se

hará a un servidor Slave, en caso contrario al

master

Page 47: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

MySql / Master - Slave

Page 48: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

MySql / Master - Slave

Cuando salvemos, la consulta se hará contra el

servidor master

Page 49: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Reducir el número de consultas VS desglosar una consulta compleja en varias sencillas

QueryCache

Sustituir Count(*) por FOUND_ROWS()

Olvidarnos de DQL en consultas complejas

Desnormalizar VS usar NO-SQL: Memcached, Redis, Cassandra..

MySql / Optimizar

Page 50: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

MySql / sfPager sin Count

Page 51: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

MySql / sfPager sin Count

Añadimos

SQL_CAC_FOUND_ROWS

al SELECT

Page 52: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

MySql / sfPager sin Count

Contamos las tuplas totales

con FOUND_ROWS

Page 53: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Limitaciones de MySql en búsquedas

Bajo rendimiento en tablas con muchas tuplas en las que es necesario buscar en campos de texto muy grandes.

No distingue resultados en base a su relevancia.

A menudo obliga a desnormalizar.

MySql / Búsquedas

Page 54: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Sphinx

- Ranking de resultados por relevancia

- Distribuido

- Muy rápido, tanto indexando como a la hora de devolver los resultados

- Indexación en caliente

MySql / Búsquedas

Page 55: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Sphinx: proceso de búsqueda

MySql / Búsquedas

APLICACIÓN

Page 56: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Sphinx: proceso de búsqueda

MySql / Búsquedas

APLICACIÓN

Page 57: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Sphinx: proceso de búsqueda

MySql / Búsquedas

APLICACIÓN

Page 58: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Sphinx: proceso de búsqueda

MySql / Búsquedas

APLICACIÓN

Page 59: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache

Page 60: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

ViewCache (Symfony <=1.4)

- Caché a nivel de acción

- Caché a nivel de componente y partial

Doctrine posee caché a nivel de consultas

Opciones:

APC, Xcache, Memcached, SQLite, Disco…

Symfony / Cache

Page 61: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / APC

Page 62: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / APC

Cada servidor web almacena

objetos localmente, inaccesibles

desde el resto de frontales

Page 63: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Pros

- Opcode para php, reduce carga de procesador- Nos permite almacenar información- Caché muy rápida

Contras

- La caché es local- No escala horizontalmente

Cache / APC

Page 64: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

apc.shm_size (por defecto 30MB)Tamaño de memoria compartida utilizada para almacenar objetos.

apc.stat (por defecto 1)Si se encuentra activado comprueba por cada ciclo deejecución si el código ha cambiado. Estableciéndolo 0 incrementa el rendimiento siempre que usemos rutas absolutas en los requires/includes.

Cache / APC

Page 65: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / Memcached

Page 66: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / Memcached

Cualquier servidor web puede

gestionar la información de

cache

Page 67: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / Memcached

Cualquier servidor web puede

gestionar la información de

cache

Cada servidor de memcached

es el responsable de una serie

de objetos

Page 68: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Pros• Uno de los sistemas más rápidos• Nos permite distribuir la información• Fácilmente escalable

Contras• Almacenamiento no persistente• No hay replicación• Limitaciones:

• keys <= 255caracteres • valores <= 1MB

Cache / Memcached

Page 69: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Pros• Uno de los sistemas más rápidos• Nos permite distribuir la información• Fácilmente escalable

Contras• Almacenamiento no persistente• No hay replicación*• Limitaciones:

• keys <= 255caracteres • valores <= 1MB

Cache / Memcached

Page 70: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

RepCache para MemcachedDota a memcached de replicación

Cache / Memcached

Page 71: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / sfViewCache

Page 72: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / sfViewCache

Cache de acción, incluyendo el layout

Page 73: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / sfViewCache

Cache de acción, sin incluir el layout

Page 74: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / sfViewCache

Cache de partial y componente

Page 75: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

- Nos facilita la invalidación de cache- Claves basadas en REST e integradas con el sistema de routing

- Está bien para empezar, pero en proyectos avanzados tendremos que considerar otras opciones:

- Estrategia personalizada de cache a nivel de controlador y modelo- Proxy Caché a nivel de sistema- ESI: Edge Side Includes, integrado en symfony 2

Cache / sfViewCache

Page 76: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

- Ideal para cachear estáticos almacenados en otras ubicaciones como s3

- Más óptimo que cualquier caché gestionado en nuestra aplicación, pero menos flexible

- La invalidación y en algunos casos la creación de la cache, debe ser gestionada desde la aplicación web o tareas automatizadas.

- Nos permite el uso de ESI, Edge Side Includes

Cache / proxyCache

Page 77: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / proxyCache

Page 78: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / proxyCache

Page 79: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / proxyCache

Evalúa si tiene cache

de la vista solicitada.

Page 80: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / proxyCacheEn caso de no tener,

solicita la información a los

servidores web y de archivos.

Page 81: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / proxyCacheAlmacena la información

en caché y responde a la

petición.

Page 82: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / proxyCache

La siguiente petición es

servida desde caché

Page 83: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Opciones más usadas:

• Varnish: varnish-cache.org

• Nginx: nginx.org

• Squid: squid-cache.org

Cache / proxyCache

Page 84: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / proxyCache / Varnish

Page 85: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / proxyCache / Varnish

Conexión al servidor web

Cacheamos los estáticos

No cacheamos las

peticiones POST

No cacheamos las

peticiones que incluyan

autenticación http o una

cookie __sesion

Lo demás se cachea

Page 86: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / proxyCache / Varnish

Cuando una url es

gestionada por la cache de

varnish, se llamará a los

métodos hit, miss y fetch

Page 87: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / proxyCache / Varnish

vcl_hit

Configuramos que si la url

contiene la palabra

«PURGAR_CACHE» elimine

la caché.

vcl_miss

Configuramos que si la url

contiene la palabra

«PURGAR_CACHE» y no se

encuentra en caché, nos

avise

Page 88: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Cache / proxyCache / Varnish

vcl_fetch

Miss llama a este método

para que cree la caché.

Ahí le establecemos el

tiempo de vida de la misma

Page 89: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

ESI (Edge Side Includes) nos permiten incluir contenidos de una url en nuestras vistas.

Podemos distribuir contenido de nuestro site e incluso tratar cada parte como si se tratase de una aplicación web independiente.

Symfony2 incluirá soporte nativo para ESI.

Cache / proxyCache / ESI

Page 90: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

<esi:include src = " /esi/categorias.php" alt = " <?php echo url_for(…) ?>" onerror="continue" />

Cache / proxyCache / ESI

Page 91: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

<esi:include src = " /esi/categorias.php" alt = " <?php echo url_for(…) ?>" onerror="continue" />

Las urls pueden ser relativas o absolutas

Cache / proxyCache / ESI

Page 92: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Dividir en capas

Page 93: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Arquitecturas más modulares y por lo tanto, más fáciles de escalar horizontalmente.

Separamos los problemas en capas.

Nos permite usar varias tecnologías de forma transparente, la más adecuada para cada caso.

Dividir en capas

Page 94: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

- Almacenamiento de archivos y estáticos

- Cache

- Acceso a fuentes de datos

- Mailing

- Procesamiento de media o tareas de cálculo

Dividir en capas

Page 95: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Consejo de Yahoo!: no usar ORMsUna buena estrategia si:

- Usamos diferentes tecnologías de bases de datos según el tipo de información

- Equipos de trabajo concentrados exclusivamente en esa área

- Nuestra tecnología de base de datos no implementa interfaz PDO

Capas / Acceso a base de datos

Page 96: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Gestión IT

Page 97: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Monitorización- Alertas: Nagios- Gráficos: Munin, Ganglia, Cacti

Aprovisionamiento- Buena nomenclatura- Configuraciones bajo control de versiones- Automatización de aprovisionamiento (Virtualización o

instalación por red)

Backup- ¿Has probado a restaurar?- Configuraciones bajo control de versiones

Gestión IT

Page 98: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Agenda

0. Presentación

1. Arquitectura web: escalabilidad y rendimiento

2. Cloud computing

3. Preguntas

Page 99: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

- Tres modelos principales: SAAS, PAAS y IAAS

- Nos despreocupamos de los costes y gestión de la capa de hardware y de red

- El despliegue es inmediato

- Pago por uso

- La escalabilidad horizontal no es un problema

Cloud computing

Page 100: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

IAAS

- No hay que aprender nada nuevo en la capa de sistemas.

- Nos permite migrar aplicaciones sin hacer grandes cambios

- Tenemos límites similares o menores a los que tendríamos en una infraestructura física

IAAS vs PAAS

PAAS

- Hay que pensar de forma distinta a como pensaríamos en una infraestructura física.

- Hay que desarrollar siendo conscientes de los requisitos y recursos de dicho entorno

- Suele ser mucho más sencillo para un programador. Abstrae de la complejidad de la capa de sistemas.

Page 101: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

IAAS

- Amazon EC2

- Softlayer

- UbiCloud

- Rackspace

- …

IAAS vs PAAS / Proveedores

PAAS

- Microsoft Azure

- Google App Engine

- Amazon S3, SDB

- …

Page 102: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

AMAZON EC2, S3, SQS

Page 103: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Page 104: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

- Permite desplegar instancias virtuales desde AMIs en minutos

- Permite configurar AMIs y compartirlas con la comunidad

- Distintos tipos de instancias: desde 1.7GB de Ram hasta 64.8GB de Ram

- Pago por tiempo de CPU, transferencia de datos e I/O

- Disponemos de volúmenes EBS, ip fijas, snapshots, balanceo y monitorización (CloudWatch)

Amazon / EC2

Page 105: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

- Almacenamiento de objetos clave / valor. Cada archivo es un objeto.

- Para recuperar grandes cantidades de objetos, disponemos de AWS Import/Export

- Se paga por almacenamiento, número de peticiones y transferencia.

- El almacenamiento es flexible e infinito, pero cada objeto tiene un límite de 5GB

- Accesible mediante REST con url basada en subdominios o directorio:http:// [bucket_id] .dominio.com/objetohttp://s3.amazonaws3.com/ [bucket_id] /objeto

Amazon / S3

Page 106: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

- Servicio de cola de mensajes

- Ideal para trabajos de alta carga que se puedan hacer de forma asíncrona

- Se paga por transferencia y número de mensajes.

- El almacenamiento es flexible e infinito.

Amazon / SQS

Page 107: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

- Conjunto de clases para trabajar con los servicios web de Amazon

- Muy bien documentada y soporta todos los servicios de Amazon

- Es muy sencilla de utilizar

Amazon / Cloudfusion

Page 108: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Amazon / Cloudfusion / S3

Subimos un archivo a S3

Page 109: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Amazon / Cloudfusion / S3

Subimos un archivo a S3 Creamos un bucket

Subimos el archivo al bucket

Page 110: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Amazon / Cloudfusion / EC2

Page 111: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Amazon / Cloudfusion / EC2

Arranco una instancia

virtual en EC2

Le asocio una dirección ip

pública.

Page 112: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Amazon / Cloudfusion

- Usando cloudfusion junto a las herramientas de configuración y tareas de Symfony, automatizamos el crecimiento y gestión de la infraestructura.

- Podemos en todo momento aumentar nuestra capacidad de almacenamiento y proceso, de forma inmediata y flexible

Page 113: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Resumen

Page 114: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

- Debemos empezar a pensar en la infraestructura como parte de nuestro proyecto de desarrollo

- Además de por escalar, necesitamos preocuparnos por el rendimiento para reducir nuestros costes

- Hoy en día existen más opciones que Apache + Mysql en entornos Linux

- El cloud computing es una opción asequible para disponer de arquitecturas pensadas para escalar desde el principio.

Resumen

Page 115: Symfony, cloud computing y web escalables

Jornadas Symfony http://decharlas.uji.es/symfony

Agenda

0. Presentación

1. Arquitectura web: escalabilidad y rendimiento

2. Cloud computing

3. Preguntas

Page 116: Symfony, cloud computing y web escalables

GRACIASAsier Marqués [email protected]

Jornadas Symfony 5 y 6 de julio 2010Universitat Jaume I, Castellón

http://decharlas.uji.es/symfony