Wysoka dostępność
Kamil Porembiński
Kamil Porembiński
12.10.2019

Czym jest wysoka dostępność serwera lub strony?

Każdy kto prowadzi biznes internetowy, powinien być z tym tematem zaznajomiony. A na pewno przypomina sobie go w momencie, kiedy jego strona czy sklep po prostu nie działa. Wtedy biznes, kolokwialnie mówiąc, leży i nie zarabia. A przecież awarie się zdarzają. Czy da się tego jakoś uniknąć oraz ile może to kosztować?

Prowadząc analogowy biznes, musisz przeciwdziałać wielu niespodziewanym problemom. Zajmując się fotografią ślubną, masz po kilka lustrzanek i kamer. Prowadząc firmę transportową, dbasz o zapasowe auto, części zamienne lub szybki serwis u mechanika. Pewne ryzyka bierzesz na siebie, a innym jesteś w stanie przeciwdziałać. W cyfrowym świecie jest dokładnie tak samo, o czym niestety się zapomina lub tego nie wie.

Co gorsza, marketingowe slogany typu „chmura działa zawsze, wgraj to na serwer to nie zniknie”, nie pomagają wcale w zrozumieniu tematu dostępności.

Czas zatem zmierzyć się z tematem dostępności usług internetowych, bo jak zapewne się już domyślasz, one także potrafią nie działać.

Podcast

If you would rather listen to us than read the article, below you will find our podcast. This is the audio version of this article. You can listen to it through the system’s „Podcasts” application on iOS, your choice of Android, iTunes, YouTube, SoundCloud i Spreaker.

Czym jest dostępność?

Dostępność (ang. availability), jest jedną z podstawowych miar, która określa stopień odporności danego systemu na awarie. Dostępność to czas, w którym dany system lub usługa działa w sposób bezawaryjny.

Jeżeli za jednostkę czasu przyjmiemy 1 dzień, a dostępność systemu wynosiła 75%, to oznacza, że świadczył on usługi przez 18 godzin, a w pozostałe 6 godzin nie. Kiedy jest mowa o dostępności systemów informatycznych, korzysta się również z przyjętej klasyfikacji dostępności (ang. availability class).

Niedostępność
DostępnośćKlasaTypRocznieMiesięcznieTygodniowoDziennie
90%1Unmanaged36d 12g 34m 55,2s3d 1g 2m 54,6s16g 48m 0,0s2g 24m 0,0s
99%2Managed3d 15g 39m 29,5s7g 18m 17,5s1g 40m 48,0s14m 24,0s
99,9%3Well Managed8g 45m 57,0s43m 49,7s10m 4,8s1m 26,4s
99,99%4Fault Tolerant52m 35,7s4m 23,0s1m 0,5s8,6s
99,999%5High-Availability5m 15,6s26,3s6,0s0,9s
99,9999%6Very-High-Availability31,6s2,6s0,6s0,1s
99,99999%7Ultra-Availability3,2s0,3s0,1s0,0s

Klasa dostępności mówi tak naprawdę, ile jest dziewiątek. Im jest ona większa, tym bardziej dostępny jest system. Popularne usługi sieciowe, hostingi oferują dostępności w przedziale 90% – 99,9%. Oczywiście skala dostępności jest otwarta, zatem nic nie stoi na przeszkodzie, aby oferować usługi z dostępnością np. 95%.

Czym jest Service Level Agreement?

SLA, czyli Service Level Agreement (pol. umowa o gwarantowanym poziomie świadczenia usług), jest umową, która mówi między innymi o tym na jakim poziomie dostępności są świadczone dane usługi. Umowa taka może zawierać również klauzule na temat kar umownych za nie spełnienie wymaganej dostępności. Przykładem mogą być usługi w chmurze AWS.

Usługa AWSSLAKiedy rekompensataWielkość rekompensaty
EC299,99%Mniejsze niż 99,99%, ale większe lub równe 99,0%10%
Mniejsze niż 99,0%, ale większe lub równe 95,0%30%
Mniejsze ni 95,0%100%
RDS99,95%Mniejsze niż 99,95%, ale większe lub równe 99,0%10%
Mniejsze niż 99,0%, ale większe lub równe 95,0%25%
Mniejsze ni 95,0%100%
S399,9%Mniejsze niż 99,9%, ale większe lub równe 99,0%10%
Mniejsze niż 99,0%, ale większe lub równe 95,0%25%
Mniejsze niż 95,0%100%

