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 [email protected]

Mne to na notebooku funguje

Embed Size (px)

Citation preview

Page 1: Mne to na notebooku funguje

“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]

Page 2: Mne to na notebooku funguje

Vývojár programuje aplikáciu…

Fedora 30000 voVirtualBoxPHP 12NodeJS-git-HEADMongoDB-nightly-buildoptimizator80000

Page 3: Mne to na notebooku funguje

Chce to vidieť zákazník…

Fedora 30000 voVirtualBox….

Žiadne zálohyPrístup na testovacejadresePočet užívateľov: 5

Page 4: Mne to na notebooku funguje

Hurá ostrá prevádzka!

Internet

Page 5: Mne to na notebooku funguje

Hurá “profi” ostrá prevádzka

Internet

Page 6: Mne to na notebooku funguje

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!

Page 7: Mne to na notebooku funguje

Nefunguje to!

backport hosting upgradne

Kto sa bude starať o bezp. upgrady?

- OpenShift – supportovaný vs.

nesupportovaný cartridge

Page 8: Mne to na notebooku funguje

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

Page 9: Mne to na notebooku funguje

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)

…..

Page 10: Mne to na notebooku funguje

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

Page 11: Mne to na notebooku funguje

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

Page 12: Mne to na notebooku funguje

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”

Page 13: Mne to na notebooku funguje

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

Page 14: Mne to na notebooku funguje

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…)

Page 15: Mne to na notebooku funguje

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í)

Page 16: Mne to na notebooku funguje

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)?

Page 17: Mne to na notebooku funguje

“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]