4 lekcje, których wyciągnęliśmy z naszej ostatniej aktualizacji infrastruktury

Opublikowany: 2022-05-04

Modernizacja infrastruktury. Typowe zadanie, zwłaszcza dla firmy SaaS takiej jak nasza, prawda?

Cóż, nasza najnowsza aktualizacja nie była typową aktualizacją oprogramowania, ponieważ dodaliśmy do niej trochę skrętu.

Głównym celem było zaktualizowanie naszego oprogramowania do najnowszej wersji, ale tym razem do projektu włączyliśmy dwa dodatkowe kroki - zmniejszenie liczby adresów IP, które nasi klienci muszą dopuścić do listy dozwolonych i osiągnięcie redundancji bazy danych.

Chociaż większość aktualizacji przebiegła bezproblemowo, po drodze wystąpiły również pewne przerwy w działaniu usług.

W kolejnych wierszach podzielimy się zakulisowymi informacjami o tym, dlaczego dokonaliśmy aktualizacji, jak poszło i jakie są nasze największe wnioski.

Przejdźmy od razu!


Dlaczego dokonaliśmy aktualizacji na pierwszym miejscu i co to zawiera?

Rozumiemy naszą odpowiedzialność i rolę, jaką NitroPack odgrywa w sukcesie firm naszych klientów. Dlatego zapewnienie optymalnej wydajności, najwyższych standardów bezpieczeństwa i stabilności usług 24/7 jest kluczowe.

Regularne aktualizowanie naszej infrastruktury to jeden z wielu sposobów, aby to wszystko zapewnić. Jak wspomniano wcześniej, ta konkretna aktualizacja składała się z trzech części:


1. Zaktualizuj nasze oprogramowanie do najnowszej stabilnej wersji

Ponieważ jest to rozwiązanie oparte na chmurze, wszystkie optymalizacje, które NitroPack wykonuje dla naszych ponad 100 000 witryn klienckich, są wykonywane w naszej infrastrukturze. Obecnie do uruchomienia usługi używamy ponad 100 serwerów. Wraz z tą aktualizacją musieliśmy zaktualizować oprogramowanie, które zarządza naszą flotą serwerów do najnowszej stabilnej wersji.


2. Zmniejsz liczbę adresów IP, które nasi klienci muszą umieścić na liście dozwolonych

Mówiąc prościej, nasz proces tworzenia listy dozwolonych adresów IP nie był przyjazny dla użytkownika.

Przed aktualizacją nasi klienci musieli zezwolić na listę ponad 40 adresów IP, które obsługiwały ruch wychodzący (żądania) NitroPacka do witryn klientów. Co więcej, te adresy IP nie zostały naprawione, co oznacza, że ​​gdy jeden z naszych serwerów przechodzi w stan spoczynku, nowy otrzymuje inny adres IP.

Ten proces generowania nowych adresów IP wymagał od naszych klientów regularnego zezwalania na tworzenie list dziesiątek nowych adresów, aby NitroPack mógł skutecznie zoptymalizować swoje witryny.

Po aktualizacji nasi klienci muszą umieścić na liście dozwolonych tylko trzy stałe, nigdy nie zmieniające się adresy IP.


3. Osiągnij nadmiarowość bazy danych

Przez długi czas chcieliśmy osiągnąć redundancję bazy danych, ponieważ poprawiłoby to ogólną wydajność strony internetowej i pulpitu nawigacyjnego NitroPack, a także moglibyśmy zwiększyć bezpieczeństwo usług. Co więcej, ta aktualizacja umożliwi nam wykonywanie przyszłych aktualizacji baz danych bez przestojów.

Mając na uwadze te cele, podzieliliśmy proces na dwa etapy, zostawiając nam dzień między nimi, więc mieliśmy sporo wytchnienia:

Krok 1: (4 listopada): Zmniejszenie liczby adresów IP
Krok 2: (6 listopada): Nadmiarowość bazy danych i aktualizacja oprogramowania serwera

Ale nie wszystko poszło zgodnie z naszymi oczekiwaniami.


Co nie poszło zgodnie z planem

Pomimo naszych starannych przygotowań, we wszystkich trzech aktualizacjach napotkaliśmy kilka nieoczekiwanych problemów. Oto, co się stało:

Problem nr 1: Problemy z łącznością podczas procesu aktualizacji IP

4 listopada zaplanowaliśmy przeprowadzenie wstępnej aktualizacji usługi, mającej na celu zmniejszenie liczby adresów IP dla ruchu wychodzącego z NitroPacka.

pierwsza wersja zawierała wewnętrzny błąd oprogramowania, który w niektórych przypadkach uniemożliwiał naszej usłudze tworzenie połączeń wychodzących. Niestety problem ten pojawił się dopiero wtedy, gdy w naszej infrastrukturze występowały sytuacje szczytowego ruchu. Dlatego podczas wstępnych testów nie wykryliśmy problemu w naszym środowisku pomostowym. Problem z łącznością doprowadził do tego, że NitroPack nie przeprowadzał niezawodnie optymalizacji wychodzących, a niektórzy z naszych klientów doświadczyli niestabilności usług przez kilka godzin.

