In un uggioso mattino di piena seconda ondata di pandemia da Covid-19, ero intento a fare una serie di deploy con due colleghi per un nuovo cliente. Eravamo quindi in call conference atti a FARE COSE DELICATE SU SISTEMI DI PRODUZIONE.
Arriva a gamba tesa un collega, che chiameremo TeamManager, tutto trafelato in call urgente e mi fa:
Colonnello, abbiamo un problema in produzione, mi dice un cliente che è fermo tutto e dobbiamo risolvere
MA CHE CAZZO, IO STAVO FACENDO ALTRO!
e Gesù piange.
Ma partiamo da un attimo prima: da tempo abbiamo un cliente, che chiameremo NoiCheFacciamoContrattiInterinali, che ha comprato da noi un servizio di firma digitale. Ma non ha comprato tutto il servizio, ha comprato solo il pezzettino che appone la firma sul documento. Questo pezzettino lo chiameremo IlCosoCheFirmaIlDocumento.
Ciò significa che c’è qualcun altro, che chiameremo NoiCheIntegriamoMaleISoftware, che prende il documento che scrive NoiCheFacciamoContrattiInterinali e che si preoccupa di contattare IlCosoCheFirmaIlDocumento per l’apposizione della firma.
Ora, noi che siamo gentadoppia™, abbiamo i nostri servizi sul cloud di Amazon, che come sapete ha un po’ di region a disposizione.
NoiCheIntegriamoMaleISoftware, invece, ha i server in italia e la linea è di un famoso provider che è tutto intorno a te.
Vista l’urgenza mi attivo velocemente a fare tutti i test del caso e capisco che i server di NoiCheIntegriamoMaleISoftware sono irraggiungibili da tutta Europa, ad esclusione che dall’Italia.
TeamManager: Colonnello, com’è possibile ciò?
Hannibal: Caro TeamManager, potrebbero esserci problemi di routing del loro provider, visto che è raggiungibile solo dall’Italia. Si sono chiaramente rotte le rotte!
TeamManager: Ok, ora gli scrivo che è un problema loro, e di contattare il provider che è tutto intorno a te; ma questi che fanno oggi non lavorano? Ho capito che non è colpa nostra, ma non possiamo fare qualcosa? Una di quelle tue magie..
Tra me e me penso: ma pure quando non è colpa nostra dobbiamo trovare noi una soluzione? e Gesù piange di nuovo.
Si sentono dei rumori strani nel mio cervello e mi viene in mente un tampone. No, non di quelli Covid, una soluzione tampone. Insomma, avete capito.
Avvio una nuova istanza EC2, che chiameremo PezzottoGalattico nell’unica region Amazon che raggiunge i server di NoiCheIntegriamoMaleISoftware, ovvero quella di Milano ed eseguo questi due comandi in un nuovo pane di tmux
sudo socat TCP-LISTEN:80,fork,reuseaddr TCP:noicheintegriamomaleisoftware:80
sudo socat TCP-LISTEN:443,fork,reuseaddr TCP:noicheintegriamomaleisoftware:443
Ma non è sufficiente, devo dire a IlCosoCheFirmaIlDocumento che non deve raggiungere direttamente NoiCheIntegriamoMaleISoftware, ma passare per PezzottoGalattico.
Considerato che IlCosoCheFirmaIlDocumento è un progetto Docker ed usiamo docker-compose per il deploy, ho aggiunto il "verbo" extra-hosts facendo la giusta mappatura e riavviando il container:
docker-compose -f production.yml restart engine
et voilà tutto passa per PezzottoGalattico.
Saran passati 15/20 minuti in tutto.
Nemmeno il tempo di esultare per un altro caso brillantemente risolto che arriva una nuova call di TeamManager che mi dice di non preoccuparmi perché il tutto era ripreso a funzionare da 10 minuti.