Bilanciare innovazione e ottimizzazione: il caso Robinhood

Ecco come la piattaforma di trading online Robinhood ha affrontato l'iper-crescita, Kubernetes e il raggiungimento dei giusti obiettivi.

robinhood

Robinhood è una piattaforma di trading online che ha la missione di democratizzare la finanza e consentire a tutti di partecipare al sistema finanziario. L’azienda ha registrato una crescita esplosiva nell’ultimo anno, i crescenti problemi che ne derivano e alcune importanti lezioni imparate lungo il percorso di crescita. Adam Wolff ha trascorso due anni come VP of Engineering ed è anche membro di ENG, il peer-network di VPE e CTO presso le principali società SaaS.

Innanzitutto, un po’ di contesto. Con l’esplosione del trading online e delle criptovalute, Robinhood ha registrato un enorme aumento delle iscrizioni di nuovi utenti oltre all’espansione del trading sulla piattaforma, e questo ha avuto un impatto su ogni parte del business e sull’infrastruttura sottostante. Man mano che i nuovi utenti crescevano rapidamente, insieme ai volumi di scambio, il team di ingegneri doveva essere sicuro di raggiungere i nuovi picchi durante i propri test di carico, non come parte del runtime aziendale.

Se avete mai provato a creare questo tipo di strumenti e questo tipo di framework, sapete che è un compito di ingegneria non banale. Come per la maggior parte delle cose nel mondo degli affari, la leadership è fondamentale e i leader stessi sono continuamente sfidati a fissare obiettivi appropriati, spingere i team a cambiare o adottare nuove tecnologie e a trovare il giusto equilibrio tra innovazione e ottimizzazione. L’esperienza di Adam è emblematica di ciò che accade quando gli obiettivi aziendali e gli strumenti per raggiungerli si fondono.

adv

Quando Adam ha iniziato a lavorare in Robinhood, c’era un nuovo progetto da implementare – Kubernetes – e all’inizio pensava fosse una buona idea. “L’obiettivo aziendale era semplicemente passare a Kubernetes, afferma. Adam proveniva da Facebook, dove si utilizzano framework sofisticati e di alta qualità per distribuire diversi tipi di lavori in modo molto astratto. I materiali di marketing per Kubernetes lo facevano sembrare esattamente ciò di cui Robinhood aveva. Ma anni dopo Adam sta ancora lavorando alla migrazione e anche se sono stati fatti molti progressi, è stato più difficile del previsto. Se non altro non sono soli in questa sfida.

Quando si implementa una tecnologia come Kubernetes, non è solo un team ad essere influenzato, è ogni team: piattaforma dell’infrastruttura, sicurezza, prodotto e così via. “Quando si inquadra l’obiettivo in termini di tecnologia, si lascia spazio all’interpretazione da parte di tutti questi team, e ognuno porterà i propri obiettivi, desideri e suggerimenti al progetto”, afferma Adam. Senza un obiettivo aziendale chiaro e unificato, il progetto Kubernetes non avrebbe avuto una direzione unificata e definita. Il vero obiettivo era aiutare i team di prodotto a distribuire rapidamente il software. QUELLO era l’obiettivo.

“In retrospettiva, la direzione e la leadership hanno commesso un errore nel dire che volevano Kubernetes”, spiega Adam. “Perché Kubernetes non è quello che voglio. In realtà non ho una vera opinione sulla tecnologia che utilizziamo: quello che voglio è una velocità di rilascio più rapida. Voglio arrivare al punto in cui è più facile e veloce distribuire una nuova build piuttosto che tornare indietro e provare a cambiare tutto.”

Investire in scalabilità

Nel definire la direzione per un altro importante investimento nella scalabilità, Adam ha voluto evitare gli errori che riteneva fossero stati fatti con Kubernetes. Una società di servizi finanziari come Robinhood ha diverse offerte per i suoi clienti, come un servizio di crittografia, un servizio di negoziazione di azioni, un servizio di negoziazione di opzioni, ecc. Il modo classico è quello di scalare questi servizi in modo indipendente. Quindi il servizio di trading di opzioni verrebbe suddiviso in più database e il servizio di crittografia verrebbe suddiviso separatamente in più database.

Ma la maggior parte delle cose in Robinhood sono account based e quindi questa strategia non funzionerebbe. L’azienda ha così adottato una strategia di ridimensionamento che sfrutta questo aspetto unico del servizio di Robinhood (ad esempio l’isolamento dell’account). Un conto finanziario Robinhood è, per impostazione predefinita, qualcosa a cui accedono solo uno o forse due utenti e quindi è preferibile mettere un account in una shard (istanza). Ciò consente opzioni crittografiche e servizi azionari separati, con un controller che sa che lo sharding generale è per tutti gli account, mentre i singoli servizi ne sono inconsapevoli, il che limita il numero di connessioni tra servizi e il numero di host che devono parlare tra loro.

“È quasi sempre possibile trovare un modo per scalare qualcosa aggiungendo più macchine o ottimizzando una query di database o qualcosa del genere”, afferma Adam. “Ma alla fine si potrebbe dover accedere al sistema di localizzazione del servizio, o Kafka, e sono queste connessioni che alla fine causano problemi.”

Obiettivi realizzabili

La nuova architettura basata su celle di Robinhood aumenta l’isolamento dei guasti e riduce molti dei punti deboli dello scaling. L’obiettivo finale era ottenere un’architettura flessibile che consentisse all’azienda di rilasciare codice affidabile rapidamente. Inquadrare l’obiettivo in questo modo ha consentito traguardi misurabili, come il raggiungimento di un minor numero di connessioni tra gli host o il contenimento del raggio di “esplosione” in caso di problemi di produzione.

“Dobbiamo fissare obiettivi che promuovano veramente la causa del business, non l’ingegneria stessa. Spesso mi faccio prendere dai dettagli tecnici o dal fattore cool di una nuova soluzione. È davvero importante che la leadership si chieda: cosa stiamo cercando di fare? Quando stabiliamo obiettivi in questi termini, il team di ingegneri li persegue con più libertà e sicurezza”.

“Molti di noi hanno trascorso l’intera carriera nel settore tecnologico perché amiamo la tecnologia. È facile essere entusiasti della prossima nuova tecnologia. Ma come leader, è importante che pensiamo prima agli obiettivi aziendali e poi ai modi migliori per raggiungerli. Potreste voler utilizzare le vostre risorse, costruire tutto da zero e personalizzarlo, quindi mantenerlo e svilupparlo. Oppure potreste voler prendere qualcosa di già fatto e muovervi velocemente, concentrando le vostre risorse su cose che sono centrali per l’azienda”.

Se questo articolo ti è stato utile, e se vuoi mantenerti sempre aggiornato su cosa succede nell’industria ICT e ai suoi protagonisti, iscriviti alle nostre newsletter:

CWI: notizie e approfondimenti per chi acquista, gestisce e utilizza la tecnologia in azienda
CIO:
approfondimenti e tendenze per chi guida la strategia e il personale IT
Channelworld: notizie e numeri per distributori, rivenditori, system integrator, software house e service provider

Iscriviti ora!