1. “Mne to na notebooku funguje”
Ako spraviť z webovej aplikácie, ktorá funguje vývojárovi na
počítači škálovateľnú web aplikáciu
Juraj Bednár juraj.bednar@digmia.com
6. Nefunguje to!
• Máte “starú” verziu (napr. RHEL 6 namiesto
Fedora 30000)
• PHP máte nižšej verzie a zabudli ste to
skompilovať s týmto patchom a týmito
špeciálnymi voľbami
– Potrebujeme mať v php.ini všetko povolené
• Nemáme nainštalovaný optimizator80000!
7. Nefunguje to!
backport hosting upgradne
Kto sa bude starať o bezp. upgrady?
- OpenShift – supportovaný vs.
nesupportovaný cartridge
8. Stále to nefunguje
• (v tomto momente zákazník prichádza
väčšinou k nám)
• Dôvod: ľubovoľná kombinácia z:
– nestíha to
– padá to
– hackli nás
– admin nás má pokrk a nedvíha telefón / nemá na
nás čas
9. Navrhneme architektúru…
Datacentrum 1 Datacentrum 2
provider independent IP
Internet Internet
BGP failover
Cache/Load balancer
App server …..
DB server
Statika (img, css, js, video)
Cache (memcached)
…..
Cache/Load balancer
App server …..
DB server
Statika (img, css, js, video)
Cache (memcached)
…..
10. Nefunguje statika
• Aplikácia píše statické súbory na disk do
lokálneho filesystému
– Synchronizácia
– CDN
• Aplikácia sa odvoláva na statiku pod rovnakou
subdoménou (treba spraviť static.domena.sk)
– Vieme rýchlo servovať (nginx, varnish)
– Cache je nastavená správne
11. HTTP Cache nepomáha
• Nízky hitrate, lebo…
– No-cache hlavičky
• “nikto nemá nič cachovať, aby sa všetky zmeny prejavili
hneď”
• dobré na vývoj, nepoužiteľné v produkcii
• Parametre cachovania treba nastaviť v
aplikácii a na serveri servujúcom statiku
– “nastavte si to vy” – my nevieme, ktorý obsah sa
ako často mení, to vie aplikácia
12. Kedy to spadne?
• Väčšina zákazníkov nevie, lebo nikto nerobil
load-testy
– Apache JMeter je skvelý nástroj, používajte ho
– Škálovanie vtedy, keď je to potrebné, nie “keď to
nestíha”
13. Rýchlo to vráťte naspäť!
• Nové verzie sa majú testovať na testovacom prostredí
– Vrátane load testov
• Testovacie prostredie nie je:
– Notebook vývojára
– Fedora 30000 vo virtualboxe vo firme, kde sa to
programuje
• Testovacie prostredie by malo byť aspoň z hľadiska
softvéru 100% zhodné s produkčným
• Zmeny sa robia pomocou VCS (git, svn, mercurial, …),
nikdy needitovať súbor mimo VCS!
– Pekne to má vyriešené OpenShift
14. Aplikačný server
• Apache je dobrý na vývoj, takmer nikdy
nepoužívame v produkcii (ak sa nedá takmer
úplne zacachovať)
• Nikdy nie mod_php
• Aplikácia nikdy nezapisuje lokálne na disk!
(pomocné súbory, statika, …)
– Problémy so session handlingom
– Problémy s NFS lockmi
• Nikdy sa nespolieha na to, že na jednej IP je DB,
cache, … server
– (ak sa na tom vyslovene nedohodneme…)
15. Databázový server
• Nikdy nie je jeden
– Master<->slave
– Master<->master
– + coldspare replika na zálohy
• Pozor na vzájomné blokovanie queries
• Pozor na zapisovanie
– Invalidovanie cache (napr. Logy do DB)
• Chýbajú indexy
• Aplikácia zle volí DB server
– Read-only replika na lokálnom app serveri (za istých
okolností)
16. Všeobecné rady
• Softvér, ktorý nemá stabilnú verziu s
bezpečnostnou podporou (balíčkovací systém)
neexistuje
– …a neexistujúci softvér nemôžeme v aplikácii
používať, lebo neexistuje
• Má softvér long term podporu alebo nás
vendor prinúti upgradovať na novšiu verziu (s
nekompatibilným API)?
17. “Mne to na notebooku funguje”
Ako spraviť z webovej aplikácie, ktorá funguje vývojárovi na
počítači škálovateľnú web aplikáciu
Juraj Bednár juraj.bednar@digmia.com