Dobrą wiadomością jest to, że naszemu zespołowi programistów udało się szybko złagodzić problem, aktualizując oprogramowanie naszego klienta HTTP.


Problem nr 2: Tworzenie kopii zapasowej bazy danych trwało dłużej niż szacowano

Kiedy 6 listopada rozpoczęliśmy pracę nad redundancją bazy danych, szybko okazało się, że zajmie to znacznie więcej czasu niż planowaliśmy. To zmusiło nas do pchnięcia aktualizacji oprogramowania serwera dzień później.

Ale z myślą o dobrych intencjach. Chcieliśmy być bardzo ostrożni przy tworzeniu kopii zapasowej bazy danych w pierwszej kolejności, abyśmy mogli bezproblemowo wykonać nadmiarowość.


Problem nr 3: Błąd serwera spowolnił proces aktualizacji oprogramowania

Kiedy 7 listopada rozpoczęliśmy wdrażanie aktualizacji oprogramowania serwera, niewielka liczba (mniej niż 1%) serwerów zaczęła zgłaszać nieoczekiwane błędy, które ostatecznie uniemożliwiły wdrożenie aktualizacji i spowolniły cały proces. Nie było możliwości samodzielnego naprawienia problemów i byliśmy zmuszeni przekazać je naszemu dostawcy serwerów.

Chociaż wydaje się to drobną przeszkodą, biorąc pod uwagę ogrom zadania, ten nieoczekiwany błąd spowodował, że niewielka część (mniej niż 2%) klientów NitroPack doświadczyła sporadycznych, krótkich przestojów w świadczeniu usług.


Problem nr 4: Nieoczekiwane błędy 502 CDN spowodowały niestabilność usługi

Kiedy myśleliśmy, że aktualizacja jest zakończona - nasz system monitorowania zaczął rejestrować częste występowanie błędów CDN z kodem statusu HTTP 502.

Niestety błąd dotknął wszystkich naszych klientów, powodując niestabilność dostarczania zasobów CDN przez kilka dni. Po zbadaniu problemu wydaliśmy aktualizację oprogramowania, która trwale naprawiła niestabilność usługi.

Gdy wszystko z NitroPackiem działało poprawnie, przeprowadziliśmy spotkanie retrospektywne, aby zastanowić się, co możemy poprawić w przyszłości w oparciu o nasze wnioski z tej aktualizacji infrastruktury.

Kroki, które podejmujemy, aby te same problemy nie powtórzyły się w przyszłości

Ogólnie jesteśmy dumni z przebiegu całej aktualizacji. Od czasu do czasu doświadczaliśmy niestabilności usług, ale odbywało się to w sposób kontrolowany i skutecznie uniknęliśmy przestojów całej usługi dla całej bazy klientów.

Wiemy jednak, że klepanie się po plecach i skupianie się wyłącznie na tym, co poszło dobrze, nie posunie nas do przodu jako firmy i usługi.

Dlatego chcemy komunikować ulepszenia, które wdrożymy, aby w przyszłości przeprowadzać aktualizacje w jeszcze wydajniejszy sposób. Oto główne punkty:

Środowisko pomostowe z możliwością testów warunków skrajnych

Umożliwi nam to wykrywanie błędów, które zdarzają się tylko w sytuacjach o dużej objętości z dziesiątkami tysięcy żądań. Na przykład pomogłoby nam to z wyprzedzeniem zidentyfikować problemy z klientem HTTP i połączeniami wielokrotnego użytku, a także bylibyśmy w stanie wykonać aktualizację adresu IP bez przerw.


Lepsze systemy monitorowania i ostrzegania

Na podstawie problemów, które wystąpiły podczas tej aktualizacji, byliśmy w stanie zidentyfikować obszary, w których brakowało zarówno monitorowania, jak i alertów. Świetną wiadomością jest to, że skonfigurowaliśmy już oba dla tych obszarów.


Lepsza współpraca między zespołami i bardziej proaktywna komunikacja z klientami

Ponieważ różne zespoły zaangażowane w aktualizację nie były idealnie ze sobą zsynchronizowane, uważamy, że nie mogliśmy w pełni proaktywnie i terminowo komunikować postępów aktualizacji z naszymi obecnymi klientami. Mieliśmy naszą stronę status.nitropack.io, aby każdy mógł śledzić, co się dzieje z aktualizacją, ale to nie wystarczyło.

Następnym razem będziemy informować o postępach aktualizacji za pośrednictwem jak największej liczby kanałów, w tym mediów społecznościowych, poczty e-mail, pulpitu nawigacyjnego i strony internetowej!


Lepsza koordynacja z naszym dostawcą serwerów

W przypadku przyszłych aktualizacji będziemy dążyć do lepszej koordynacji z naszym Dostawcą Usług, aby zapewnić terminowe rozwiązania nieoczekiwanych problemów. Pomoże nam to efektywniej radzić sobie z nieprzewidzianymi błędami serwera.

Na koniec chcielibyśmy podziękować wszystkim naszym klientom za cierpliwość i zrozumienie. Twoje zaufanie jest naszą siłą napędową do ciągłego doskonalenia naszych usług.