4 lezioni che abbiamo imparato dal nostro ultimo aggiornamento dell'infrastruttura

Pubblicato: 2022-05-04

Potenziamento delle infrastrutture. Un compito comune, soprattutto per un'azienda SaaS come la nostra, giusto?

Bene, il nostro ultimo non è stato il tipico aggiornamento del software poiché abbiamo aggiunto una piccola svolta.

L'obiettivo principale era aggiornare il nostro software all'ultima versione, ma questa volta abbiamo incluso altri due passaggi nel progetto: ridurre il numero di IP che i nostri clienti hanno nella lista consentita e ottenere la ridondanza del database.

E mentre la maggior parte dell'aggiornamento è andata senza intoppi, abbiamo anche riscontrato alcune interruzioni del servizio lungo il percorso.

Nelle righe seguenti, condivideremo informazioni dietro le quinte sul motivo per cui abbiamo eseguito l'aggiornamento, come è andato e quali sono i nostri maggiori apprendimenti stanno andando avanti.

Entriamo subito!


Perché abbiamo eseguito l'aggiornamento in primo luogo e cosa includeva

Comprendiamo la responsabilità che abbiamo e il ruolo svolto da NitroPack nel successo delle attività dei nostri clienti. Ecco perché è fondamentale garantire prestazioni ottimali, i più elevati standard di sicurezza e la stabilità del servizio 24 ore su 24, 7 giorni su 7.

L'aggiornamento regolare della nostra infrastruttura è uno dei tanti modi per garantire tutto ciò. E come accennato in precedenza, c'erano tre parti in questo particolare aggiornamento:


1. Aggiorna il nostro software all'ultima versione stabile

Essendo una soluzione basata su cloud, tutte le ottimizzazioni che NitroPack esegue per i nostri oltre 100.000 siti clienti vengono eseguite sulla nostra infrastruttura. Attualmente, utilizziamo più di 100 server per eseguire il servizio. Con questo aggiornamento, abbiamo dovuto aggiornare il software che orchestra la nostra flotta di server all'ultima versione stabile.


2. Riduci il numero di IP che i nostri clienti hanno nella lista consentita

In parole povere, il nostro processo di inserimento nella lista degli indirizzi IP non era di facile utilizzo.

Prima dell'aggiornamento, i nostri clienti dovevano autorizzare più di 40 indirizzi IP che servivano il traffico in uscita di NitroPack (richieste) ai siti dei clienti. Inoltre, questi IP non sono stati corretti, il che significa che quando uno dei nostri server si ritira, ne viene visualizzato uno nuovo con un indirizzo IP diverso.

Questo processo di generazione di nuovi IP richiedeva ai nostri clienti di autorizzare regolarmente dozzine di nuovi indirizzi affinché NitroPack potesse ottimizzare con successo i loro siti.

Dopo l'aggiornamento, i nostri clienti devono inserire nella lista consentita solo tre IP fissi e immutabili.


3. Ottieni la ridondanza del database

Per molto tempo volevamo ottenere la ridondanza del database in quanto avrebbe migliorato le prestazioni complessive del sito Web e del dashboard di NitroPack e saremmo stati in grado di migliorare la sicurezza del servizio. Inoltre, questo aggiornamento ci consentirebbe di eseguire futuri aggiornamenti del database senza tempi di inattività.

Con questi obiettivi in ​​mente, abbiamo suddiviso il processo in due fasi, lasciandoci un giorno tra i due, così abbiamo avuto una buona dose di respiro:

Passaggio 1: (4 novembre): riduzione del numero di IP
Passaggio 2: (6 novembre): ridondanza del database e aggiornamento del software del server

Ma non tutto è andato secondo le nostre aspettative.


Cosa non è andato come previsto

Nonostante la nostra accurata preparazione, abbiamo riscontrato alcuni problemi imprevisti in tutti e tre gli aggiornamenti. Ecco cosa è successo:

Problema n. 1: problemi di connettività durante il processo di aggiornamento IP

Il 4 novembre dovevamo eseguire un aggiornamento preliminare del servizio, con l'obiettivo di ridurre il numero di indirizzi IP per il traffico in uscita di NitroPack.

Тla versione iniziale presentava un bug software interno che non consentiva al nostro servizio di creare connessioni in uscita in alcuni casi. Sfortunatamente, questo problema si è manifestato solo quando la nostra infrastruttura ha sperimentato situazioni di picco di traffico. Ecco perché non abbiamo rilevato il problema nel nostro ambiente di staging durante i test iniziali. Il problema di connettività ha portato NitroPack a non eseguire ottimizzazioni in uscita in modo affidabile e alcuni dei nostri clienti hanno riscontrato instabilità del servizio per un paio d'ore.

