WodGuru w ogniu 🔥☠️🔥

wodguru fire

10 Marca – dzień, który wniósł w moje życie sporo siwych włosów, co najmniej dwa nowe wrzody na żołądku i dużo ważnych lekcji na przyszłość.

Po każdym upadku, wstajemy silniejsi.

WodGuru od samego początku było postawione na serwerach firmy OVH. Nie mogliśmy narzekać, kilka lat temu mieli jedną 3-godzinną przerwę opisaną tutaj, poza tym – było stabilnie. Plan przeniesienia systemu na AWSa czy innego Ażura (większe firmy dostarczające hosting) był zawsze z tyłu głowy. No ale działało. OVH to duża i znana firma, serwer był mocny… więc to nigdy nie był największy priorytet.

Każdy upadek nas czegoś uczy. Im mocniej uderzymy, tym więcej lekcji wyciągamy z upadku. Wyżej opisana 3-godzinna przerwa z listopada 2017 spowodowała, że oprócz robienia backupów bazy danych i trzymania ich na serwerach backupowych OVH, zaczęliśmy wysyłać backupy na serwery AWS, żeby w przypadku awarii OVH zawsze mieć do nich dostęp.

Backupy były robione co 2 godziny. W przypadku gdy bomba spada na serwery OVH, możemy w krótkim czasie, odpalić drugi serwer z maksymalnie 2 godzinną stratą danych.

Wszystko działało super latami, nasza czujność została uśpiona. Obudziliśmy się 10 Marca.

Co dokładnie wydarzyło się 10 Marca?

We wtorek, 10 Marca około godziny 1 w nocy jedna z 32 serwerowni OVH – znajdująca się w Strasbourgu, stanęła w płomieniach. Odciętych od internetu zostało 3.6 miliona stron www, a WodGuru było jedną z nich.

W budynku były 4 serwerownie, jedna z nich (SBG2) została zniszczona przez pożar. Danych z niej nie uda się najprawdopodobniej odzyskać. SBG1 została częściowo dotknięta przez pożar. SBG3 i 4 zostały nienaruszone.

Bez względu na to, na którym serwerze były przechowywane dane, wszystko zostało odcięte od prądu i będzie wracać online dopiero po 19.03.2021.

W internecie jest mnóstwo artykułów o pożarze, podrzucę tutaj kilka linków:

10 Marca z perspektywy WodGuru.

Około 8 rano zostałem obudzony telefonem. Jak się okazało, miałem już sporo nieodebranych połączeń w tym dniu. Powiedziano mi, że WodGuru się nie ładuje. Pewnie jakaś błahostka. Pewnie mają problemy z internetem albo wkradł się inny prosty ludzki błąd – pomyślałem. Idąc do komputera, myślałem głównie o tym co zjem na śniadanie. Nie zdawałem sobie sprawy, że najbliższe śniadanie (i to na szybko) zjem dopiero kolejnego dnia.

Faktycznie, WodGuru się nie ładowało. Nawet u mnie. Nawet na moim telefonie. A nawet na telefonie Żony! Zacząłem szukać czy system pluje jakimiś błędami, lecz nie mogłem się do nich dostać. Nie mogłem się dostać do serwera. W przeciągu kilku minut, po sznurku udało się dotrzeć do informacji o pożarze.

Well, fuck 🤦‍♂️

Chwilę później okazało się, że nasz serwer znajduje się w SBG2 – jedyna z 4 serwerowni, która cała spłonęła. Tak więc – oficjalnie przeszliśmy do „chmury” (sucharek 👍)

Mniejsza z tym, czy nasze dane spłonęły czy nie, na ten moment nie mamy do nich dostępu i prędko go nie odzyskamy. To wiemy na pewno i tylko to się liczy. Trzeba jak najszybciej odpalić system z tym co mamy. Rozpoczęliśmy prace nad nowym serwerem, padło na AWS. Teoretycznie mamy wszystko co potrzeba, żeby to postawić WodGuru na nogi w dość szybkim czasie.

W międzyczasie, została utworzona strona ze statusem naszych prac: https://wod.guru/pl/status. Starałem się odpowiadać na wszystkie z setek wiadomości i telefonów. Niedziałający produkt to jedno. Brak wiedzy dlaczego nie działa i brak kontaktu z supportem to druga, cholernie istotna sprawa. Robiłem co mogłem, żeby każdy był na bieżąco informowany o statusie prac.

Mimo dość nieciekawej sytuacji i spóźnionej reakcji szło całkiem dobrze. Do czasu…

