Symfony e grandi numeri: si può fare!Presentation Transcript
Symfony e grandi numeriSi...può...fare!Daniel Londerodaniel.londero@sth.it
Chi sonoDaniel Londero➢ Sviluppatore PHP dal 2005 @➢ (s|S)ymfony framework➢ PUG Friuli➢ Runner
2M 500k5M 300k 10k 10M200k 50k 100k
Calciomercato.com: la storia➢ Nasce nel 1996➢ Nel 2006 arriva in STH➢ Nel 2010 si passa a symfony 1.4➢ 12 aprile 2010 revision 1➢ 10 giugno 2010: deploy (22 ore)
I numeri UTENTI UNICI PAGINE VISTE AL MESE AL MESEAGOSTO 2010 3,6M 36MGENNAIO 2011 3,3M 32MMARZO 2011 2,2M 28M
Perchè symfony?➢ Opensource➢ Community➢ Documentato➢ Test➢ Best practice (MVC / DRY / KISS / ...)
#GAC
APPLICATION LOAD BALANCERMEMCACHED MEMCACHED BE NGINX 1 NGINX N NGINX 1 NGINX N PHP FCGI PHP FCGI APC APC DATA LOAD BALANCER NFSMASTER SLAVE ... SLAVE DB DB1 DBN
LOAD BALANCERMEMCACHED MEMCACHED BE NGINX 1 NGINX N NGINX 1 NGINX N PHP FCGI PHP FCGI APC APC LOAD BALANCER NFSMASTER SLAVE ... SLAVE DB DB1 DBN
Scalare: orizzontale vs verticaleOrizzontale➢ Aggiungo macchine➢ Aumenta complessità➢ Costi e rischi più bassiVerticale➢ Aggiungo risorse➢ Bassa complessità➢ Costi e rischi elevati
Gestione delle sessioni➢ Balancer persistenti➢ NFS (sconsigliato)➢ Database➢ Memcached (Redis dalla 2.4)
LOAD BALANCERMEMCACHED MEMCACHED BE NGINX 1 NGINX N NGINX 1 NGINX N PHP FCGI PHP FCGI APC APC LOAD BALANCER NFSMASTER SLAVE ... SLAVE DB DB1 DBN
“There are only two hard things in ComputerScience: cache invalidation and naming things” - Phil Karlton
Cache pagina
Cache Partial e Component
ContatoriSfruttare la velocità di accesso alla memoria persollevare i database da operazioni inutili.➢ Impression sui banner➢ Letture articoli➢ Voti per i sondaggi
LOAD BALANCERMEMCACHED MEMCACHED BE NGINX 1 NGINX N NGINX 1 NGINX N PHP FCGI PHP FCGI APC APC LOAD BALANCER NFSMASTER SLAVE ... SLAVE DB DB1 DBN
LOAD BALANCERMEMCACHED MEMCACHED BE NGINX 1 NGINX N NGINX 1 NGINX N PHP FCGI PHP FCGI APC APC LOAD BALANCER NFSMASTER SLAVE ... SLAVE DB DB1 DBN
Strumenti utili➢ Web debug toolbar➢ Slow query log➢ Explain➢ Live on stage (and dev)
LOAD BALANCERMEMCACHED MEMCACHED BE NGINX 1 NGINX N NGINX 1 NGINX N PHP FCGI PHP FCGI APC APC LOAD BALANCER NFSMASTER SLAVE ... SLAVE DB DB1 DBN
LOAD BALANCERMEMCACHED MEMCACHED BE NGINX 1 NGINX N NGINX 1 NGINX N PHP FCGI PHP FCGI APC APC LOAD BALANCER NFSMASTER SLAVE ... SLAVE DB DB1 DBN
Credits e linkhttp://www.flickr.com/photos/theplanetdotcom/4879419788http://www.php.net/manual/en/book.memcache.phphttp://www.symfony-project.org/reference/1_4/en/05-Factorieshttp://www.symfony-project.org/gentle-introduction/1_4/en/12-Cachinghttp://www.symfony-project.org/jobeet/1_4/Doctrine/en/21http://www.symfony-project.org/plugins/sfDoctrineMasterSlavePluginhttp://dev.mysql.com/doc/refman/5.6/en/slow-query-log.htmlhttp://dev.mysql.com/doc/refman/5.6/en/explain.html