symfony, cloud computing y web escalables
DESCRIPTION
Mi ponencia en las jornadas sobre symfony en la Universitat Jaume I de CastellónTRANSCRIPT
![Page 1: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/1.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/10.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Conceptos
![Page 11: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/17.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
DesarrolloDesarrolla pensando en la infraestructura
![Page 18: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/20.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Problema: implementación actual
![Page 21: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/22.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/25.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Configuración de caché propia
config / bsCache.yml
![Page 26: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/26.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/27.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Configuración de caché propia
![Page 28: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/28.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/29.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/30.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Automatizamos el añadir nuevos servers al pool
![Page 31: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/31.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/32.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Resultado
![Page 33: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/33.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/34.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
MySQL
![Page 35: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/35.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/36.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/37.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
MySql / Master - Slave
![Page 38: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/38.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
MySql / Master - Slave
lecturas y escrituras
![Page 39: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/39.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
MySql / Master - Slave
![Page 40: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/40.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
MySql / Master - Slave
LECTURASESCRITURAS
![Page 41: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/41.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
MySql / Master - Slave
LECTURASESCRITURAS
![Page 42: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/42.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
MySql / Master - Slave
![Page 43: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/43.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
MySql / Master - Slave
![Page 44: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/44.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/45.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
MySql / Master - Slave
![Page 46: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/46.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/47.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
MySql / Master - Slave
![Page 48: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/48.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/49.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/50.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
MySql / sfPager sin Count
![Page 51: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/51.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/52.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/53.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/54.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/55.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/56.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/57.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/58.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/59.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Cache
![Page 60: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/60.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/61.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Cache / APC
![Page 62: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/62.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/63.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/64.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/65.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Cache / Memcached
![Page 66: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/66.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/67.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/68.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/69.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/70.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/71.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Cache / sfViewCache
![Page 72: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/72.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Cache / sfViewCache
Cache de acción, incluyendo el layout
![Page 73: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/73.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/74.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Cache / sfViewCache
Cache de partial y componente
![Page 75: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/75.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/76.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/77.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Cache / proxyCache
![Page 78: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/78.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Cache / proxyCache
![Page 79: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/79.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/80.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/81.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/82.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/83.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/84.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Cache / proxyCache / Varnish
![Page 85: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/85.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/86.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/87.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/88.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/89.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/90.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/91.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/92.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Dividir en capas
![Page 93: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/93.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/94.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/95.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/96.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Gestión IT
![Page 97: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/97.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/98.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/99.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/100.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/101.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/102.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
AMAZON EC2, S3, SQS
![Page 103: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/103.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
![Page 104: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/104.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/105.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/106.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/107.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/108.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Amazon / Cloudfusion / S3
Subimos un archivo a S3
![Page 109: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/109.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/110.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Amazon / Cloudfusion / EC2
![Page 111: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/111.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/112.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/113.jpg)
Jornadas Symfony http://decharlas.uji.es/symfony
Resumen
![Page 114: Symfony, cloud computing y web escalables](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/114.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/115.jpg)
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](https://reader034.vdocuments.site/reader034/viewer/2022042522/559c1d161a28abce298b456f/html5/thumbnails/116.jpg)
GRACIASAsier Marqués [email protected]
Jornadas Symfony 5 y 6 de julio 2010Universitat Jaume I, Castellón
http://decharlas.uji.es/symfony