4 lecții pe care le-am învățat din cea mai recentă actualizare a infrastructurii

Publicat: 2022-05-04

Modernizarea infrastructurii. O sarcină comună, mai ales pentru o companie SaaS ca a noastră, nu?

Ei bine, cel mai recent al nostru nu a fost upgrade-ul tipic de software, deoarece i-am adăugat o mică răsturnare.

Scopul principal a fost să facem upgrade software-ului nostru la cea mai recentă versiune, dar de data aceasta am inclus încă doi pași în proiect - reducerea numărului de IP-uri pe care clienții noștri trebuie să le permită și obținerea redundanței bazei de date.

Și, deși majoritatea actualizării a decurs fără probleme, am experimentat și unele întreruperi ale serviciului pe parcurs.

În rândurile următoare, vom împărtăși informații din culise despre motivul pentru care am efectuat upgrade-ul, cum a decurs și care sunt cele mai mari învățăminte ale noastre.

Să intrăm direct în asta!


De ce am efectuat upgrade-ul în primul rând și ce a inclus

Înțelegem responsabilitatea pe care o avem și rolul pe care NitroPack îl joacă în succesul afacerilor clienților noștri. De aceea, asigurarea performanței optime, a celor mai înalte standarde de securitate și a stabilității serviciului 24/7 este crucială.

Actualizarea periodică a infrastructurii noastre este una dintre numeroasele modalități de a asigura toate acestea. Și, așa cum am menționat mai devreme, au existat trei părți la această actualizare specială:


1. Actualizați software-ul nostru la cea mai recentă versiune stabilă

Ca soluție bazată pe cloud, toate optimizările pe care NitroPack le face pentru cele peste 100.000 de site-uri clienți sunt efectuate pe infrastructura noastră. În prezent, folosim peste 100 de servere pentru a rula serviciul. Cu această actualizare, a trebuit să facem upgrade software-ul care orchestrează flota noastră de servere la cea mai recentă versiune stabilă.


2. Reduceți numărul de IP-uri pe care clienții noștri trebuie să le permită

Mai simplu spus, procesul nostru de listare permisă IP nu a fost ușor de utilizat.

Înainte de actualizare, clienții noștri trebuiau să permită lista a mai mult de 40 de adrese IP care deserveau traficul de ieșire (cereri) NitroPack către site-urile clienților. În plus, aceste IP-uri nu au fost remediate, ceea ce înseamnă că atunci când unul dintre serverele noastre se retrage, unul nou vine cu o adresă IP diferită.

Acest proces de generare de noi IP-uri a cerut clienților noștri să permită în mod regulat zeci de adrese noi pentru ca NitroPack să își optimizeze cu succes site-urile.

După actualizare, clienții noștri trebuie să includă doar trei IP-uri fixe, care nu se schimbă.


3. Obțineți redundanța bazei de date

De mult timp, ne-am dorit să obținem redundanța bazei de date, deoarece ar îmbunătăți performanța generală a site-ului web și a tabloului de bord NitroPack și am putea îmbunătăți securitatea serviciului. În plus, această actualizare ne-ar permite să realizăm viitoare actualizări ale bazei de date fără timpi de nefuncționare.

Având în vedere aceste obiective, am împărțit procesul în doi pași, lăsându-ne o zi între cei doi, așa că ne-am relaxat bine:

Pasul 1: (4 noiembrie): Reducerea numărului de IP-uri
Pasul 2: (6 noiembrie): redundanța bazei de date și actualizarea software-ului serverului

Dar nu totul a mers conform așteptărilor noastre.


Ce nu a mers conform planului

În ciuda pregătirii noastre minuțioase, ne-am confruntat cu unele probleme neașteptate în toate cele trei actualizări. Iată ce sa întâmplat:

Problema #1: Probleme de conectivitate în timpul procesului de actualizare IP

Pe 4 noiembrie, eram programați să efectuăm o actualizare preliminară a serviciului, cu scopul de a reduce numărul de adrese IP pentru traficul de ieșire al NitroPack.

ТVersiunea inițială a avut o eroare software internă care nu a permis serviciului nostru să creeze conexiuni de ieșire în unele cazuri. Din păcate, această problemă a apărut doar atunci când infrastructura noastră a cunoscut situații de vârf de trafic. De aceea, nu am detectat problema în mediul nostru de pregătire în timpul testelor inițiale. Problema de conectivitate a dus la NitroPack să nu efectueze optimizările de ieșire în mod fiabil, iar unii dintre clienții noștri au experimentat instabilitate a serviciilor timp de câteva ore.

