V předchozím příspěvku Proč dělám databázové aplikace jsem naznačil, že základ většiny dobrých Web aplikací je architektura založená na kvalitním dB modelu, kdy data jsou umístěna na dB serveru na Webu, kde probíhá veškeré zpracování dat.
Co je rychlejšího, jak SQL kód prováděný s daty přímo na databázovém serveru, kdy data si v případě potřeby můžu uložit i do rychlé Cache paměti, či využít paralelního zpracování kódu?
Při vyšších nárocích na množství paralelních dB transakcí a počet současně připojených uživatelů si můžu, v rámci rozložení zátěže, ještě připojit aplikační server, který dokáže více zvýšit výkon a odezvu celého aplikačního řešení.
Co ale dělat, když nastanou jednoduché (nepředvídatelné) události, jako je výpadek internetového připojení nebo lokální sítě, či když třeba vypadne proud? To je potom vymalováno. Co mi pomůže, že data mám někde na Internetu v kvalitním dB modelu ;-)
Když nejde Mail server nebo Instant Messaging:
Základ je mít více emailových adres u různých poskytovatelů, data si nenechávat jen na serveru, ale kopie stahovat i lokálně po odfiltrování spamu, případně maily ukládat do vlastní databáze na jiném serveru, když mají strategickou hodnotu, třeba objednávky zákazníků posílané z e-shopu.
Podobně, výpadek Instant Messaging služeb lze řešit využíváním více různých typů online komunikace současně. Já jsem denně připojen přes Trillian na AIM, ICQ, IRC, MSN i Yahoo! Messenger, takže když vypadne jeden komunikační kanál, tak to není zase až takový problém v dnešní době.
Když nejde internetové připojení:
Tohle je trochu horší situace, ale každá normální firma, či náročnější uživatel, by měla mít možnost alternativního připojení do Internetu. Koho znám, tak má kromě svého hlavního připojení ještě minimálně připojení přes mobil (GPRS/EDGE).
Jelikož mám jednu velmi špatnou zkušenost z minulosti (ztráta významné US zákazky), tak mám dokonce 4 různé způsoby připojení od různých poskytovatelů (UPC kabel, ADSL, WiFi, EDGE) a donedávna jsem měl ještě CDMA na připojení při cestování.
Když nefunguje lokální síť:
Kdysi se mi stávalo, že po krátkodobém výpadku proudu mi vypadla domácí síť a hrál jsem si s tím třeba hodinu, než jsem všechny routery, switche a proxy servery restartoval ve správném pořadí. Nyní mám ale všechno zásadně připojené přes UPS, takže 2-3 hodiny vydrží všechno běžet.
Navíc, výpadek lokální sítě jde lehce řešit, třeba "ručním" přenosem dat mezi počítači přes USB Flash disk, vypálením CD/DVD nebo přenášet data mimo síť pomocí infra nebo bluetooth rozhraní. Tisknout z notebooku přímo na tiskárnu přes infra port snad taky není problém.
Co ale dělat, když nejde elektřina?
Jediný zásadní "problém" v dnešní době je, když nejde elektřina. To přestane fungovat úplně všechno a máme konečně klid na přemýšlení, oběd i diskuze s přáteli. Já mám doma sice všechno napojené na UPS, případně používám notebooky, takže chvíli všechno vydrží, ale co dělat při dlouhodobějším výpadku? Vůbec si nedovedu představit situaci, kdy třeba vypadne proud v celém městě, jak se kdysi stalo na východě USA. Nefungují ani obchody ani bankomaty, život se zastaví.
Pracuji většinou na notebooku, ale využívám také desktopy, které mi doma nyní hlídají tyto UPS, kdy původní asi dvojnásobný počet jsem zredukoval, neboť nové servery mají vlastní interní baterie:
Co dělat s daty na Web serveru, když dojde k výpadku?
Tohle nyní řeším s kolegou pro jednoho zákazníka v USA a opakujeme už několikrát použité řešení. Zákazník požaduje online replikaci dat z Web serveru na server v lokální síti a současnou replikaci na klientské počítače. Zaměstnanci zákazníka se totiž pohybují v terénu, kdy ne vždy je zaručeno jejich online připojení do Internetu, či do centrální databáze, ale všichni musí být schopni vystavovat objednávky, smlouvy pro externí odběratele, a na závěr vše synchronizovat s centrálním datovým skladem.
Klasika, tohle řešení si zákazník vymyslel před dokončením hotové aplikace, kdy někoho chytrého u zákazníka napadlo, že tohle by se mohlo hodit při výpadku elektřiny, výpadku Internetu, či při výpadku serverů. Každému je asi jasné, že na zálohování dat se sice v zadání myslelo, ale online replikace na jiný server a další klientské počítače je úplně něco jiného a rozsahem a náročností práce to bude zhruba odpovídat práci na původní aplikaci.
Musíme tedy rozšířit stávající řešení o zrcadlené databáze na jiném serveru, připravíme lokální instalace databáze na všechny klientské stanice a nastavíme online replikaci zleva - zprava - nahoru - dolů.
Jen se "těším", jak při předávání konečného řešení dostaneme další požadavek replikovat data z bezpečnostních důvodů třeba v datovém centru na Měsíci. Kdo ví, třeba při útoku mimozemšťanů nebudou dostupné žádné servery na Zemi, takže takový server někde ve vesmíru bude mít smysl ;-)
2 comments :
Pretože som jeden centrálny sortiment pre maloobchodné pobočky riešil a spravoval zaujalo ma v texte:
Klasika, tohle řešení si zákazník vymyslel před dokončením hotové aplikace, kdy někoho chytrého u zákazníka napadlo, že tohle by se mohlo hodit při výpadku elektřiny, výpadku Internetu, či při výpadku serverů.
Niekoho u zákazníka? Nemalo by byť prediskutovanie riešenie krízových situácii hlavne v réžii dodávateľa? Také to priateľské: My sme navrhli takýto systém a v prípade že nejde sieť, nejde prúd, je povodeň, tak nastanú takéto a takéto problémy s dostupnosťou. Riešenia sú rôzne robustné, tak aké si vyberiete? Predsa len, objednávateľ často nemá skúsenosti s krízovými situáciami po aplikovaní riešenia, ktoré si ešte len objednáva.
Osobne sa na toto pozerám z pohľadu zadávateľa a zaujímal by ma pohľad dodávateľa riešení.
Nepřesně jsem to jen v textu napsal, takže to doplním:
My jsme zákazníkovi doporučovali hned v návrhu řešení, že nemůže spoléhat na server u poskytovatele a že data by měla být replikována právě z důvodu bezpečnosti v jiném datovém centru a v jiné lokalitě (bylo navrhováno, že orig. data budou na East Coast a replikovaná na West Coast - třeba z důvodu zemětřesení, hurikánu, výpadku proudu).
Jejich "IT specialista" je ale přesvědčil, že v rámci úspory nákladů stačí jen pravidelná automatická záloha dat 2x denně a pro jejich potřeby to stačí.
No a ten samý člověk najednou přišel, že je potřeba doplnit ty replikace a ještě si vymyslel samostatný provoz na lokálních PC uživatelů, což nyní zákazník schválil a dodatečně se rozšířil contract.
Takže zákazník dal na doporučení svého interního specialisty a nejprve něco nechtěl a po čase změnil stanovisko - možná ale že třeba dostal schválené vyšší investice od akcionářů, kdo ví :-)
Není to problém, peníze za originální řešení již dorazily a záloha na další práci také. Psal jsem o tom jako o perličce, že někdy je potřeba měnit řešení za pochodu nebo těsně před dokončením.