SlideShare una empresa de Scribd logo
Castellón - 5 y 6 de Julio 2010 – Universitat Jaume I Jornadas Symfony 5 y 6 de julio 2010 Universitat Jaume I, Castellón http://decharlas.uji.es/symfony patrocinan organizan colaboran
Symfony, cloud computing y web escalables Asier Marqués, blackslot.com 5 y 6 de julio 2010 Universitat Jaume I, Castellón Jornadas Symfony http://decharlas.uji.es/symfony
Proveemos y gestionamos infraestructuras basadas en servidores y  soluciones cloud http://blackslot.com Jornadas Symfony            															http://decharlas.uji.es/symfony
Proveemos y gestionamos infraestructuras basadas en servidores y  soluciones cloud Desarrollamos aplicaciones web 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 http://blackslot.com Jornadas Symfony            															http://decharlas.uji.es/symfony
Agenda 0.	Presentación/Spam Arquitectura web: escalabilidad y rendimiento Cloud computing Preguntas Jornadas Symfony            															http://decharlas.uji.es/symfony
Agenda 0.	Presentación Arquitectura web: escalabilidad y rendimiento Cloud computing Preguntas Jornadas Symfony            															http://decharlas.uji.es/symfony
Escalabilidad: ,[object Object]
Rendimiento
Alta disponibilidad
Gestión simplificadaJornadas Symfony            															http://decharlas.uji.es/symfony
Escalabilidad: ,[object Object]
Rendimiento
Alta disponibilidad
Gestión simplificadaJornadas Symfony            															http://decharlas.uji.es/symfony
Conceptos Jornadas Symfony            															http://decharlas.uji.es/symfony
Escalabilidad 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. Jornadas Symfony            															http://decharlas.uji.es/symfony
Rendimiento Disponemos de buen rendimiento cuando somos capaces de soportar la mayor carga de trabajo posible con los menores recursos de hardware posibles. Jornadas Symfony            															http://decharlas.uji.es/symfony
Alta disponibilidad Gozamos de Alta disponibilidad cuando seguimos dando servicio aunque nuestra infraestructura sufra problemas en algunas de sus partes críticas. Jornadas Symfony            															http://decharlas.uji.es/symfony
Symfony ,[object Object]
Flexible gracias a especialización y configuración
Arquitectura REST
Potente framework para automatizar tareas mediante línea de comandosJornadas Symfony            															http://decharlas.uji.es/symfony
Escalabilidad / puntos críticos ,[object Object]
Base de datos
Caché
División de nuestra aplicación en capas críticas
Gestión de la infraestructuraJornadas Symfony            															http://decharlas.uji.es/symfony
Escalabilidad / puntos críticos ,[object Object]
Base de datos
Caché
División de nuestra aplicación en capas críticas
Gestión de la infraestructuraJornadas Symfony            															http://decharlas.uji.es/symfony
Desarrollo Desarrolla pensando en la infraestructura Jornadas Symfony            															http://decharlas.uji.es/symfony
Symfony / Desarrollo Usa la configuración Permite que una persona no programador mantenga tu aplicación. Automatiza el mantenimiento mediante tareas. Jornadas Symfony            															http://decharlas.uji.es/symfony
ejemplo SITUACIÓN Son las 4am y nuestro administrador de sistemas necesita añadir un nuevo nodo de memcached al pool Nosotros estamos ([ durmiendo | en Tokio | bien acompañados ]+)  Jornadas Symfony            															http://decharlas.uji.es/symfony
Problema: implementación actual Jornadas Symfony            															http://decharlas.uji.es/symfony
Problema: implementación actual Ips hardcodeadas en el código Jornadas Symfony            															http://decharlas.uji.es/symfony
Problema: implementación actual Ips hardcodeadas en el código Jornadas Symfony            															http://decharlas.uji.es/symfony
Problema: implementación actual Usamos nuestro propio sistema de cache Jornadas Symfony            															http://decharlas.uji.es/symfony
Problema: implementación actual ,[object Object]
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 automatizableJornadas Symfony            															http://decharlas.uji.es/symfony
Configuración de caché propia config / bsCache.yml Jornadas Symfony            															http://decharlas.uji.es/symfony
Configuración de caché propia config / bsCache.yml Más elegante y mantenible Jornadas Symfony            															http://decharlas.uji.es/symfony
Configuración de caché propia Jornadas Symfony            															http://decharlas.uji.es/symfony
Configuración de caché propia Cacheamos el archivo de configuración Leemos la configuración desde cache Jornadas Symfony            															http://decharlas.uji.es/symfony
Configuración de caché propia ,[object Object]
Estaría bien que se pudiese automatizar el despliegue de nuevos nodos para memcached de forma fácilJornadas Symfony            															http://decharlas.uji.es/symfony
Automatizamos el añadir nuevos servers al pool 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 Jornadas Symfony            															http://decharlas.uji.es/symfony
Resultado Jornadas Symfony            															http://decharlas.uji.es/symfony
Resultado Con un solo comando la aplicación usará el nuevo nodo del pool de memcached Jornadas Symfony            															http://decharlas.uji.es/symfony
MySQL Jornadas Symfony            															http://decharlas.uji.es/symfony
Symfony / MySql Suele ser la primera necesidad a la hora de escalar y el principal cuello de botella en rendimiento Opciones habituales: ,[object Object]
Optimización de consultas , ¿ORM, DQL? y mysql
Desnormalización y No-SQL
Particiones o estrategias federated
Busquedas: SphinxJornadas Symfony            															http://decharlas.uji.es/symfony
MySql / Master - Slave Nodos master: para escribir Nodos slaves: para leer Objetivos: ,[object Object]
Delegamos las consultas read-only en los Slaves, liberando de esa carga a los servidores Master.Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / Master - Slave Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / Master - Slave Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / Master - Slave Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / Master - Slave Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / Master - Slave Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / Master - Slave Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / Master - Slave Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / Master - Slave Extendemos las clases Doctrine_Query y Doctrine_Record Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / Master - Slave 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 Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / Master - Slave Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / Master - Slave Cuando salvemos, la consulta se hará contra el servidor master Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / Optimizar 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.. Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / sfPager sin Count Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / sfPager sin Count Añadimos SQL_CAC_FOUND_ROWS al SELECT Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / sfPager sin Count Contamos las tuplas totales con FOUND_ROWS Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / Búsquedas 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. Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / Búsquedas Sphinx ,[object Object]
Distribuido
Muy rápido, tanto indexando como a la hora de devolver los resultados
Indexación en calienteJornadas Symfony            															http://decharlas.uji.es/symfony
MySql / Búsquedas Sphinx: proceso de búsqueda Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / Búsquedas Sphinx: proceso de búsqueda Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / Búsquedas Sphinx: proceso de búsqueda Jornadas Symfony            															http://decharlas.uji.es/symfony
MySql / Búsquedas Sphinx: proceso de búsqueda Jornadas Symfony            															http://decharlas.uji.es/symfony
Cache Jornadas Symfony            															http://decharlas.uji.es/symfony
Symfony / Cache ViewCache(Symfony <=1.4) ,[object Object]
Caché a nivel de componente y partialDoctrine posee caché a nivel de consultas Opciones: APC, Xcache, Memcached, SQLite, Disco… Jornadas Symfony            															http://decharlas.uji.es/symfony
Cache / APC Jornadas Symfony            															http://decharlas.uji.es/symfony
Cache / APC Cada servidor web almacena objetos localmente, inaccesibles desde el resto de frontales Jornadas Symfony            															http://decharlas.uji.es/symfony
Cache / APC Pros ,[object Object]
Nos permite almacenar información
Caché muy rápidaContras ,[object Object]
No escala horizontalmenteJornadas Symfony            															http://decharlas.uji.es/symfony
Cache / APC 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 de ejecución si el código ha cambiado.  Estableciéndolo 0 incrementa el rendimiento siempre que usemos rutas absolutas en los requires/includes. Jornadas Symfony            															http://decharlas.uji.es/symfony
Cache / Memcached Jornadas Symfony            															http://decharlas.uji.es/symfony
Cache / Memcached Cualquier servidor web puede gestionar la información de cache 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 Jornadas Symfony            															http://decharlas.uji.es/symfony
Cache / Memcached 	   Pros ,[object Object]
Nos permite distribuir la información
Fácilmente escalableContras ,[object Object]
No hay replicación
Limitaciones:
keys     <=  255caracteres
valores <=  1MBJornadas Symfony            															http://decharlas.uji.es/symfony
Cache / Memcached 	   Pros ,[object Object]
Nos permite distribuir la información
Fácilmente escalableContras ,[object Object]
No hay replicación*
Limitaciones:
keys     <=  255caracteres
valores <=  1MBJornadas Symfony            															http://decharlas.uji.es/symfony
Cache / Memcached RepCache para Memcached Dota a memcached de replicación Jornadas Symfony            															http://decharlas.uji.es/symfony
Cache / sfViewCache Jornadas Symfony            															http://decharlas.uji.es/symfony
Cache / sfViewCache Cache de acción, incluyendo el layout Jornadas Symfony            															http://decharlas.uji.es/symfony