La buona notizia è che il nostro team di sviluppo è riuscito a mitigare il problema tempestivamente aggiornando il software del nostro client HTTP.


Problema n. 2: il backup del database ha richiesto più tempo del previsto

Quando abbiamo iniziato a lavorare sulla ridondanza del database il 6 novembre, abbiamo subito scoperto che ci sarebbe voluto molto più tempo del previsto. Questo ci ha costretto a spingere l'aggiornamento del software del server il giorno dopo.

Ma è stato con buone intenzioni in mente. Volevamo essere estremamente cauti con il backup del database in primo luogo in modo da poter eseguire la ridondanza senza problemi.


Problema n. 3: un errore del server ha rallentato il processo di aggiornamento del software

Quando abbiamo iniziato a distribuire l'aggiornamento del software del server il 7 novembre, un piccolo numero (meno dell'1%) dei server ha iniziato a generare errori imprevisti che alla fine hanno impedito la distribuzione dell'aggiornamento e rallentato l'intero processo. Non c'era modo di risolvere i problemi da soli e siamo stati costretti a inoltrarlo al nostro provider di server.

Sebbene sembri un piccolo intoppo, considerando l'entità dell'attività, questo errore imprevisto ha causato un breve periodo di inattività intermittente del servizio in una piccola parte (meno del 2%) dei clienti di NitroPack.


Problema n. 4: 502 errori CDN imprevisti hanno causato instabilità del servizio

Quando pensavamo di aver finito con l'aggiornamento, il nostro sistema di monitoraggio ha iniziato a registrare frequenti occorrenze di errori CDN con il codice di stato HTTP 502.

Sfortunatamente, l'errore ha interessato tutti i nostri clienti, causando instabilità nella distribuzione delle risorse CDN per un paio di giorni. Dopo aver esaminato il problema, abbiamo rilasciato un aggiornamento software che ha risolto l'instabilità del servizio in modo permanente.

Una volta che tutto con NitroPack ha funzionato correttamente, abbiamo tenuto una riunione retrospettiva per riflettere su cosa potremmo migliorare in futuro sulla base di ciò che abbiamo appreso da questo aggiornamento dell'infrastruttura.

Passi che stiamo adottando per garantire che gli stessi problemi non si ripetano in futuro

Nel complesso, siamo orgogliosi di come è andato l'intero aggiornamento. Abbiamo riscontrato un'instabilità del servizio occasionale, ma in modo controllato e abbiamo evitato con successo i tempi di inattività dell'intero servizio per l'intera base di clienti.

Tuttavia, sappiamo che darci una pacca sulla spalla e concentrarci interamente su ciò che è andato bene non ci farà avanzare come azienda e servizio.

Ecco perché vogliamo comunicare i miglioramenti che attueremo al fine di eseguire gli aggiornamenti futuri in modo ancora più efficiente. Ecco i punti principali:

Ambiente di staging compatibile con test di stress

Questo ci consentirà di rilevare errori che si verificano solo in situazioni ad alto volume con decine di migliaia di richieste. Ad esempio, ciò ci avrebbe aiutato a identificare in anticipo il client HTTP e i problemi di connessione riutilizzabile e saremmo stati in grado di eseguire l'aggiornamento IP senza interruzioni.


Migliori sistemi di monitoraggio e allerta

Sulla base dei problemi che si sono verificati durante questo aggiornamento, siamo stati in grado di identificare le aree in cui mancavano sia il monitoraggio che gli avvisi. La grande notizia è che abbiamo già configurato entrambi per queste aree.


Migliore collaborazione tra team e comunicazione più proattiva con i clienti

Poiché i vari team coinvolti nell'aggiornamento non erano idealmente sincronizzati tra loro, riteniamo di non poter comunicare in modo proattivo e tempestivo l'avanzamento dell'aggiornamento ai nostri clienti esistenti. Avevamo la nostra pagina status.nitropack.io in modo che tutti potessero seguire cosa stava succedendo con l'aggiornamento, ma non era abbastanza.

La prossima volta comunicheremo lo stato di avanzamento dell'aggiornamento attraverso il maggior numero possibile di canali, inclusi social media, e-mail, dashboard e sito Web!


Migliore coordinamento con il nostro provider di server

Per futuri aggiornamenti, ci adopereremo per un migliore coordinamento con il nostro fornitore di servizi per garantire soluzioni tempestive a problemi imprevisti. Questo ci aiuterà a gestire gli errori imprevisti del server in modo più efficiente.

Infine, vorremmo ringraziare tutti i nostri clienti per la loro pazienza e comprensione. La vostra fiducia è la nostra forza trainante per migliorare costantemente il nostro servizio.