SlideShare une entreprise Scribd logo
1  sur  12
Výkonnost webových aplikací

   Jan Tichý
   @jantichy
Sledujte nás
• Prezentace:   slideshare.net/mediocz

• Twitter:      @jantichy
                @mediocz
                @medioteka

• Web:          www.medio.cz
                blog.medio.cz
                akademie.medio.cz
Oblasti pro zlepšování výkonu
•   Návrh aplikace
•   Komunikace s klientem
•   Webový server a aplikace
•   Databáze
•   Cachování
•   Rozkládání zátěže
Návrh aplikace
•   Funkčnost aplikace
•   Volba vhodných prostředků
•   Architektura aplikace
•   Výkon versus přehlednost
    – Použít OOP? Jak moc dekomponovat?
    – Použít framework? Použít ORM?
Webový server
• Hardware
• Konfigurace serveru
  – KeepAliveTimeout, MaxClients, MaxRequestsPerChild
  – mod_deflate, mod_gunzip
• Webserver, PHP
  –   Apache, NGINX
  –   APC/eAccelerator – opcode lokálně v paměti
  –   HiPHoP
  –   Zbytečné direktivy – magic quotes, register globals
Optimalizace aplikačního kódu
•   Kopírování dat vs. referencí
•   Kód se provádí v každém průchodu cyklem
•   Preferovat vestavěné funkce
•   Preferovat preg před ereg
•   Ukládání session do souborů je pomalé
•   Mikrooptimalizace - ternární operátor a další
Komunikace s klientem
• Cachování, HTTP hlavičky
  – Last-Modified, If-Modified-Since, Expires
  – Etag, If-None-Match
  – Cache-Control, Vary
• Klientské zpracování
  – Renderování v prohlížeči
  – Javascript
  – HTML a CSS, Sprites
• Client-side aplikace
Databáze
• Volba „databáze“ – MySQL, PostgreSQL, Redis,
  Mongo, CouchDB, ElasticSearch
• Uzavírat spojení co nejdříve
• Optimalizace dotazů - EXPLAIN, indexy
• Používat insert s více hodnotami
Cachování
• Na mnoha různých místech
  – databáze, agregované a předpočítané
    hodnoty, výsledky drahých operací a db
    dotazů, modelová
    data, šablony, fragmenty/bloky, celostránková cache
• Různé nástroje
  – filesystém, Memcache/Membase, APC, Redis…
  – Varnish, NGINX+Memcache
• Požadavky na architekturu aplikace
• Problém s invalidací
Rozkládání zátěže
• Výdejové front servery, statické
  servery, databázové servery, backend
  servery…
• DNS roundrobin
• Reverzní proxy – Varnish, Squid, Nginx
• Uživatelská session data, dynamické bloky, A/B
  testování, trackovací parametry
• Databáze: replikace, master-slave
• Statický obsah: CDN
Další zdroje
• PHP triky
  http://php.vrana.cz/

• Školení výkonnosti webových aplikací
  http://www.michalspacek.cz/

• Konzultace a analýzy k výkonnosti aplikací:
  http://www.medio.cz/
Díky za pozornost!

Jan Tichý
@jantichy

Contenu connexe

En vedette

Návrhové vzory v programování
Návrhové vzory v programováníNávrhové vzory v programování
Návrhové vzory v programování
Taste Medio
 

En vedette (7)

Squid 3 for windows blogbudaqdegil.blogspot.com
Squid 3 for windows blogbudaqdegil.blogspot.comSquid 3 for windows blogbudaqdegil.blogspot.com
Squid 3 for windows blogbudaqdegil.blogspot.com
 
Použitelnost
PoužitelnostPoužitelnost
Použitelnost
 
Konec cargo kultu
Konec cargo kultuKonec cargo kultu
Konec cargo kultu
 
Návrhové vzory v programování
Návrhové vzory v programováníNávrhové vzory v programování
Návrhové vzory v programování
 
Analytika ve světě PPC
Analytika ve světě PPCAnalytika ve světě PPC
Analytika ve světě PPC
 
Vybrané e-shopářské vychytávky z Google Analytics
Vybrané e-shopářské vychytávky z Google AnalyticsVybrané e-shopářské vychytávky z Google Analytics
Vybrané e-shopářské vychytávky z Google Analytics
 
RFM analýza
RFM analýzaRFM analýza
RFM analýza
 

Similaire à Výkonnost webových aplikací

Similaire à Výkonnost webových aplikací (20)

Výběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí clouduVýběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí cloudu
 
Spring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariSpring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou Tvari
 
TNPW2-2013-03
TNPW2-2013-03TNPW2-2013-03
TNPW2-2013-03
 
TNPW2-2013-05
TNPW2-2013-05TNPW2-2013-05
TNPW2-2013-05
 
