Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHP.TO.START 2013 - PHP per progetti business c...

PHP.TO.START 2013 - PHP per progetti business critical

In questo talk verranno presentate le caratteristiche di un progetto business critical e come soddisfarle utilizzando un'infrastruttura PHP. Le necessità durante la fase di sviluppo, il time to market e la qualità del codice. Un ambiente di produzione che garantisce un deploy più veloce e con garanzia di consistenza e facili roll back. Alta affidabilità in produzione, garanzia di uptime sia a livello infrastrutturale che applicativo. Performance e scalabilità, con strumenti di monitoraggio e misurazione. Evidenzieremo come queste necessità possano essere pienamente soddisfatte da PHP, attraverso l'uso di Framework, opportune metodologie di sviluppo e adeguati ambienti e soluzioni sistemistiche. Presenteremo infine due casi reali di progetti business critical sviluppati in PHP e mantenuti in infrastrutture ad alta affidabilità. Il primo sviluppato in Symfony (UCI Cinemas), il secondo sviluppato in Zend Framework (Morellato).

PHP.TO.START

March 29, 2013
Tweet

More Decks by PHP.TO.START

Other Decks in Business

Transcript

  1. 1 neen // PHP.to.start 2013 Neen s.r.l. - Via Mecenate

    76/20A 20138 Milano - T: (+39) 02 45485420 - F (+39) 02 45485432 - E: [email protected] - Web: www.neen.it PHP per progetti business critical Relatore: Marco Zani
  2. ›❯  Co-founder di neen – cloud hosting company ›❯  Mail:

    [email protected] Chi sono 2 neen // PHP.to.start 2013 facebook.com/neen.datacenter @neendatacenter youtube.com/neendatacenter linkedin.com/company/1732369
  3. ›❯  Requirements delle applicazioni Business Critical ›❯  Con che strumenti

    e best practise garantire questi requirements ›❯  Diversi approcci al problema ›❯  Le più comuni problematiche incontrate ›❯  Gli strumenti minimi per raggiungere lo scopo ›❯  Uno strumento unico per tutto ›❯  Riepilogo ›❯  Casi reali di infrastrutture in HA ›❯  Cosa ci riserva il futuro Agenda 3 neen // PHP.to.start 2013
  4. Applicazioni business critical 4 neen // PHP.to.start 2013 “ Refers

    to any factor of a system (equipment, process, procedure, software, etc.) whose failure will result in the failure of business operations “
  5. SW Come raggiungere il risultato 6 neen // PHP.to.start 2013

    ›❯  Infrastruttura HA ›❯  Monitoraggio e supporto 24x7 ›❯  Strumenti per identificare i problemi ›❯  Scalabilità ›❯  Infrastruttura sicura ›❯  Aggiornamenti e fix di sicurezza ›❯  Infrastruttura performante ›❯  Tip & tricks ›❯  Utilizzo di architetture standard ›❯  Software sicuro ›❯  Codice performante ›❯  Standardizzazione dei processi ›❯  Applicativo HA ›❯  Scalabilità ›❯  Aggiornamenti e fix di sicurezza ›❯  Strumenti per identificare i problemi ›❯  Monitoraggio e supporto 24x7 ›❯  Tip & tricks
  6. ›❯  Uso di Framework (Symfony, Zend Framework, Codeigniter, ecc.) o

    comunque scegliere un design pattern e un corretto stile di codifica ›❯  Un buon IDE (Netbeans, Eclipse (Aptnana), Zend Studio, NuSphere PhpED, phpDesigner, PhpStorm) ›❯  Uso di software di versioning (Subversion, Git, Mercurial) ›❯  Strumenti per il debug (spesso integrati con l’IDE) e il PHP Profiling (Xdebug, XHProf, Zend Server) ›❯  Uso dei namespace, uso delle eccezioni, una corretta gestione delle dipendenze (PEAR, Composer) ›❯  Scegliere una libreria di connessione al database (PDO) ›❯  Attenersi a uno standard di sicurezza (OWASP) ›❯  Scrivere dei test automatizzati (Unit testing, Integration testing, Functional testing) ›❯  Utilizzare un tool di continuos integration (Xinc, Hudson CI) ›❯  Definire un metodo di deploy (Rsync, Phyng, Zend Server, Apache Ant, Capistrano, Chef, Puppet) o un provider SaaS (phpCloud, Win Azure, AWS) ›❯  Progettare l’applicazione per essere scalabile e per l’uso di sistemi di caching, CDN ecc. Best practise di sviluppo 7 neen // PHP.to.start 2013
  7. ›❯  Firewall ›❯  Separazione del Network – rete esterna, DMZ,

    rete interna ›❯  IDS / IPS / HIDS ›❯  Load Balancer – hardware, software, applicativi (Nginx, Varnish) ›❯  Tuning Apache e MySql ›❯  Separazione dei servizi ›❯  Utilizzo di differenti web server (Nginx, Varnish) ›❯  Utilizzo di sistemi di caching OpCode (APC, Xcache, Zend Optimizer +) ›❯  Utilizzo di sistemi di caching degli oggetti (Memcached, Zend Data Cache) ›❯  Caching sul database (MySql cache, Memcached) ›❯  Reverse proxy su contenuti statici (Varnish, Nginx) o altri sistemi di cache (Zend Page Cache) ›❯  Utilizzo di risorse CDN ›❯  Erogazione separata dei “large files” (lighty, Nginx, Zend Download) ›❯  Gestione del session clustering (scale up, scale down) ›❯  Valutare necessità di scaling sul database (replication, funtional separation, sharding, archiving) Best practise Sviluppo / Network / Sistemi 8 neen // PHP.to.start 2013
  8. Wait & See ›❯  Più veloce, più economico ›❯  Qualità

    del servizio compromessa ›❯  Diminuisce il time to market ›❯  Tempi di reazione molto alti in caso di necessità di cambiamento ›❯  A volte lo si sceglie per mancanza di skill e conoscenza specifica Diversi approcci 9 neen // PHP.to.start 2013 Fix All Now ›❯  Più lento e più costoso ›❯  Aumenta il time to market ›❯  Si rischia di perdere tempo inutilmente ›❯  Qualità del servizio più alta ›❯  Più preparati ai cambiamenti e ad affrontare problemi imprevisti
  9. Un approccio sensato si basa sulla conoscenza dei reali problemi

    contestualizzati nel progetto ›❯  Un approccio intermedio tra i due estremi precedenti ›❯  Implementa subito quel che sei già sicuro di dover usare ›❯  Implementa subito quel che è molto probabile tu debba usare ›❯  Evita di prendere “strade senza uscita” che non siano scalabili ›❯  Evita scorciatoie ›❯  Evita di implementare soluzioni fini a se stesse giusto perché ti piacciono (soprattutto se non sei sicuro di saperle gestire) Approccio sensato 10 neen // PHP.to.start 2013 • Analisi • Load test Prevenire • Allarmi • Analisi log Monitorare • Strumenti • Processi Intervenire
  10. Livelli di servizio 12 neen // PHP.to.start 2013 ? SLA

    99,9% Identificazione immediata del problema applicativo SLA 99,9%
  11. ›❯  Strumenti di Benchmark (Siege, Jmeter) ›❯  Strumenti per il

    DEBUG e il PHP Profiling (Xdebug, XHProf, Zend Server, New Relic) Gli indispensabili – sviluppo / testing 16 neen // PHP.to.start 2013 kcachegrind Webgrind XHProf.io
  12. ›❯  Strumenti per analisi del load ›❯  Strumenti per il

    deploy automatico Gli indispensabili – preproduzione 17 neen // PHP.to.start 2013
  13. ›❯  Strumenti per il deploy automatico ›❯  Strumenti per il

    monitoraggio ›❯  Strumenti per l’analisi e il profiling in produzione ›❯  Strumenti per il caching ›❯  Strumenti per una corretta gestione dell’HA Gli indispensabili – produzione 18 neen // PHP.to.start 2013
  14. ›❯  Keep it simple – be smart ›❯  Understand what

    you do – look at the problem, understand it and solve it ›❯  Use the right toolset Riassumendo 20 neen // PHP.to.start 2013
  15. ZEND CLOUD 21 neen // PHP.to.start 2013 In un unico

    strumento ›❯  Una piattaforma stabile e senza caos tecnologico (supporto 24x7, stack PHP testato, più versioni di PHP supportate) ›❯  Una piattaforma in grado di identificare (e anticipare!) a tempo record le problematiche applicative (Zend Monitoring, Zend Code Tracing) ›❯  Una piattaforma scalabile e flessibile, in grado di assorbire crescita e picchi di traffico (ZSCM) ›❯  Performance: una piattaforma veloce sia per gli utenti che per i motori di ricerca (Opcoding–Cache Management –Monitoring – code Tracing–Job Queue –Session Clustering etc.)
  16. Scaling MySql 23 neen // PHP.to.start 2013 ›❯  Ottimizzazione delle

    query ›❯  Tuning specifico di MySql in base al suo utilizzo ›❯  MySql partitioning ›❯  Separazione funzionale ›❯  Replica in lettura – master / slave ›❯  Replica in scrittura – master / master ›❯  Replica asincrona ›❯  Sharding ›❯  Archiving ›❯  Caching
  17. ›❯ Privacy e sicurezza dei dati ›❯ Grossi carichi di lavoro concentrati

    nel fine settimana ›❯ Picchi di accesso in corrispondenza di iniziative ›❯ Scritto in Symfony 1 ›❯ Zend Server Backstage 40 cinema multisala 450.000 tesserati 100.000 visite al mese 5-6 iniziative mese con DEM Applicativo / Loyalty Casse (40 cinema) 1.000.000 transazioni / mese DB Spain DB Loyalty CRM neen // PHP.to.start 2013 Case study / SKIN ucicard
  18. Morellato 26 neen // PHP.to.start 2013 ›❯  1.000.000 contatti /

    mese – con alti picchi di traffico ›❯  Sito bluespirit + siti brand (sector, Just Cavalli, Philip Watch, Miss Sixty) ›❯  Magento ›❯  Zend Framework
  19. ›❯  121 Richieste: 60 % erogate dalla CDN ›❯  2,9

    MB: 85 % serviti dalla CDN ›❯  5 Secondi di caricamento: 80 % dovuto al rendering (Necessario profiling) 28 neen // PHP.to.start 2013 Morellato
  20. ›❯  La fine del Cloud ›❯  Sempre maggior uso di

    sistemi di deploy automatico ›❯  Minor separazione tra sviluppo e sistemi ›❯  Crescita del ruolo dei DevOps ›❯  Ancora più importanza al profiling PHP e agli strumenti di analisi Cosa ci riserva il futuro neen // PHP.to.start 2013 29
  21. neen // PHP.to.start 2013 Neen s.r.l. - Via Mecenate 76/20A

    20138 Milano - T: (+39) 02 45485420 - F (+39) 02 45485432 E: [email protected] - Web: www.neen.it