Más contenido relacionado

Destacado

BilboStack - Php en el 2012
BilboStack - Php en el 2012BilboStack - Php en el 2012
BilboStack - Php en el 2012Asier Marqués
 
Presentación de la plataforma abierta Ubiqarama.org
Presentación de la plataforma abierta Ubiqarama.orgPresentación de la plataforma abierta Ubiqarama.org
Presentación de la plataforma abierta Ubiqarama.org
Asier Marqués
 
Desarrollo de aplicaciones Windows8 para desarrolladores de internet
Desarrollo de aplicaciones Windows8 para desarrolladores de internetDesarrollo de aplicaciones Windows8 para desarrolladores de internet
Desarrollo de aplicaciones Windows8 para desarrolladores de internetAsier Marqués
 
4VisionsManager en WebDevBilbao
4VisionsManager en WebDevBilbao4VisionsManager en WebDevBilbao
4VisionsManager en WebDevBilbaoAsier Marqués
 
Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2
Asier Marqués
 
REST - deSymfony2012
REST - deSymfony2012REST - deSymfony2012
REST - deSymfony2012
Asier Marqués
 
Porfolio services mw lab barkeno advisors
Porfolio services mw lab barkeno advisorsPorfolio services mw lab barkeno advisors
Porfolio services mw lab barkeno advisorsBarkeno Advisors
 
Proyectos fallidos: Rooms.fm en #webdevbilbao
Proyectos fallidos: Rooms.fm en #webdevbilbaoProyectos fallidos: Rooms.fm en #webdevbilbao
Proyectos fallidos: Rooms.fm en #webdevbilbao
Asier Marqués
 