TNPW2-2012-05
TNPW2-2012-05TNPW2-2012-05
TNPW2-2012-05
 
CSAS_v06
CSAS_v06CSAS_v06
CSAS_v06
 
TNPW2-2012-03
TNPW2-2012-03TNPW2-2012-03
TNPW2-2012-03
 
2009 JEE Overview
2009 JEE Overview2009 JEE Overview
2009 JEE Overview
 
TNPW2-2013-02
TNPW2-2013-02TNPW2-2013-02
TNPW2-2013-02
 
Revoluce v cloudu: první autonomně řízená databáze na světě
Revoluce v cloudu: první autonomně řízená databáze na světěRevoluce v cloudu: první autonomně řízená databáze na světě
Revoluce v cloudu: první autonomně řízená databáze na světě
 
TNPW2-2014-02
TNPW2-2014-02TNPW2-2014-02
TNPW2-2014-02
 
TNPW2-2016-02
TNPW2-2016-02TNPW2-2016-02
TNPW2-2016-02
 
Jak jsme si vybrali Apache Derby
Jak jsme si vybrali Apache DerbyJak jsme si vybrali Apache Derby
Jak jsme si vybrali Apache Derby
 
TNPW2-2014-03
TNPW2-2014-03TNPW2-2014-03
TNPW2-2014-03
 
Nové »bezhlavé« CMS — přechod od monolitů ke službám
Nové »bezhlavé« CMS — přechod od monolitů ke službámNové »bezhlavé« CMS — přechod od monolitů ke službám
Nové »bezhlavé« CMS — přechod od monolitů ke službám
 
TNPW2-2014-05
TNPW2-2014-05TNPW2-2014-05
TNPW2-2014-05
 
2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEE2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEE
 
TNPW2-2013-07
TNPW2-2013-07TNPW2-2013-07
TNPW2-2013-07
 
Co přináší Oracle Database 12c Release 2
Co přináší Oracle Database 12c Release 2Co přináší Oracle Database 12c Release 2
Co přináší Oracle Database 12c Release 2
 
TNPW2-2013-04
TNPW2-2013-04TNPW2-2013-04
TNPW2-2013-04
 

Plus de Taste Medio

Plus de Taste Medio (20)

Zodpovědně na automatizovaný účet
Zodpovědně na automatizovaný účetZodpovědně na automatizovaný účet
Zodpovědně na automatizovaný účet
 
Pépécéčkaři versus Google Analytics 4
Pépécéčkaři versus Google Analytics 4Pépécéčkaři versus Google Analytics 4
Pépécéčkaři versus Google Analytics 4
 
Jak (a proč) pracovat s klíčovkou?
Jak (a proč) pracovat s klíčovkou?Jak (a proč) pracovat s klíčovkou?
Jak (a proč) pracovat s klíčovkou?
 
Vyhodnocování tendrů aneb insighty z B2B průzkumů
Vyhodnocování tendrů aneb insighty z B2B průzkumůVyhodnocování tendrů aneb insighty z B2B průzkumů
Vyhodnocování tendrů aneb insighty z B2B průzkumů
 
Právní bitvy o PPCčka aneb věděli jste, že...?
Právní bitvy o PPCčka aneb věděli jste, že...?Právní bitvy o PPCčka aneb věděli jste, že...?
Právní bitvy o PPCčka aneb věděli jste, že...?
 
Retenční analýza - krok za krokem
 Retenční analýza - krok za krokem Retenční analýza - krok za krokem
Retenční analýza - krok za krokem
 
Dejte data z vašeho XML feedu do správné kondice
Dejte data z vašeho XML feedu do správné kondiceDejte data z vašeho XML feedu do správné kondice
Dejte data z vašeho XML feedu do správné kondice
 
Impresní remarketing RTB a FB
Impresní remarketing RTB a FBImpresní remarketing RTB a FB
Impresní remarketing RTB a FB
 
Symboly značky prakticky
Symboly značky praktickySymboly značky prakticky
Symboly značky prakticky
 
Marketingový framework PAVRD
Marketingový framework PAVRDMarketingový framework PAVRD
Marketingový framework PAVRD
 
Pozornost jako spouštěč i zabiják krizí
Pozornost jako spouštěč i zabiják krizíPozornost jako spouštěč i zabiják krizí
Pozornost jako spouštěč i zabiják krizí
 
DOBRO-INFLUENCE: Jak propojit síť influencerů ke smysluplné změně?
DOBRO-INFLUENCE: Jak propojit síť influencerů ke smysluplné změně?DOBRO-INFLUENCE: Jak propojit síť influencerů ke smysluplné změně?
DOBRO-INFLUENCE: Jak propojit síť influencerů ke smysluplné změně?
 
