Ako zvládnuť rast webu
Juraj Hanták, Webglobe – Yegon, s.r.o.,
WordCamp Slovensko 18.4.2015
Predstavenie
•CTO Webglobe – Yegon•#1 cloud provider a #2 webhoster na Slovensku•Problematike prevádzky web aplikácií sa venujem
viac ako 15 rokov
WP anketa
Aké prostriedky používa váš WP?A. Zdieľaný webhostingB. Samostatný server / VPSC. Viac serverov / VPS
Ako sa pripraviť na veľký počet návštevníkov
Zvyšovanie výkonu
Vertikálne škálovanie
Jedno zariadenie musí stačiť
Horizontáne škálovanie
Prípadne pridáme zariadenia
Agenda
•Želané vlastnosti web aplikácií
•Typické scénare rastu aplikácie
•Best practices / Príklady z praxe
Želané vlastnosti web aplikácií
•Vysoká dostupnosť•Škálovateľnost•Výkon •Spravovateľnosť•Nízka cena•Veľa funkcií pre užívateľov•Generuje €€€€
Vysoká dostupnosť
Vysokú dostupnosť definujeme ako design a súbor opatrení, ktoré zabezpečia určitý stupeň nepretržitosti a funkčnosti prevádzky.
Inými slovami:• Aplikácia funguje• Užívatelia sú spokojní• Obchod neprichádza o peniaze z dôvodu výpadku
Škálovateľnosť
Definujeme ako schopnosť systému obsluhovať rastúce nároky / počty užívateľov.
Čo škálovateľnosť nie je:• Použitý OS Linux vs Windows vs Solaris• Softwérová technológia PHP vs JAVA vs .NET• Optimalizovaný kód 10 riadkov vs 1000 riadkov
Škálovateľnosť vs výkon
Škáľovateľnosť a výkon nie je to isté!
Výkon
Škálovateľnosť
Aplikácia nebude škálovať, keď tak nebude
navrhnutá.
Aj keď ju tak navrhnete, tak to nebude
bez problémov.
Škálovateľnosť problém
Životný cyklus aplikácie
1. Zdieľaný webhosting
2. VPS / server
3. Viacero VPS / serverov
4. Cloud horizontálne škálovanie cez API
Zdieľaný webhosting
Internet
Webhostingovýserver
WEB1 WEB2 WEB3
WEB4 WEB5
VPS / server
Internet
WEB, DB
Viacero VPS / serverov
Internet
WEB DB
Pridáme load balancer/cache
Internet
WEB DBLoad balancercache
Reverzné proxy
Internet
WEBProxy
Reverzné proxy - Nginx
Pridáme CPU/RAM do DB
Internet
WEB
DB
Load balancercache
Pridáme redundanciu
Internet
WEB2
DB1
Load balancer
WEB1
WEB3
DB2
Pridáme vysokú dostupnosť
Internet
WEB2
DB1Load balancer 1
WEB1
WEB3
DB2Load balancer2
Škálovanie DB
oddelené read, write operácie
Cloud anketa
Čoho prevádzku nám umožňuje cloud?A. „nekonečne“ veľký jeden serverB. „nekonečne“ veľa malých serverov
Cloud
Samostatné proaktívne škálovanie
Best practices / Príklady z praxe
•Pluginy
•Dotazník
•admin-ajax.php
•SQL
•Komunikácia
Pluginy www.expres.sk
•53 pluginov
• 41 vlastných
•21 špecifické pre stránku
•20 všeobecné
•12 priamo z wordpress.org
Dotazník
•Zákazník nasadil nový modul dotazníka
•Dotazník bol zapisovaný niekoľkokrát za
sekundu
•Nezvládal takú záťaž
WordPress Heartbeat
SQL dotazy
•Minimalizovať počet queries na generovanie stránky
•Neukladať binárne dáta do sql serveru
•Nepoužívanie indexov
• Zlé WHERE dotazy (výmena poradia podmienok)
• Zložené dotazy (JOIN)
Komunikácia
DDoS zo Švédska
Čo to spôsobuje
Open source kamaráti
• Haproxy - Load balancing, proxy
• Nginx – reverzné proxy, kešovanie obsahu
• Memcache – kešovanie v pamäti /napr. sessions/
• Varnish cache – kešovanie obsahu
• Redis – key-value cache a úložisko
• OWASP - ModSecurity – web application fwl
Zhrnutie
Komunikácia s prevádzkovateľom
Myslite horizontálne – koľko, nie aké výkonné
Kešovanie – kešujte, čo sa dá
Optimalizujte