Výkonnost webových aplikací

Taste Medio
Taste MedioTaste Medio
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
1 of 12

More Related Content

Viewers also liked(7)

PoužitelnostPoužitelnost
Použitelnost
Taste Medio981 views
Konec cargo kultuKonec cargo kultu
Konec cargo kultu
Taste Medio1.5K views
Návrhové vzory v programováníNávrhové vzory v programování
Návrhové vzory v programování
Taste Medio2.6K views
Analytika ve světě PPCAnalytika ve světě PPC
Analytika ve světě PPC
Taste Medio1.1K views
RFM analýzaRFM analýza
RFM analýza
Taste Medio4.1K views

Similar to Výkonnost webových aplikací

TNPW2-2013-03TNPW2-2013-03
TNPW2-2013-03Lukáš Vacek
766 views51 slides
TNPW2-2013-05TNPW2-2013-05
TNPW2-2013-05Lukáš Vacek
451 views37 slides
TNPW2-2012-05TNPW2-2012-05
TNPW2-2012-05Lukáš Vacek
461 views37 slides
CSAS_v06CSAS_v06
CSAS_v06Ladislav Lála
193 views22 slides

Similar to Výkonnost webových aplikací(20)

Spring framework - J2EE S Lidskou TvariSpring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou Tvari
Roman Pichlík2.2K views
TNPW2-2013-03TNPW2-2013-03
TNPW2-2013-03
Lukáš Vacek766 views
TNPW2-2013-05TNPW2-2013-05
TNPW2-2013-05
Lukáš Vacek451 views
TNPW2-2012-05TNPW2-2012-05
TNPW2-2012-05
Lukáš Vacek461 views
CSAS_v06CSAS_v06
CSAS_v06
Ladislav Lála193 views
TNPW2-2012-03TNPW2-2012-03
TNPW2-2012-03
Lukáš Vacek733 views
2009 JEE Overview2009 JEE Overview
2009 JEE Overview
Martin Ptáček367 views
TNPW2-2013-02TNPW2-2013-02
TNPW2-2013-02
Lukáš Vacek488 views
TNPW2-2014-02TNPW2-2014-02
TNPW2-2014-02
Lukáš Vacek741 views
TNPW2-2016-02TNPW2-2016-02
TNPW2-2016-02
Lukáš Vacek334 views
Jak jsme si vybrali Apache DerbyJak jsme si vybrali Apache Derby
Jak jsme si vybrali Apache Derby
Lukáš Petrlík44 views
TNPW2-2014-03TNPW2-2014-03
TNPW2-2014-03
Lukáš Vacek1.5K views
TNPW2-2014-05TNPW2-2014-05
TNPW2-2014-05
Lukáš Vacek906 views
TNPW2-2013-07TNPW2-2013-07
TNPW2-2013-07
Lukáš Vacek461 views
Co přináší Oracle Database 12c Release 2Co přináší Oracle Database 12c Release 2
Co přináší Oracle Database 12c Release 2
MarketingArrowECS_CZ480 views
TNPW2-2013-04TNPW2-2013-04
TNPW2-2013-04
Lukáš Vacek415 views

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