Destacado (8)

BilboStack - Php en el 2012
BilboStack - Php en el 2012BilboStack - Php en el 2012
BilboStack - Php en el 2012
 
Presentación de la plataforma abierta Ubiqarama.org
Presentación de la plataforma abierta Ubiqarama.orgPresentación de la plataforma abierta Ubiqarama.org
Presentación de la plataforma abierta Ubiqarama.org
 
Desarrollo de aplicaciones Windows8 para desarrolladores de internet
Desarrollo de aplicaciones Windows8 para desarrolladores de internetDesarrollo de aplicaciones Windows8 para desarrolladores de internet
Desarrollo de aplicaciones Windows8 para desarrolladores de internet
 
4VisionsManager en WebDevBilbao
4VisionsManager en WebDevBilbao4VisionsManager en WebDevBilbao
4VisionsManager en WebDevBilbao
 
Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2
 
REST - deSymfony2012
REST - deSymfony2012REST - deSymfony2012
REST - deSymfony2012
 
Porfolio services mw lab barkeno advisors
Porfolio services mw lab barkeno advisorsPorfolio services mw lab barkeno advisors
Porfolio services mw lab barkeno advisors
 
Proyectos fallidos: Rooms.fm en #webdevbilbao
Proyectos fallidos: Rooms.fm en #webdevbilbaoProyectos fallidos: Rooms.fm en #webdevbilbao
Proyectos fallidos: Rooms.fm en #webdevbilbao
 

Similar a Symfony, cloud computing y web escalables

Symfony en la gestión de un centro de computación avanzada
Symfony en la gestión de un centro de computación avanzadaSymfony en la gestión de un centro de computación avanzada
Symfony en la gestión de un centro de computación avanzadaCésar Suárez Ortega
 
Caso práctico II: symfony en la gestión de un centro de computación avanzada ...
Caso práctico II: symfony en la gestión de un centro de computación avanzada ...Caso práctico II: symfony en la gestión de un centro de computación avanzada ...
Caso práctico II: symfony en la gestión de un centro de computación avanzada ...
Decharlas
 
Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework Symfony
Rodrigo Miranda
 
symfony admin generator - decharlas
symfony admin generator - decharlassymfony admin generator - decharlas
symfony admin generator - decharlas
Decharlas
 
Symfony y Admin Generator
Symfony y Admin GeneratorSymfony y Admin Generator
Symfony y Admin GeneratorJavier López
 
Symfony: construyendo aplicaciones web
Symfony: construyendo aplicaciones webSymfony: construyendo aplicaciones web
Symfony: construyendo aplicaciones web
sergiovier
 
Symfony
SymfonySymfony
Symfony
alphalinux
 
CRUD básico con Symfony
CRUD básico con SymfonyCRUD básico con Symfony
CRUD básico con Symfony
Symfony Zaragoza
 
Symfony: Domesticando las Vistas - decharlas
Symfony: Domesticando las Vistas - decharlasSymfony: Domesticando las Vistas - decharlas
Symfony: Domesticando las Vistas - decharlas
Decharlas
 
Symfony: Domesticando las Vistas
Symfony: Domesticando las VistasSymfony: Domesticando las Vistas
Symfony: Domesticando las Vistas
Jose Antonio Pio
 
Introducción a Symfony
Introducción a Symfony Introducción a Symfony
Introducción a Symfony
Marcos Quesada
 
Symfony Parte 2
Symfony Parte 2Symfony Parte 2
Symfony Parte 2
Rodrigo Miranda
 
Symfony plugins - No reinventes la rueda PLUGINS - Jornadas Castellón
Symfony plugins - No reinventes la rueda PLUGINS - Jornadas CastellónSymfony plugins - No reinventes la rueda PLUGINS - Jornadas Castellón
Symfony plugins - No reinventes la rueda PLUGINS - Jornadas CastellónJordi Llonch
 
DeSymfony 2017 - Symfony en OpenSky
DeSymfony 2017 - Symfony en OpenSkyDeSymfony 2017 - Symfony en OpenSky
DeSymfony 2017 - Symfony en OpenSky
Pablo Godel
 
Chamilo portable 2016
Chamilo portable 2016Chamilo portable 2016
Chamilo portable 2016
Chamilo User Day
 
Manual php y_mysql
Manual php y_mysqlManual php y_mysql
Manual php y_mysql
johan reyes
 
Clase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasosClase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasos
hydras_cs
 
Introducción a symfony - decharlas
Introducción a symfony - decharlasIntroducción a symfony - decharlas
Introducción a symfony - decharlas
Decharlas
 
Introduccion a symfony
Introduccion a symfonyIntroduccion a symfony
Introduccion a symfony
Alfonso Alba García
 

Similar a Symfony, cloud computing y web escalables (20)

Symfony en la gestión de un centro de computación avanzada
Symfony en la gestión de un centro de computación avanzadaSymfony en la gestión de un centro de computación avanzada
Symfony en la gestión de un centro de computación avanzada
 
Caso práctico II: symfony en la gestión de un centro de computación avanzada ...
Caso práctico II: symfony en la gestión de un centro de computación avanzada ...Caso práctico II: symfony en la gestión de un centro de computación avanzada ...
Caso práctico II: symfony en la gestión de un centro de computación avanzada ...
 
Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework Symfony
 
