Upload
juraj-bednar
View
489
Download
1
Embed Size (px)
Citation preview
“Mne to na notebooku funguje”
Ako spraviť z webovej aplikácie, ktorá funguje vývojárovi napočítači škálovateľnú web aplikáciu
Juraj Bednár [email protected]
Vývojár programuje aplikáciu…
Fedora 30000 voVirtualBoxPHP 12NodeJS-git-HEADMongoDB-nightly-buildoptimizator80000
Chce to vidieť zákazník…
Fedora 30000 voVirtualBox….
Žiadne zálohyPrístup na testovacejadresePočet užívateľov: 5
Hurá ostrá prevádzka!
Internet
Hurá “profi” ostrá prevádzka
Internet
Nefunguje to!
• Máte “starú” verziu (napr. RHEL 6 namiestoFedora 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!
Nefunguje to!
backport hosting upgradne
Kto sa bude starať o bezp. upgrady?
- OpenShift – supportovaný vs.
nesupportovaný cartridge
Stále to nefunguje
• (v tomto momente zákazník prichádzaväčš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á nanás čas
Navrhneme architektúru…
Internet Internet
Datacentrum 1 Datacentrum 2
provider independent IPBGP 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)
…..
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 rovnakousubdoménou (treba spraviť static.domena.sk)
– Vieme rýchlo servovať (nginx, varnish)
– Cache je nastavená správne
HTTP Cache nepomáha
• Nízky hitrate, lebo…
– No-cache hlavičky
• “nikto nemá nič cachovať, aby sa všetky zmeny prejavilihneď”
• 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 saako často mení, to vie aplikácia
Kedy to spadne?
• Väčšina zákazníkov nevie, lebo nikto nerobilload-testy
– Apache JMeter je skvelý nástroj, používajte ho
– Škálovanie vtedy, keď je to potrebné, nie “keď to nestíha”
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ľadiskasoftvé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
Aplikačný server
• Apache je dobrý na vývoj, takmer nikdynepouží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…)
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ýchokolností)
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áciipoužívať, lebo neexistuje
• Má softvér long term podporu alebo násvendor prinúti upgradovať na novšiu verziu (s nekompatibilným API)?
“Mne to na notebooku funguje”
Ako spraviť z webovej aplikácie, ktorá funguje vývojárovi napočítači škálovateľnú web aplikáciu
Juraj Bednár [email protected]