Patrząc na SLA w Amazon Web Services, należy pamiętać, że tyczy się ona usług jakie oni oferują, a nie maszyny wirtualnej. SLA dla usługi typu EC2 nie oznacza dostępności tego serwera, a usługi, która umożliwia jego stworzenie i zarządzanie. Oznacza to, że w przypadku awarii samej maszyny, masz nadal dostępną usługę, dzięki której uruchomisz zapasowy serwer.

Jaka dostępność jest odpowiednia dla mnie?

„Moja strona musi działać zawsze”, „Straciłem miliony przez te 20 minut awarii!” – ile to razy było słyszane lub czytane w sieci. Każdemu z nas zależy przecież na jak najwyższej dostępności usług. Pamiętaj, że systemy o dostępności 99,99% potrafią bardzo dużo kosztować. Jak zatem ocenić jaka dostępność będzie odpowiednia?

Na początku zacznij od analizy ryzyka, jakie wiąże się z niedostępnością danej usługi. Awarie lubią pojawiać się w najmniej oczekiwanym momencie np. podczas zwiększonej sprzedaży na Black Friday. To, że strona czy serwer działały idealnie przez ostatnie miesiące, nie musi oznaczać, że tak będzie jutro.

Każdy właściciel biznesu musi zadać sobie sam takie pytanie, przez jaki czas dana usługa może nie działać, aby nie było to groźne? Być może prowadząc sklep internetowy sprzedający jeden rozmiar gwoździ nie stracimy za wiele, kiedy będzie wyłączony przez kilka godzin. Co innego kiedy prowadzimy np. system monitorujący parametry życiowe danego pacjenta. Tutaj nie może być mowy o przestoju w działaniu.

Kiedy określisz maksymalną i akceptowalną dla Ciebie niedostępność, można wybrać odpowiednią usługę, która sprosta tym wymaganiom. Wysoka dostępność nie jest za darmo i może bardzo dużo kosztować, dlatego czasami warto przyjąć ryzyko na klatę.

Ile może mnie to kosztować?

Zdecydowanie więcej niż pojedynczy serwer lub hosting. Gwarantowana wysoka dostępność np. klasy 4 (miesięcznie około 4 minut niedostępności usługi), wymaga odpowiednio rozbudowanej infrastruktury, m. in:

  • większej liczby serwerów, urządzeń sieciowych – sprzęt lubi płatać figle, dlatego maszyny powinny być conajmniej zdublowane,
  • administratorów pracujących w trybie zmianowym – awarie nie biorą wolnego i potrafią wystąpić nawet w święta,
  • odpowiedniego oprogramowania – sama strona internetowa musi być przygotowana do tego, aby potrafiła działać na wielu serwerach jednocześnie.

Do tego dochodzą jeszcze zapasowe łącza internetowe, możliwość wymiany podzespołów serwera w czasie jego pracy, zapasowe zasilanie, monitoring, testowanie infrastruktury i tak dalej. Jest tego naprawdę dużo.

Nie będzie wielkim odkryciem stwierdzenie, że strona oparta o jeden serwer, działa tak długo, dopóki się on nie zepsuje.

A co może się popsuć? Na przykład: dysk twardy, zasilanie lub chłodzenie. Możemy kupić droższy serwer, który posiada redundantne zasilacze i wentylatory oraz dyski pracujące w macierzach. Zwiększamy w ten sposób dostępność danego serwera, ale nadal to jest jeden serwer, który może ulec innym awariom.

Policzmy SLA i koszty

Żeby zobrazować jak może zmieniać się cena usługi w zależności od dostępności serwerów, policzmy ją dla przykładowego sklepu internetowego opartego o jakiś popularny CMS.

Dla uproszczenia, pominięte zostaną takie rzeczy jak kwestia oprogramowania, czas reakcji administratorów, dostępność sieci oraz to w jaki sposób serwery, są ustawione w data center. Dodanie drugiego serwera do infrastruktury, nie zwiększy nam dostępności, jeżeli będzie on wpięty do tego samego źródła zasilania co pierwszy. Awaria zasilania, po prostu położy obie maszyny.

