Přednáška se zabývá různými nástrahami a chybami, kterými prochází webový projekt od sdíleného hostingu, přes VPS, až po fyzický server s tím, jak roste jeho popularita.
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
Tomáš Corej: Od sdíleného hostingu po server
1. Od hostingu k serveru
@tomas_corej
@websupport_cz
tomas.corej@websupport.sk
2. Kto som / Kto sme
●
Systémový administrátor @ websupport.sk @ websupport.cz
–
5,5 roka
–
Prevádzka a support
–
Programátor webu je pre nás často prostredníkom medzi klientom a nami
Prevažne LAMP stack – Linux Apache MySQL PHP
●
●
websupport.sk / websupport.cz
–
Najvačší hosting na Slovensku
–
Rast 1008 %
●
●
Unlimited hosting
Custom hosting
5. Rýchlosť a spoľahlivosť
●
Výber správneho produktu je klúčom
–
–
Nesnažte sa napchať slona do chladničky
–
●
Nechoďte s kanonom na vrabce
Odhadnút to však nie je jednoduché
Počet premenných
–
–
●
Prostredie s vyššou komplexnosťou trpí zložitejšími interakciami
Empiricky sa ukázalo, že rýchlosť a spoľahlivosť rastie s dedikáciou
zdrojov vyhradených pre web
Škálovateľnosť aplikácie
–
“na localhoste mi to funguje”
6. Zdieľaný hosting
●
Zdieľaný hosting
–
Podmienky sa denno – denne menia
–
Provider je schopný ovplyvniť to, čo sa spúšťa na serveri, iba v obmedzenej miere
Stovky/tisícky klientov na jednom serveri
–
Nízka cena
–
Predmetom optimalizácií
–
Zdrojov je skôr menej ako viac
●
●
Nerozhodujte sa podľa meračov dostupnosti
–
●
dôležité sú detaily infraštruktúry providera
Webová aplikácia by mala byť
–
Najjednoduchšia, ako sa dá
–
Spotrebovavať, čo najmenej zdrojov
●
Napr. cachovanie
7. Hosting – webserver
●
Počet súborov
–
Cachovanie do adresára => milióny súborov
●
PHP cache
●
PHP parametre
–
( memory_limit | post_max_size ) > 256M => niečo je zlé s
aplikáciou
●
Includovanie remotných súborov
●
Zrušenie safe_mode/open_basedir
●
Nezávislosť na umiestnení v adresárovej štruktúre
8. Hosting – neustále pod útokom
●
Používajte najaktuálnejšiu verziu CMS
–
Automatizované vyhľadávanie chybných CMS botnetom
Rozosielanie SPAMu
● Označovanie webu ako malware
Útok môže prísť aj cez FTP
●
●
–
●
Zavírené klientské počítače
Fórum SPAM
–
Jednoduché galérie so stovkami tisíc správ
9. Hosting – databáza (MySQL)
●
Storage engine
–
●
Databáza lokálne a vzdialene robí rozdiel
–
●
nano vs mili
query cache môže byť vypnutá alebo nastavená na DEMAND
–
●
MyISAM, InnoDB, Archive...
SELECT SQL_CACHE ...
SPAM
–
Nechránené formuláre
●
Temporary tabuľky
●
Indexy
●
Správne dátové typy
●
CMS majú možnosť zapnúť cachovanie DB
–
APC, memcache, filesystem...
10. Hosting – emaily
●
Emaily môžu lagovať
●
Hromadné rozosielanie emailov
–
Roztiahnuť, čo do najdlhsieho časového intervalu
Intenzívne rozosielanie je považované za agresívne
Používať odladene implementácie mailerov
●
●
PHPmailer
Vyhnút sa SPAM prvkom
●
●
–
Zle zostavený email/hlavička
–
Chybné HTML emaily
–
VEĽKÉ PÍSMENÁ V PREDMETE SPRÁVY
11. Hosting
●
Webová aplikácia by mala čo najmenej zaberať zdrojov
–
●
Tak neskôr dôjde k interakcii
Používať cachovanie, kde sa dá
Ideálne do RAM
● Pozor na veľa malých súborov
V prípade CMS
●
●
–
mať aktuálnu verziu
●
Webové vstupy zaistiť cez CAPTCHA
●
Používať najnovšiu verziu db
–
Ak je to možné, zvoliť vhodný storage engine tabuľky
13. VPS
●
Prechodom na virtualny server / cloud
–
Znížili sme komplexnosť na serveri
–
Iba naše aplikácie
Máme pod kontrolou operačný systém
●
●
Skrytá komplexnosť
–
Virtualizačná infraštruktúra môže byť veľmi komplikovaná
–
Nemáme na ňu dosah
15. LAMP
●
Apache + mod_php
–
●
Defaultná konfigurácia môže spotrebovať veľa zdrojov
Existuje veľa alternatív
–
Nedajú sa dobre aplikovať na zdieľaný hosting
–
Významne zrýchlia a zrobustnia web
●
Občas si to však vyžaduje úpravu kódu => DevOps
16. Aplikacie
●
Apache (mod-php) vs Nginx
●
php-fpm
●
Varnish
●
Memcache
●
PHP cache
–
APC, xcache, eaccelerator
●
MySQL alternatívy
●
Konfiguračný manažment
–
CFEngine3, Puppet, Chef
17. Nginx
●
Veľmi optimálny webserver
–
Nízka konštantá spotreba RAM
–
Nízky overhead (10 000 spojeni = 2.5MB RAM)
Vyborný na servovanie statiky - multimédia, HTML
Podpora jazykov cez Fast CGI,uwsgi
●
●
●
Reverzná proxy / load balancer
–
●
Vhodný, ako obrana pred niektorými útokmi
Nemá podporu pre mod_rewrite pravidlá
–
Treba ich prepísať do inej syntaxe
18. php-fpm
●
FPM (FastCGI process manager)
–
Manager – fcgi procesov, ktorí spracúvajú PHP
–
Vhodný doplnok k nginx
●
Vhodný na stránky s vačším trafficom
19. Varnish
●
Reverzná cachovacia proxy
–
–
Sila spočíva v cachovaní statického obsahu do RAM
–
●
Ide pred web server
Veľmi rýchle a konštantné odozvy
Dramatický pokles loadu
–
●
Aj pri najnáročnejších weboch
Efekt cachovania zavisí od aplikácie
–
Cookieless domain
–
ESI (pre prihlásených používateľov)
–
Yahoo - Best practices for speeding up your site
20. memcache
●
key=value db do RAM
–
Samozrejmosťou pri veľkých weboch
●
Písaná s ohľadom na O(1)
●
Vhodná na cachovanie výstupov z DB
–
Value max. do 1MB
●
Ale aj templátov a iných dočasných dát
●
Podpora v bežných CMS a frameworkoch
–
apt-get install php5-memcache memcached
21. PHP cache
●
APC, Xcache, eaccelerator...
●
Odpadáva nutnosť parsovať PHP kód
–
Znižuje CPU záťaž
–
Mierne zvyšuje spotrebu pamäte
zdieľanej
Majú taktiež vlastnú key=value db
●
●
–
Integrácia s CMS
22. MySQL alternativy
●
Fork projektu MySQL
●
MySQL vs MariaDB vs Percona Server
–
–
MariaDB = komunita
–
Percona Server = vlastná verzia komunitnej verzie MySQL
–
●
MySQL = Oracle
Drop-in replacement
Cirkulácia patchov medzi projektami
23. Konfiguračný manažment
●
Infrastructure as a code
–
Predpis opisujúci konfiguráciu servera, serverov a aplikácii
–
Udržiavanie tejto konfigurácie
Automatizácia
–
Change management
●
Správa cez git
Nástroje
●
●
–
Puppet (ruby)
–
Chef (ruby)
–
CFEngine3 ( C )
–
A mnoho iných...
25. K.I.S.S.
●
Prechodom na fyzický server
–
Zbavili sme sa ďalšej (virtualizačnej) vrstvy
–
Jediná možnosť interakcie s vonkajškom je sieť
● Menej komponentov ktoré sa môžu pokaziť
Už máme na starosti veci, ktoré sme skôr nemali:
●
●
●
●
Správu OS
Zálohovanie
Monitoring (RAID)
26. Risk manažment
●
“Čo ak mi zlyhá server?”
–
Môže sa to stať aj pri iných službách
–
Zlyhávajú:
Disky
– RAID je povinnosť
● Zdroje
– Je vždy dobré mať 2
● CPU, motherboard
– Ale to sa ešte nestalo (klop – klop)
Ak sme už nevieme ubrať, alebo dôsledky rizika priveľké
●
●
–
Treba začať škálovať
–
Replikácia
27. Záver
●
Výber správneho produktu je veľmi dôležitý
●
Ak musíte byť na hostingu
–
●
Aplikácia môže zmeniť chovanie s nárastom používateľov
–
●
Skúste znížiť svoj footprint na minimum
Nedôverujte svojmu kódu na localhoste
Na virtuálnom serveri
–
–
●
Môžte znížíť svoje náklady výberom vhodných technológií
Zvýšiť robustnosť
Fyzický server
–
Najjednoduchšie zvýšenie rýchlosti a stability
–
Následne uvažovať o serverovej farme