SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Destaque

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.comJohan Roesdy
 
Konec cargo kultu
Konec cargo kultuKonec cargo kultu
Konec cargo kultuTaste Medio
 
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
 
Analytika ve světě PPC
Analytika ve světě PPCAnalytika ve světě PPC
Analytika ve světě PPCTaste Medio
 
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 AnalyticsTaste Medio
 

Destaque (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
 

Semelhante a Výkonnost webových aplikací

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í clouduJan Kodera
 
Spring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariSpring framework - J2EE S Lidskou Tvari
Spring framework - J2EE S Lidskou TvariRoman Pichlík
 
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ěMarketingArrowECS_CZ
 
Jak jsme si vybrali Apache Derby
Jak jsme si vybrali Apache DerbyJak jsme si vybrali Apache Derby
Jak jsme si vybrali Apache DerbyLukáš Petrlík
 
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ámJaroslav Vrána
 
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 JEEMartin Ptáček
 
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 2MarketingArrowECS_CZ
 

Semelhante a 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
 

Mais de Taste Medio

Zodpovědně na automatizovaný účet
Zodpovědně na automatizovaný účetZodpovědně na automatizovaný účet
Zodpovědně na automatizovaný účetTaste Medio
 
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 4Taste Medio
 
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?Taste Medio
 
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ůTaste Medio
 
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...?Taste Medio
 
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 krokemTaste Medio
 
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é kondiceTaste Medio
 
Impresní remarketing RTB a FB
Impresní remarketing RTB a FBImpresní remarketing RTB a FB
Impresní remarketing RTB a FBTaste Medio
 
Symboly značky prakticky
Symboly značky praktickySymboly značky prakticky
Symboly značky praktickyTaste Medio
 
Marketingový framework PAVRD
Marketingový framework PAVRDMarketingový framework PAVRD
Marketingový framework PAVRDTaste Medio
 
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íTaste Medio
 
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ě?Taste Medio
 
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...Taste Medio
 
Bageta plná hejtu
Bageta plná hejtuBageta plná hejtu
Bageta plná hejtuTaste Medio
 
Collabim: behind the scene (part #001)
Collabim: behind the scene (part #001)Collabim: behind the scene (part #001)
Collabim: behind the scene (part #001)Taste Medio
 
"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íčovkamiTaste Medio
 
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?Taste Medio
 
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í atribuciTaste Medio
 
Kde jsou limity zákaznické 360°?
 Kde jsou limity zákaznické 360°? Kde jsou limity zákaznické 360°?
Kde jsou limity zákaznické 360°?Taste Medio
 
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?Taste Medio
 

Mais 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