Sklep internetowy działa na dwóch serwerach: serwerze www oraz serwerze z bazą danych. SLA dla każdej z tych maszyn to 99.5% w skali miesiąca, co daje nam 3h 39m 8.7s niedostępności. No właśnie! A jakie jest SLA dla całości?

Architektura sklepu internetowego
Architektura sklepu internetowego

Mając dwa serwery ułożone szeregowo, awaria całości systemu następuje w momencie kiedy:

  • nie działa serwer WWW
  • nie działa serwer DB
  • nie działają oba serwery

Matematyka tutaj jest bezwzględna i SLA dla takiej infrastruktury to pomnożenie poszczególnych SLA każdego z serwerów.

SLA = 99,5% * 99,5% = 99%
SerwerKosztSLANiedostępność
WWW500 zł99.5%3g 39m 8.7s
DB500 zł99.5%3g 39m 8.7s
Całkowity kosztCałkowite SLACałkowita niedostępność
1000 zł99%7g 18m 17.5s

Ponad 7 godzin niedostępności usługi to praktycznie jeden dzień roboczy. Na taki przestój, wiele sklepów internetowych nie może sobie pozwolić. Przydałaby się zatem jakaś redundancja.

Aby zwiększyć dostępność całego sklepu, dodaliśmy dodatkowy serwer WWW oraz Loadbalancer, który będzie kierował ruch na działające urządzenie. Loadbalancer może być zdecydowanie słabszą maszyną, co za tym idzie tańszą.

Architektura sklepu internetowego
Infrastruktura z dodatkowymi serwerami i rozdzieleniem ruchu.

Policzmy teraz SLA dla takiej infrastruktury. Mamy już tutaj połączone równolegle serwery WWW. Wzór na wyliczenie SLA dla takiej infrastruktury, będzie wyglądał następująco:

SLA = 0,999 * (1 - (1 - 0,995)2) * 0,995 = 99,4%
SerwerKosztSLANiedostępność
Loadbalancer200 zł99.9%43m 49,7s
WWW500 zł99.5%3g 39m 8.7s
WWW500 zł99.5%3g 39m 8.7s
DB500 zł99.5%3g 39m 8.7s
Całkowity kosztCałkowite SLACałkowita niedostępność
1700 zł99,4%4g 22m 58.5s

Ponad 4 godziny niedostępności to nadal dużo, ale zecydowanie lepiej niż w poprzednim przykładzie. Patrząc na architekturę, nadal mamy kilka elementów, których uszkodzenie powoduje duży problem. Mamy jedną bazę danych oraz loadbalancer, którego wyłączenie spowoduje brak dostępu do pozostałych serwerów.

Wprowadźmy zatem redundancję na każdym poziomie i zobaczmy SLA oraz cenę za infrastrukturę.

Architektura sklepu internetowego
Sklep internetowy oparty o redundantne serwery w każdej warstwie.
SLA = (1 - (1 - 0,999)2) * (1 - (1 - 0,995)2) * (1 - (1 - 0,995)2) = 99,99%
SerwerKosztSLANiedostępność
Loadbalancer200 zł99.9%43m 49,7s
Loadbalancer200 zł99.9%43m 49,7s
WWW500 zł99.5%3g 39m 8.7s
WWW500 zł99.5%3g 39m 8.7s
DB500 zł99.5%3g 39m 8.7s
DB500 zł99.5%3g 39m 8.7s
Całkowity kosztCałkowite SLACałkowita niedostępność
2400 zł99,99%4m 23,0s

W ten sposób udało się uzyskać zadowalająco wysokie SLA. Niestety cena też jest wysoka, prawie dwa i pół razy większa. A pamiętaj, że jest to tylko symulacja, która pomija wiele elementów jak obsługę administracyjną, czy dostępność samej sieci.

Podsumowanie

Decydując się na rozwiązanie o konkretnej dostępności, powinieneś zastanowić się jaki realny wpływ na Twój biznes ma każda godzina przestoju. Prowadząc małego bloga, możemy wybrać zwykły hosting, a budując dużą aplikację webową dla tysięcy klientów, wybrać redundantne rozwiązania.

Możemy też liczyć na szczęście, że jeden serwer będzie działał zawsze. Awarie są jak upadek na twardy chodnik – z dużej wysokości – bolą.