symfony admin generator - decharlas
symfony admin generator - decharlassymfony admin generator - decharlas
symfony admin generator - decharlas
 
Symfony y Admin Generator
Symfony y Admin GeneratorSymfony y Admin Generator
Symfony y Admin Generator
 
Symfony: construyendo aplicaciones web
Symfony: construyendo aplicaciones webSymfony: construyendo aplicaciones web
Symfony: construyendo aplicaciones web
 
Symfony
SymfonySymfony
Symfony
 
CRUD básico con Symfony
CRUD básico con SymfonyCRUD básico con Symfony
CRUD básico con Symfony
 
Symfony: Domesticando las Vistas - decharlas
Symfony: Domesticando las Vistas - decharlasSymfony: Domesticando las Vistas - decharlas
Symfony: Domesticando las Vistas - decharlas
 
Symfony: Domesticando las Vistas
Symfony: Domesticando las VistasSymfony: Domesticando las Vistas
Symfony: Domesticando las Vistas
 
Introducción a Symfony
Introducción a Symfony Introducción a Symfony
Introducción a Symfony
 
Symfony Parte 2
Symfony Parte 2Symfony Parte 2
Symfony Parte 2
 
Symfony plugins - No reinventes la rueda PLUGINS - Jornadas Castellón
Symfony plugins - No reinventes la rueda PLUGINS - Jornadas CastellónSymfony plugins - No reinventes la rueda PLUGINS - Jornadas Castellón
Symfony plugins - No reinventes la rueda PLUGINS - Jornadas Castellón
 
DeSymfony 2017 - Symfony en OpenSky
DeSymfony 2017 - Symfony en OpenSkyDeSymfony 2017 - Symfony en OpenSky
DeSymfony 2017 - Symfony en OpenSky
 
Pdf
PdfPdf
Pdf
 
Chamilo portable 2016
Chamilo portable 2016Chamilo portable 2016
Chamilo portable 2016
 
Manual php y_mysql
Manual php y_mysqlManual php y_mysql
Manual php y_mysql
 
Clase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasosClase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasos
 
Introducción a symfony - decharlas
Introducción a symfony - decharlasIntroducción a symfony - decharlas
Introducción a symfony - decharlas
 
Introduccion a symfony
Introduccion a symfonyIntroduccion a symfony
Introduccion a symfony
 

Más de Asier Marqués

Desarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando SymfonyDesarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando Symfony
Asier Marqués
 
Creando Productos SaaS
Creando Productos SaaSCreando Productos SaaS
Creando Productos SaaS
Asier Marqués
 
Introducción a Bolt
Introducción a BoltIntroducción a Bolt
Introducción a Bolt
Asier Marqués
 
WordCamp Cantabria - Código mantenible con WordPress
WordCamp Cantabria  - Código mantenible con WordPressWordCamp Cantabria  - Código mantenible con WordPress
WordCamp Cantabria - Código mantenible con WordPress
Asier Marqués
 
PHP en el 2015
PHP en el 2015PHP en el 2015
PHP en el 2015
Asier Marqués
 
Código mantenible, en Wordpress.
Código mantenible, en Wordpress.Código mantenible, en Wordpress.
Código mantenible, en Wordpress.
Asier Marqués
 
Ejecución de servicios digitales y negocios en Internet
Ejecución de servicios digitales y negocios en InternetEjecución de servicios digitales y negocios en Internet
Ejecución de servicios digitales y negocios en Internet
Asier Marqués
 
Desarrollo de Mobile Web Apps
Desarrollo de Mobile Web AppsDesarrollo de Mobile Web Apps
Desarrollo de Mobile Web Apps
Asier Marqués
 
Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1
Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1
Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1Asier Marqués
 
Albero tech Day - De web a móvil con xamarin
Albero tech Day - De web a móvil con xamarinAlbero tech Day - De web a móvil con xamarin
Albero tech Day - De web a móvil con xamarin
Asier Marqués
 
Bilbostack 2014: De web a móvil con Xamarin
Bilbostack 2014: De web a móvil con XamarinBilbostack 2014: De web a móvil con Xamarin
Bilbostack 2014: De web a móvil con Xamarin
Asier Marqués
 
APIs REST #devfestBilbao
APIs REST #devfestBilbaoAPIs REST #devfestBilbao
APIs REST #devfestBilbao
Asier Marqués
 
Silex para aplicaciones web MVC
Silex para aplicaciones web MVCSilex para aplicaciones web MVC
Silex para aplicaciones web MVC
Asier Marqués
 
Servicios REST - PucelaTechDay
Servicios REST - PucelaTechDayServicios REST - PucelaTechDay
Servicios REST - PucelaTechDayAsier Marqués
 
Sistemas Microsoft Windows
Sistemas Microsoft WindowsSistemas Microsoft Windows
Sistemas Microsoft Windows
Asier Marqués
 

Más de Asier Marqués (15)

Desarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando SymfonyDesarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando Symfony
 
Creando Productos SaaS
Creando Productos SaaSCreando Productos SaaS
Creando Productos SaaS
 
Introducción a Bolt
Introducción a BoltIntroducción a Bolt
Introducción a Bolt
 
WordCamp Cantabria - Código mantenible con WordPress
WordCamp Cantabria  - Código mantenible con WordPressWordCamp Cantabria  - Código mantenible con WordPress
WordCamp Cantabria - Código mantenible con WordPress
 
