18. Razpoložljivost, redundanca in skaliranje storitev¶
18.1 Zakaj "deluje" ni enako kot "zanesljivo deluje"¶
V laboratoriju je dovolj, da servis deluje nekaj minut. V praksi pa moraš razmišljati širše: - kaj se zgodi ob izpadu diska, - kaj se zgodi ob ponovnem zagonu, - kaj se zgodi ob izgubi povezljivosti, - kaj se zgodi ob povečanem številu uporabnikov, - kaj se zgodi ob napaki administratorja.
18.2 Redundanca¶
Redundanca pomeni podvajanje kritičnih komponent, da izpad ene ne pomeni takojšnjega izpada storitve.
Primeri: - dva DNS strežnika, - več domenskih krmilnikov, - več reverse proxy vozlišč, - več diskov, - več internetnih povezav, - replika podatkovne baze.
Redundanca zmanjšuje izpad zaradi odpovedi komponente, ne rešuje pa slabe konfiguracije ali izbrisa podatkov.
18.3 Skaliranje navpično in vodoravno¶
- Navpično skaliranje pomeni močnejši strežnik.
- Vodoravno skaliranje pomeni več strežnikov ali več instanc.
Ni vsaka storitev enako primerna za vodoravno skaliranje. Statične spletne vsebine so razmeroma enostavne, stanje sej ali podatkovne transakcije pa zahtevajo več načrtovanja.
18.4 Load balancing¶
Load balancer razdeli promet med več backend strežnikov. Cilja sta: - večja zmogljivost, - večja odpornost.
Toda load balancing ni čarovnija. Če je aplikacija odvisna od lokalnega stanja ali slabo zasnovana, jo samo razdeliš na več problematičnih delov.
18.5 Ena točka odpovedi¶
Pri vsaki storitvi se vprašaj: - kaj je single point of failure, - ali je to sprejemljivo, - ali ga lahko zmanjšamo, - ali je vložek smiseln glede na pomembnost storitve.
18.6 Dobre prakse¶
- redundanco uvajaj tam, kjer prinaša največ koristi,
- ne kompliciraj majhnega laboratorija brez potrebe,
- kritične podatke obravnavaj ločeno od samega procesa,
- testiraj preklop in obnovo, ne le osnovnega scenarija.