Tutaj posypało się bardzo dużo przekleństw. Brzuch rozbolał. Ostatni backup bazy jaki mamy na zewnętrznym serwerze jest z dnia 02.03.2021 10:00 🧐. Okazało się, że miejsce na serwerze backupowym wyczerpało się po wygenerowaniu backupu z dnia 2.03.2021 10:00. Ostatni „health check”, czy backupy się dobrze zgrywają na serwer backupowy miał miejsce z początkiem miesiąca (1.03.2021), wtedy wszystko było ok..

Widok z panelu serwera backupowego w OVH

No jasny chuj.

Brak danych z okresu 2.03 – 9.03 mocno skomplikował sprawę. Najpierw przywróciliśmy dostęp dla właścicieli i pracowników klubów, aby w miarę możliwości przywrócili utracone dane. Udostępniliśmy wszystkie logi, które mieliśmy z tego okresu w innych narzędziach (np. wysyłane maile). Daliśmy możliwość ręcznego włączenia aplikacji dla klubowiczów, w dogodnym dla siebie momencie.

Oprócz 7 dni danych, straciliśmy też assety – loga klubów, zdjęcia profilowe klubowiczów itp. Straciliśmy też blog i wszystkie na nim wpisy, które aktualnie powoli odbudowujemy.

Czy uda się odzyskać te dane? Raczej nie, ale dowiemy się na 💯 w nadchodzących tygodniach. Póki co, działamy po staremu. Mądrzejsi, z kilkoma dodatkowymi zmarszczkami.

Jakie lekcje zostały wyciągnięte

Na końcu, nie liczy się sam upadek, tylko to czego nas nauczył. A nauczył nas bardzo dużo.

Aktualna infrastruktura jest dość podobna do tej sprzed pożaru, tyle że na AWSie i na lepszej i szybszej maszynie. Plan na najbliższe tygodnie jest ambitny i zakłada porozrzucane różnych elementów na różne serwery minimalizując ryzyko. WodGuru będzie dużo stabilniejsze a postawienie systemu w przypadku awarii od zera, będzie kwestią minut.

Co zawiodło:

  • Brak aktualnej informacji o problemie z generowaniem backupów.
  • Powolna reakcja na awarię.
  • Brak świadomości, że WodGuru z czasów pierwszej awarii z 2017 roku, to zupełnie inne WodGuru niż teraz. Wtedy współpracowaliśmy z 40 klubami, teraz jest ich ponad 160. Baza danych szybko rośnie, a z nią odpowiedzialność za Wasze dane. Każda awaria ma ma dużo większy impakt i ciągnie za sobą dużo większe konsekwencje.

Rozwiązania:

  • Jesteśmy w trakcie tworzenia systemu automatycznych powiadomień o statusie serwera i różnych narzędzi podpiętych do systemu. Oprócz tego czy generują się backupy, będziemy monitorować błędy, działanie płatności online, wysyłki smsów i maili. Musimy być pierwszymi którzy dowiadują się o problemach i szybko na nie reagować, bez względu na porę dnia. Jeszcze nie wykombinowałem, jak ewentualna awaria mnie wyrwie z łóżka. Prawdopodobnie, skończy się na zamontowaniu alarmu i podpięciu go do WodGuru 🤷‍♂️
  • Data is king. Nasz biznes to nic innego jak uporządkowane wyświetlanie danych, które Wy i Wasi klubowicze generujecie. Dane są najważniejszą częścią systemu, Wy je nam powierzacie a my musimy o nie odpowiednio dbać. Bezpieczeństwo i stabilność waszych danych musi stale się polepszać. Nie możemy w tej kwestii osiadać na laurach. W momencie jak wyczerpiemy wszystkie nasze pomysły na poprawienie się w tej kwestii, będziemy szukać rad u ekspertów w tej dziedzinie.

O wszystkich działaniach będziemy Was na bieżąco informować.

Zakończenie

Kończąc, chciałem bardzo mocno podziękować Wam za wsparcie. Mnóstwo osób trzymało kciuki. Sporo osób specjalnie nie wydzwaniała, żeby dać nam więcej czasu na pracę.

Bardzo często słyszałem od Was, że nie mamy na takie rzeczy wpływu, że to nie nasza wina. Z tym akurat totalnie nie mogę się zgodzić. Pożaru może nie wznieśliśmy my, ale to jak jesteśmy na niego przygotowani zależy tylko od nas. Byliśmy przygotowani na maksymalnie 3 z plusem.

Tomek

1 Comment

  1. Gruby

    Szatek dzięki za ten post. Nie jestem Twoim klientem ale jako technik wiem czego mogłeś doświadczyć. Lekcje które opisałeś wykorzystam w pracy z klientami (jeżeli nie masz nic przeciwko) bo to dotyka dokładnie clue mojej roboty. Nawet już wykorzystałem gdy gadaliśmy z EU o wdrożeniu na francuskiej chmurze.
    Szczęścia życzę i stabilności (serwerów)!