Vai al contenuto principale
BlogPanoramica sul cloudIl mio viaggio su Linode: Da un server Minecraft a uno stage di ingegneria

Il mio viaggio su Linode: Da un server Minecraft a uno stage in ingegneria

Il mio viaggio su Linode: Da un server Minecraft a uno stage in ingegneria

Ciao! Mi chiamo Gurleen e sono una stagista in Ingegneria del Software presso Linode. Studio Informatica e Imprenditorialità alla Drexel University di Philadelphia, Pennsylvania. Negli ultimi cinque mesi ho avuto l'opportunità di essere la prima stagista di Linode, lavorando a fianco del team API.

La missione di Linode di rendere il cloud computing semplice, economico e accessibile a tutti è vicina e cara al mio cuore. Ho iniziato con Linode in terza media per avviare un server di Minecraft (che, tra l'altro, è ora disponibile come app facile da usare con un solo clic) e oggi uso Linode per ospitare applicazioni di grandi dimensioni. Fin dall'inizio del mio stage a marzo, ho ritenuto importante continuare questa missione e portare il cloud a una nuova generazione di tecnologi.

Durante il mio periodo in Linode, ho avuto l'opportunità di lavorare su progetti sia interni che rivolti ai clienti:

Migliorare i tempi di risposta delle API

APIv4 è la spina dorsale della nostra offerta di prodotti. Alimenta il nostro Cloud Manager e consente ai nostri clienti di avere accesso programmatico a tutti i prodotti e servizi Linode. Quest'anno ci siamo concentrati molto sulla velocizzazione dell'API per servire meglio i nostri clienti, soprattutto quelli che si collegano dall'altra parte del mondo. 

Prima di affrontare questo compito, i nostri tempi di risposta si aggiravano intorno ai 150ms. È già un tempo veloce, ma volevamo spremere ancora un po' di prestazioni.

Come nuovo arrivato in questo grande progetto, ho potuto immergermi con un occhio più critico. Volevamo trovare ottimizzazioni che consentissero di risparmiare su tutti i nostri endpoint (che sono molti). Ho iniziato a pensare a quali operazioni avvengono ovunque e mi è venuto in mente: il logging!

All'inizio sembrava un po' inverosimile, ma ha senso se lo si misura. La scrittura su stdout, così come la registrazione su file, è un'operazione sincrona in Python e può richiedere da 10 a 20 ms, a seconda della quantità di testo scritto. Si tratta di una grande porzione di tempo spesa per un'operazione che può essere utile o meno.

Ho esplorato varie opzioni, come il logging asincrono, ma ho scoperto che la riduzione del livello di logging avrebbe dato i maggiori benefici. Il nostro ambiente di sviluppo rispecchia i container che usiamo in produzione, quindi ho sviluppato uno stress test usando Locust e raccogliendo dati sui tempi di risposta. Il guadagno maggiore è stato ottenuto cambiando il livello di log da DEBUG, la nostra precedente impostazione di produzione, a INFO. Solo questo sviluppo ci ha permesso di ottenere una riduzione media di 15 millisecondi in produzione, anche con ~18k richieste al minuto! 

Migliorare i tempi di risposta delle API è stata un'opportunità straordinaria per migliorare l'esperienza dei clienti, soprattutto di quelli europei e asiatici.  

Raccolta delle metriche di GitHub per i manager

I responsabili dell'ingegneria del software di Linode hanno il compito di raccogliere dati sulla produttività dei loro team. Per alcune di queste informazioni utilizzano le metriche di GitHub, come le PR e i commit. Tuttavia, questo può essere un compito laborioso, dato che abbiamo repository sia nel nostro server aziendale GitHub che in progetti open-source su GitHub come Linode Cloud Manager. Il mio manager, Samir, mi ha chiesto se potevo aiutarlo a velocizzare la raccolta dei dati.

Questo processo era pronto per essere automatizzato. Ho iniziato esplorando le offerte API di GitHub e ho scoperto che sia GitHub pubblico che GitHub Enterprise condividono lo stesso schema API, rendendo più facile condividere la logica per entrambi i casi. La funzionalità di ricerca mi ha permesso di ottenere i numeri di cui avevo bisogno con poche chiamate API.

In una settimana ho realizzato un proof-of-concept utilizzabile come strumento a riga di comando. Il passo successivo è stato quello di fornire un'interfaccia web per i nostri manager. Per le dimensioni di questo progetto, ho utilizzato Vue.js per portare a termine il lavoro. Il risultato è stato un'applicazione piccola e autogestita, in grado di prendere le chiavi API, i roster delle squadre e un intervallo di date, e di trasformarli in numeri grezzi che i manager possono spostare in strumenti come Google Sheets. 

I manager hanno già risparmiato molte ore di lavoro per individuare queste metriche e sono sicuro che il mio programma continuerà a fornire valore anche dopo la fine del mio stage.

Portate il vostro certificato

Molti clienti utilizzano il nostro Object Storage per ospitare siti web statici. Per impostazione predefinita, serviamo un certificato SSL sul dominio linodeobjects.com, di nostra proprietà. Tuttavia, non esisteva un meccanismo che permettesse agli utenti di servire i propri certificati, se lo desideravano. Uno dei miei mentori, Adam Mohammed, mi ha proposto di aggiungere questa funzionalità. Essendo io stesso un utente di Object Storage , ho capito il valore che avrebbe portato ai nostri clienti e ho lavorato con lui per realizzare questa funzionalità.

Il mio compito era quello di costruire l'interfaccia API per supportare questa nuova funzionalità. La creazione di una nuova funzionalità mi ha permesso di visitare ogni angolo del progetto API. Essendo un'applicazione web monolitica di grandi dimensioni, ci sono molte parti mobili da comprendere. Inoltre, ha colmato le lacune di conoscenza che ancora avevo su come i nostri sistemi comunicano e lavorano insieme.

Una parte importante di questo progetto è stata l'attenzione alla sicurezza. Gestire i segreti dei clienti non è un compito facile, e abbiamo trascorso molte ore a pianificare, discutere e testare ogni anello della catena per assicurarci di fornire un servizio sicuro. Mi ha dato una nuova prospettiva sulla progettazione dei sistemi e mi ha permesso di mettermi nei panni dell'utente. Non vedo l'ora che i clienti usino e apprezzino questa funzione.

Questo lavoro è stato completato. Ora è possibile caricare un certificato e una coppia di chiavi private e Object Storage li servirà quando una richiesta arriva al vostro bucket. È così facile. Questa funzione è in linea con la nostra missione di rendere semplice il cloud computing. Vi diamo gli strumenti di cui avete bisogno per costruire il vostro progetto o la vostra azienda, senza alcuna complicazione.

Conclusione

Ho iniziato a lavorare per Linode a marzo, non solo come primo stagista in ingegneria dell'azienda, ma anche come primo dipendente ad essere assunto da remoto a causa della pandemia. Nonostante questo, ho imparato molto di più di quanto avrei mai immaginato. Il mio team e il mio reparto mi hanno accolto a braccia aperte e hanno risposto a domande che non sapevo nemmeno di avere. Siamo stati in grado di trarre il meglio da una situazione strana perché la cultura di Linode prevede il sostegno reciproco. Non avrei potuto chiedere persone migliori con cui lavorare.

Come avete visto, il lavoro che ho svolto non era un "lavoro da stagista". Mi occupavo di progetti ad alto impatto, rivolti ai clienti, con l'obiettivo di far progredire la missione dell'azienda. Oltre alle conoscenze tecniche, questo lavoro mi ha trasmesso una mentalità ingegneristica incentrata sul cliente. Queste competenze si possono ottenere solo al di fuori delle aule scolastiche.

Questi ultimi mesi sono stati emozionanti, impegnativi e gratificanti. Sono molto grato a Linode per avermi offerto questa opportunità e non vedo l'ora di vedere altri studenti in questo ruolo.


Commenti

Lascia una risposta

Il vostro indirizzo e-mail non sarà pubblicato. I campi obbligatori sono contrassegnati da *