Vestea bună este că echipa noastră de dezvoltatori a reușit să atenueze problema cu promptitudine prin actualizarea software-ului clientului nostru HTTP.


Problema #2: Backup-ul bazei de date a durat mai mult decât estimat

Când am început să lucrăm la redundanța bazei de date pe 6 noiembrie, am aflat rapid că va dura mult mai mult decât era planificat. Acest lucru ne-a forțat să împingem actualizarea software-ului serverului o zi mai târziu.

Dar a fost cu bune intenții în minte. Am vrut să fim extrem de precauți în a face copii de rezervă ale bazei de date, astfel încât să putem efectua redundanța fără probleme.


Problema #3: O eroare de server a încetinit procesul de actualizare a software-ului

Când am început să implementăm upgrade-ul de software pentru server pe 7 noiembrie, un număr mic (mai puțin de 1%) dintre servere au început să arunce erori neașteptate care au împiedicat implementarea actualizării și au încetinit întregul proces. Nu a existat nicio modalitate de a remedia singuri problemele și am fost forțați să le transmitem furnizorului nostru de servere.

Deși pare un mic sughiț, ținând cont de amploarea sarcinii, această eroare neașteptată a făcut ca o mică parte (mai puțin de 2%) dintre clienții NitroPack să se confrunte cu perioade scurte de întrerupere a serviciului.


Problema #4: Erori neașteptate 502 CDN au cauzat instabilitatea serviciului

Când am crezut că am terminat cu upgrade-ul - sistemul nostru de monitorizare a început să înregistreze apariții frecvente de erori CDN cu codul de stare HTTP 502.

Din păcate, eroarea a afectat toți clienții noștri, provocând instabilitate în livrarea resurselor CDN pentru câteva zile. După examinarea problemei, am emis o actualizare software care a remediat permanent instabilitatea serviciului.

Odată ce totul cu NitroPack a funcționat corect, am organizat o întâlnire retrospectivă pentru a reflecta asupra a ceea ce am putea îmbunătăți în viitor, pe baza învățăturilor noastre din această actualizare a infrastructurii.

Pași pe care îi luăm pentru a ne asigura că aceleași probleme nu se vor întâmpla din nou în viitor

În general, suntem mândri de cum a decurs întreaga actualizare. Am experimentat ocazional instabilitate a serviciilor, dar a fost într-o manieră controlată și am evitat cu succes timpul de nefuncționare a întregului serviciu pentru întreaga bază de clienți.

Cu toate acestea, știm că să ne mângâim pe spate și să ne concentrăm în întregime pe ceea ce a mers bine nu ne va duce mai departe ca companie și serviciu.

De aceea dorim să comunicăm îmbunătățirile pe care le vom implementa pentru a efectua upgrade-uri viitoare într-un mod și mai eficient. Iată principalele puncte:

Mediu de pregătire capabil de testare la stres

Acest lucru ne va permite să detectăm erori care apar doar în situații de volum mare cu zeci de mii de solicitări. De exemplu, asta ne-ar fi ajutat să identificăm în avans clientul HTTP și problemele de conexiuni reutilizabile și am fi putut să executăm actualizarea IP fără întreruperi.


Sisteme mai bune de monitorizare și alertă

Pe baza problemelor apărute în timpul acestui upgrade, am putut identifica zonele în care ne lipseau atât monitorizarea, cât și alertele. Vestea grozavă este că le-am configurat deja pe ambele pentru aceste zone.


O mai bună colaborare între echipe și o comunicare mai proactivă cu clienții

Deoarece diferitele echipe implicate în upgrade nu au fost sincronizate în mod ideal între ele, simțim că nu am putut comunica în mod proactiv și în timp util progresul upgrade-ului clienților noștri existenți. Aveam pagina noastră status.nitropack.io, astfel încât toată lumea să poată urmări ce se întâmplă cu actualizarea, dar asta nu a fost suficient.

Data viitoare, vom comunica progresul actualizării pe cât mai multe canale posibil, inclusiv rețelele sociale, e-mailul, tabloul de bord și site-ul web!


O mai bună coordonare cu furnizorul nostru de servere

Pentru actualizări viitoare, ne vom strădui pentru o mai bună coordonare cu Furnizorul nostru de servicii pentru a asigura soluții în timp util la problemele neașteptate. Acest lucru ne va ajuta să gestionăm mai eficient erorile neprevăzute ale serverului.

În cele din urmă, dorim să mulțumim tuturor clienților noștri pentru răbdare și înțelegere. Încrederea dumneavoastră este forța noastră motrice pentru a ne îmbunătăți constant serviciile.