PHP en el 2015
PHP en el 2015PHP en el 2015
PHP en el 2015
 
Código mantenible, en Wordpress.
Código mantenible, en Wordpress.Código mantenible, en Wordpress.
Código mantenible, en Wordpress.
 
Ejecución de servicios digitales y negocios en Internet
Ejecución de servicios digitales y negocios en InternetEjecución de servicios digitales y negocios en Internet
Ejecución de servicios digitales y negocios en Internet
 
Desarrollo de Mobile Web Apps
Desarrollo de Mobile Web AppsDesarrollo de Mobile Web Apps
Desarrollo de Mobile Web Apps
 
Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1
Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1
Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1
 
Albero tech Day - De web a móvil con xamarin
Albero tech Day - De web a móvil con xamarinAlbero tech Day - De web a móvil con xamarin
Albero tech Day - De web a móvil con xamarin
 
Bilbostack 2014: De web a móvil con Xamarin
Bilbostack 2014: De web a móvil con XamarinBilbostack 2014: De web a móvil con Xamarin
Bilbostack 2014: De web a móvil con Xamarin
 
APIs REST #devfestBilbao
APIs REST #devfestBilbaoAPIs REST #devfestBilbao
APIs REST #devfestBilbao
 
Silex para aplicaciones web MVC
Silex para aplicaciones web MVCSilex para aplicaciones web MVC
Silex para aplicaciones web MVC
 
Servicios REST - PucelaTechDay
Servicios REST - PucelaTechDayServicios REST - PucelaTechDay
Servicios REST - PucelaTechDay
 
Sistemas Microsoft Windows
Sistemas Microsoft WindowsSistemas Microsoft Windows
Sistemas Microsoft Windows
 

Último

Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Telefónica
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
raquelariza02
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
Luis Enrique Zafra Haro
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
DiegoCampos433849
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
marianabz2403
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
Fernando Villares
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
AlejandraCasallas7
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
44652726
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
AlejandraCasallas7
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
jjfch3110
 

Último (20)

Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 