Od luxusu k ekologické odpovědnosti, aneb jak s pomocí PR a kampaně na sociál...
Od luxusu k ekologické odpovědnosti, aneb jak s pomocí PR a kampaně na sociál...Od luxusu k ekologické odpovědnosti, aneb jak s pomocí PR a kampaně na sociál...
Od luxusu k ekologické odpovědnosti, aneb jak s pomocí PR a kampaně na sociál...
 
Bageta plná hejtu
Bageta plná hejtuBageta plná hejtu
Bageta plná hejtu
 
Collabim: behind the scene (part #001)
Collabim: behind the scene (part #001)Collabim: behind the scene (part #001)
Collabim: behind the scene (part #001)
 
"Jak výhodně incestovat" aneb srandy s klíčovkami
"Jak výhodně incestovat" aneb srandy s klíčovkami"Jak výhodně incestovat" aneb srandy s klíčovkami
"Jak výhodně incestovat" aneb srandy s klíčovkami
 
Agentura/In-house/Freelance - kde dělat SEO?
Agentura/In-house/Freelance - kde dělat SEO?Agentura/In-house/Freelance - kde dělat SEO?
Agentura/In-house/Freelance - kde dělat SEO?
 
Příběh zákazníka po 3 letech od první návštěvy až k CLV a vlastní atribuci
Příběh zákazníka po 3 letech od první návštěvy až k CLV a vlastní atribuciPříběh zákazníka po 3 letech od první návštěvy až k CLV a vlastní atribuci
Příběh zákazníka po 3 letech od první návštěvy až k CLV a vlastní atribuci
 
Kde jsou limity zákaznické 360°?
 Kde jsou limity zákaznické 360°? Kde jsou limity zákaznické 360°?
Kde jsou limity zákaznické 360°?
 
Marketing a data. Umíme v nich najít hodnotu?
Marketing a data. Umíme v nich najít hodnotu?Marketing a data. Umíme v nich najít hodnotu?
Marketing a data. Umíme v nich najít hodnotu?
 

Výkonnost webových aplikací

  • 1. Výkonnost webových aplikací Jan Tichý @jantichy
  • 2. Sledujte nás • Prezentace: slideshare.net/mediocz • Twitter: @jantichy @mediocz @medioteka • Web: www.medio.cz blog.medio.cz akademie.medio.cz
  • 3. Oblasti pro zlepšování výkonu • Návrh aplikace • Komunikace s klientem • Webový server a aplikace • Databáze • Cachování • Rozkládání zátěže
  • 4. Návrh aplikace • Funkčnost aplikace • Volba vhodných prostředků • Architektura aplikace • Výkon versus přehlednost – Použít OOP? Jak moc dekomponovat? – Použít framework? Použít ORM?
  • 5. Webový server • Hardware • Konfigurace serveru – KeepAliveTimeout, MaxClients, MaxRequestsPerChild – mod_deflate, mod_gunzip • Webserver, PHP – Apache, NGINX – APC/eAccelerator – opcode lokálně v paměti – HiPHoP – Zbytečné direktivy – magic quotes, register globals
  • 6. Optimalizace aplikačního kódu • Kopírování dat vs. referencí • Kód se provádí v každém průchodu cyklem • Preferovat vestavěné funkce • Preferovat preg před ereg • Ukládání session do souborů je pomalé • Mikrooptimalizace - ternární operátor a další
  • 7. Komunikace s klientem • Cachování, HTTP hlavičky – Last-Modified, If-Modified-Since, Expires – Etag, If-None-Match – Cache-Control, Vary • Klientské zpracování – Renderování v prohlížeči – Javascript – HTML a CSS, Sprites • Client-side aplikace
  • 8. Databáze • Volba „databáze“ – MySQL, PostgreSQL, Redis, Mongo, CouchDB, ElasticSearch • Uzavírat spojení co nejdříve • Optimalizace dotazů - EXPLAIN, indexy • Používat insert s více hodnotami
  • 9. Cachování • Na mnoha různých místech – databáze, agregované a předpočítané hodnoty, výsledky drahých operací a db dotazů, modelová data, šablony, fragmenty/bloky, celostránková cache • Různé nástroje – filesystém, Memcache/Membase, APC, Redis… – Varnish, NGINX+Memcache • Požadavky na architekturu aplikace • Problém s invalidací
  • 10. Rozkládání zátěže • Výdejové front servery, statické servery, databázové servery, backend servery… • DNS roundrobin • Reverzní proxy – Varnish, Squid, Nginx • Uživatelská session data, dynamické bloky, A/B testování, trackovací parametry • Databáze: replikace, master-slave • Statický obsah: CDN
  • 11. Další zdroje • PHP triky http://php.vrana.cz/ • Školení výkonnosti webových aplikací http://www.michalspacek.cz/ • Konzultace a analýzy k výkonnosti aplikací: http://www.medio.cz/
  • 12. Díky za pozornost! Jan Tichý @jantichy