Symfony, cloud computing y web escalables

  • 1. Castellón - 5 y 6 de Julio 2010 – Universitat Jaume I Jornadas Symfony 5 y 6 de julio 2010 Universitat Jaume I, Castellón http://decharlas.uji.es/symfony patrocinan organizan colaboran
  • 2. Symfony, cloud computing y web escalables Asier Marqués, blackslot.com 5 y 6 de julio 2010 Universitat Jaume I, Castellón Jornadas Symfony http://decharlas.uji.es/symfony
  • 3. Proveemos y gestionamos infraestructuras basadas en servidores y soluciones cloud http://blackslot.com Jornadas Symfony http://decharlas.uji.es/symfony
  • 4. Proveemos y gestionamos infraestructuras basadas en servidores y soluciones cloud Desarrollamos aplicaciones web http://blackslot.com Jornadas Symfony http://decharlas.uji.es/symfony
  • 5. Proveemos y gestionamos infraestructuras basadas en servidores y soluciones cloud Desarrollamos aplicaciones web Por supuesto, en Symfony http://blackslot.com Jornadas Symfony http://decharlas.uji.es/symfony
  • 6. Agenda 0. Presentación/Spam Arquitectura web: escalabilidad y rendimiento Cloud computing Preguntas Jornadas Symfony http://decharlas.uji.es/symfony
  • 7. Agenda 0. Presentación Arquitectura web: escalabilidad y rendimiento Cloud computing Preguntas Jornadas Symfony http://decharlas.uji.es/symfony
  • 8.
  • 11. Gestión simplificadaJornadas Symfony http://decharlas.uji.es/symfony
  • 12.
  • 15. Gestión simplificadaJornadas Symfony http://decharlas.uji.es/symfony
  • 16. Conceptos Jornadas Symfony http://decharlas.uji.es/symfony
  • 17. Escalabilidad 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. Jornadas Symfony http://decharlas.uji.es/symfony
  • 18. Rendimiento Disponemos de buen rendimiento cuando somos capaces de soportar la mayor carga de trabajo posible con los menores recursos de hardware posibles. Jornadas Symfony http://decharlas.uji.es/symfony
  • 19. Alta disponibilidad Gozamos de Alta disponibilidad cuando seguimos dando servicio aunque nuestra infraestructura sufra problemas en algunas de sus partes críticas. Jornadas Symfony http://decharlas.uji.es/symfony
  • 20.
  • 21. Flexible gracias a especialización y configuración
  • 23. Potente framework para automatizar tareas mediante línea de comandosJornadas Symfony http://decharlas.uji.es/symfony
  • 24.
  • 27. División de nuestra aplicación en capas críticas
  • 28. Gestión de la infraestructuraJornadas Symfony http://decharlas.uji.es/symfony
  • 29.
  • 32. División de nuestra aplicación en capas críticas
  • 33. Gestión de la infraestructuraJornadas Symfony http://decharlas.uji.es/symfony
  • 34. Desarrollo Desarrolla pensando en la infraestructura Jornadas Symfony http://decharlas.uji.es/symfony
  • 35. Symfony / Desarrollo Usa la configuración Permite que una persona no programador mantenga tu aplicación. Automatiza el mantenimiento mediante tareas. Jornadas Symfony http://decharlas.uji.es/symfony
  • 36. ejemplo SITUACIÓN Son las 4am y nuestro administrador de sistemas necesita añadir un nuevo nodo de memcached al pool Nosotros estamos ([ durmiendo | en Tokio | bien acompañados ]+) Jornadas Symfony http://decharlas.uji.es/symfony
  • 37. Problema: implementación actual Jornadas Symfony http://decharlas.uji.es/symfony
  • 38. Problema: implementación actual Ips hardcodeadas en el código Jornadas Symfony http://decharlas.uji.es/symfony
  • 39. Problema: implementación actual Ips hardcodeadas en el código Jornadas Symfony http://decharlas.uji.es/symfony
  • 40. Problema: implementación actual Usamos nuestro propio sistema de cache Jornadas Symfony http://decharlas.uji.es/symfony
  • 41.
  • 42. Si un administrador añade un nuevo servidor de memcached, debe modificar el código para que nuestra aplicación lo pueda utilizar
  • 43. No es fácilmente automatizableJornadas Symfony http://decharlas.uji.es/symfony
  • 44. Configuración de caché propia config / bsCache.yml Jornadas Symfony http://decharlas.uji.es/symfony
  • 45. Configuración de caché propia config / bsCache.yml Más elegante y mantenible Jornadas Symfony http://decharlas.uji.es/symfony
  • 46. Configuración de caché propia Jornadas Symfony http://decharlas.uji.es/symfony
  • 47. Configuración de caché propia Cacheamos el archivo de configuración Leemos la configuración desde cache Jornadas Symfony http://decharlas.uji.es/symfony
  • 48.
  • 49. Estaría bien que se pudiese automatizar el despliegue de nuevos nodos para memcached de forma fácilJornadas Symfony http://decharlas.uji.es/symfony
  • 50. Automatizamos el añadir nuevos servers al pool Jornadas Symfony http://decharlas.uji.es/symfony
  • 51. Automatizamos el añadir nuevos servers al pool Leemos la configuración y agregamos un nuevo servidor en el caso de que sea necesario Jornadas Symfony http://decharlas.uji.es/symfony
  • 52. Resultado Jornadas Symfony http://decharlas.uji.es/symfony
  • 53. Resultado Con un solo comando la aplicación usará el nuevo nodo del pool de memcached Jornadas Symfony http://decharlas.uji.es/symfony
  • 54. MySQL Jornadas Symfony http://decharlas.uji.es/symfony
  • 55.
  • 56. Optimización de consultas , ¿ORM, DQL? y mysql
  • 59. Busquedas: SphinxJornadas Symfony http://decharlas.uji.es/symfony
  • 60.
  • 61. Delegamos las consultas read-only en los Slaves, liberando de esa carga a los servidores Master.Jornadas Symfony http://decharlas.uji.es/symfony
  • 62. MySql / Master - Slave Jornadas Symfony http://decharlas.uji.es/symfony
  • 63. MySql / Master - Slave Jornadas Symfony http://decharlas.uji.es/symfony
  • 64. MySql / Master - Slave Jornadas Symfony http://decharlas.uji.es/symfony
  • 65. MySql / Master - Slave Jornadas Symfony http://decharlas.uji.es/symfony
  • 66. MySql / Master - Slave Jornadas Symfony http://decharlas.uji.es/symfony
  • 67. MySql / Master - Slave Jornadas Symfony http://decharlas.uji.es/symfony
  • 68. MySql / Master - Slave Jornadas Symfony http://decharlas.uji.es/symfony
  • 69. MySql / Master - Slave Extendemos las clases Doctrine_Query y Doctrine_Record Jornadas Symfony http://decharlas.uji.es/symfony
  • 70. MySql / Master - Slave Jornadas Symfony http://decharlas.uji.es/symfony
  • 71. MySql / Master - Slave Si la query es de tipo SELECT la conexión se hará a un servidor Slave, en caso contrario al master Jornadas Symfony http://decharlas.uji.es/symfony
  • 72. MySql / Master - Slave Jornadas Symfony http://decharlas.uji.es/symfony
  • 73. MySql / Master - Slave Cuando salvemos, la consulta se hará contra el servidor master Jornadas Symfony http://decharlas.uji.es/symfony
  • 74. MySql / Optimizar 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.. Jornadas Symfony http://decharlas.uji.es/symfony
  • 75. MySql / sfPager sin Count Jornadas Symfony http://decharlas.uji.es/symfony
  • 76. MySql / sfPager sin Count Añadimos SQL_CAC_FOUND_ROWS al SELECT Jornadas Symfony http://decharlas.uji.es/symfony
  • 77. MySql / sfPager sin Count Contamos las tuplas totales con FOUND_ROWS Jornadas Symfony http://decharlas.uji.es/symfony
  • 78. MySql / Búsquedas 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. Jornadas Symfony http://decharlas.uji.es/symfony
  • 79.
  • 81. Muy rápido, tanto indexando como a la hora de devolver los resultados
  • 82. Indexación en calienteJornadas Symfony http://decharlas.uji.es/symfony
  • 83. MySql / Búsquedas Sphinx: proceso de búsqueda Jornadas Symfony http://decharlas.uji.es/symfony
  • 84. MySql / Búsquedas Sphinx: proceso de búsqueda Jornadas Symfony http://decharlas.uji.es/symfony
  • 85. MySql / Búsquedas Sphinx: proceso de búsqueda Jornadas Symfony http://decharlas.uji.es/symfony
  • 86. MySql / Búsquedas Sphinx: proceso de búsqueda Jornadas Symfony http://decharlas.uji.es/symfony
  • 87. Cache Jornadas Symfony http://decharlas.uji.es/symfony
  • 88.
  • 89. Caché a nivel de componente y partialDoctrine posee caché a nivel de consultas Opciones: APC, Xcache, Memcached, SQLite, Disco… Jornadas Symfony http://decharlas.uji.es/symfony
  • 90. Cache / APC Jornadas Symfony http://decharlas.uji.es/symfony
  • 91. Cache / APC Cada servidor web almacena objetos localmente, inaccesibles desde el resto de frontales Jornadas Symfony http://decharlas.uji.es/symfony
  • 92.
  • 93. Nos permite almacenar información
  • 94.
  • 95. No escala horizontalmenteJornadas Symfony http://decharlas.uji.es/symfony
  • 96. Cache / APC 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 de ejecución si el código ha cambiado. Estableciéndolo 0 incrementa el rendimiento siempre que usemos rutas absolutas en los requires/includes. Jornadas Symfony http://decharlas.uji.es/symfony
  • 97. Cache / Memcached Jornadas Symfony http://decharlas.uji.es/symfony
  • 98. Cache / Memcached Cualquier servidor web puede gestionar la información de cache Jornadas Symfony http://decharlas.uji.es/symfony
  • 99. Cache / Memcached Cualquier servidor web puede gestionar la información de cache Cada servidor de memcached es el responsable de una serie de objetos Jornadas Symfony http://decharlas.uji.es/symfony
  • 100.
  • 101. Nos permite distribuir la información
  • 102.
  • 105. keys <= 255caracteres
  • 106. valores <= 1MBJornadas Symfony http://decharlas.uji.es/symfony
  • 107.
  • 108. Nos permite distribuir la información
  • 109.
  • 112. keys <= 255caracteres
  • 113. valores <= 1MBJornadas Symfony http://decharlas.uji.es/symfony
  • 114. Cache / Memcached RepCache para Memcached Dota a memcached de replicación Jornadas Symfony http://decharlas.uji.es/symfony
  • 115. Cache / sfViewCache Jornadas Symfony http://decharlas.uji.es/symfony
  • 116. Cache / sfViewCache Cache de acción, incluyendo el layout Jornadas Symfony http://decharlas.uji.es/symfony
  • 117. Cache / sfViewCache Cache de acción, sin incluir el layout Jornadas Symfony http://decharlas.uji.es/symfony
  • 118. Cache / sfViewCache Cache de partial y componente Jornadas Symfony http://decharlas.uji.es/symfony
  • 119.
  • 120. Claves basadas en REST e integradas con el sistema de routing
  • 121. Está bien para empezar, pero en proyectos avanzados tendremos que considerar otras opciones:
  • 122. Estrategia personalizada de cache a nivel de controlador y modelo
  • 123. Proxy Caché a nivel de sistema
  • 124. ESI: EdgeSideIncludes, integrado en symfony 2Jornadas Symfony http://decharlas.uji.es/symfony
  • 125.
  • 126. Más óptimo que cualquier caché gestionado en nuestra aplicación, pero menos flexible
  • 127. La invalidación y en algunos casos la creación de la cache, debe ser gestionada desde la aplicación web o tareas automatizadas.
  • 128. Nos permite el uso de ESI, EdgeSideIncludesJornadas Symfony http://decharlas.uji.es/symfony
  • 129. Cache / proxyCache Jornadas Symfony http://decharlas.uji.es/symfony
  • 130. Cache / proxyCache Jornadas Symfony http://decharlas.uji.es/symfony
  • 131. Cache / proxyCache Evalúa si tiene cache de la vista solicitada. Jornadas Symfony http://decharlas.uji.es/symfony
  • 132. Cache / proxyCache En caso de no tener, solicita la información a los servidores web y de archivos. Jornadas Symfony http://decharlas.uji.es/symfony
  • 133. Cache / proxyCache Almacena la información en caché y responde a la petición. Jornadas Symfony http://decharlas.uji.es/symfony
  • 134. Cache / proxyCache La siguiente petición es servida desde caché Jornadas Symfony http://decharlas.uji.es/symfony
  • 135.
  • 137. Squid: squid-cache.org Jornadas Symfony http://decharlas.uji.es/symfony
  • 138. Cache / proxyCache / Varnish Jornadas Symfony http://decharlas.uji.es/symfony
  • 139. 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 Jornadas Symfony http://decharlas.uji.es/symfony
  • 140. Cache / proxyCache / Varnish Cuando una url es gestionada por la cache de varnish, se llamará a los métodos hit, miss y fetch Jornadas Symfony http://decharlas.uji.es/symfony
  • 141. 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 Jornadas Symfony http://decharlas.uji.es/symfony
  • 142. 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 Jornadas Symfony http://decharlas.uji.es/symfony
  • 143. Cache / proxyCache / ESI ESI (EdgeSideIncludes) 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. Jornadas Symfony http://decharlas.uji.es/symfony
  • 144. Cache / proxyCache / ESI <esi:include src = " /esi/categorias.php" alt = " <?php echo url_for(…) ?>" onerror="continue" /> Jornadas Symfony http://decharlas.uji.es/symfony
  • 145. Cache / proxyCache / ESI <esi:includesrc = " /esi/categorias.php" alt = " <?php echo url_for(…) ?>" onerror="continue" /> Las urls pueden ser relativas o absolutas Jornadas Symfony http://decharlas.uji.es/symfony
  • 146. Dividir en capas Jornadas Symfony http://decharlas.uji.es/symfony
  • 147. Dividir en capas 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. Jornadas Symfony http://decharlas.uji.es/symfony
  • 148.
  • 149. Cache
  • 150. Acceso a fuentes de datos
  • 152. Procesamiento de media o tareas de cálculoJornadas Symfony http://decharlas.uji.es/symfony
  • 153.
  • 154. Equipos de trabajo concentrados exclusivamente en esa área
  • 155. Nuestra tecnología de base de datos no implementa interfaz PDOJornadas Symfony http://decharlas.uji.es/symfony
  • 156. Gestión IT Jornadas Symfony http://decharlas.uji.es/symfony
  • 157.
  • 158.
  • 160.
  • 161. Configuraciones bajo control de versionesJornadas Symfony http://decharlas.uji.es/symfony
  • 162. Agenda 0. Presentación Arquitectura web: escalabilidad y rendimiento Cloud computing Preguntas Jornadas Symfony http://decharlas.uji.es/symfony
  • 163.
  • 164. Nos despreocupamos de los costes y gestión de la capa de hardware y de red
  • 165. El despliegue es inmediato
  • 167. La escalabilidad horizontal no es un problemaJornadas Symfony http://decharlas.uji.es/symfony
  • 168.
  • 169. Hay que desarrollar siendo conscientes de los requisitos y recursos de dicho entorno
  • 170.
  • 171. Nos permite migrar aplicaciones sin hacer grandes cambios
  • 172. Tenemos límites similares o menores a los que tendríamos en una infraestructura físicaJornadas Symfony http://decharlas.uji.es/symfony
  • 173.
  • 176.
  • 180. …Jornadas Symfony http://decharlas.uji.es/symfony
  • 181. AMAZON EC2, S3, SQS Jornadas Symfony http://decharlas.uji.es/symfony
  • 182. Jornadas Symfony http://decharlas.uji.es/symfony
  • 183.
  • 184. Permite configurar AMIsy compartirlas con la comunidad
  • 185. Distintos tipos de instancias: desde 1.7GB de Ram hasta 64.8GB de Ram
  • 186. Pago por tiempo de CPU, transferencia de datos e I/O
  • 187. Disponemos de volúmenes EBS, ip fijas, snapshots, balanceo y monitorización (CloudWatch)Jornadas Symfony http://decharlas.uji.es/symfony
  • 188.
  • 189. Para recuperar grandes cantidades de objetos, disponemos de AWS Import/Export
  • 190. Se paga por almacenamiento, número de peticiones y transferencia.
  • 191. El almacenamiento es flexible e infinito, pero cada objeto tiene un límite de 5GB
  • 192. Accesible mediante REST con url basada en subdominios o directorio:http:// [bucket_id] .dominio.com/objeto http://s3.amazonaws3.com/ [bucket_id] /objeto Jornadas Symfony http://decharlas.uji.es/symfony
  • 193.
  • 194. Ideal para trabajos de alta carga que se puedan hacer de forma asíncrona
  • 195. Se paga por transferencia y número de mensajes.
  • 196. El almacenamiento es flexible e infinito.Jornadas Symfony http://decharlas.uji.es/symfony
  • 197.
  • 198. Muy bien documentada y soporta todos los servicios de Amazon
  • 199. Es muy sencilla de utilizarJornadas Symfony http://decharlas.uji.es/symfony
  • 200. Amazon / Cloudfusion / S3 Subimos un archivo a S3 Jornadas Symfony http://decharlas.uji.es/symfony
  • 201. Amazon / Cloudfusion / S3 Creamos un bucket Subimos un archivo a S3 Subimos el archivo al bucket Jornadas Symfony http://decharlas.uji.es/symfony
  • 202. Amazon / Cloudfusion / EC2 Jornadas Symfony http://decharlas.uji.es/symfony
  • 203. Amazon / Cloudfusion / EC2 Arranco una instancia virtual en EC2 Le asocio una dirección ip pública. Jornadas Symfony http://decharlas.uji.es/symfony
  • 204.
  • 205. Podemos en todo momento aumentar nuestra capacidad de almacenamiento y proceso, de forma inmediata y flexibleJornadas Symfony http://decharlas.uji.es/symfony
  • 206. Resumen Jornadas Symfony http://decharlas.uji.es/symfony
  • 207.
  • 208. Además de por escalar, necesitamos preocuparnos por el rendimiento para reducir nuestros costes
  • 209. Hoy en día existen más opciones que Apache + Mysqlen entornos Linux
  • 210. El cloudcomputing es una opción asequible para disponer de arquitecturas pensadas para escalar desde el principio.Jornadas Symfony http://decharlas.uji.es/symfony
  • 211. Agenda 0. Presentación Arquitectura web: escalabilidad y rendimiento Cloud computing Preguntas Jornadas Symfony http://decharlas.uji.es/symfony
  • 212. GRACIAS Asier Marqués asiermarques@blackslot.com 5 y 6 de julio 2010 Universitat Jaume I, Castellón Jornadas Symfony http://decharlas.uji.es/symfony