Realizzare un'infrastruttura software per un'applicazione o un servizio connesso ad un'intelligenza artificiale non è semplice. Rispetto a qualche anno fa le opzioni e i framework di sviluppo sono notevolmente più numerosi e il settore è in costante miglioramento. Ci sono però delle situazioni da valutare quando si inizia lo sviluppo di un progetto simile. Oggi vogliamo portarvi l'esperienza di MacRae Linton che ha sviluppato un'infrastruttura AI per una startup, accumulando una notevole esperienza a riguardo.
Durante i suoi studi Linton ha letto spesso che una build frettolosa porta conseguenze negative, ma spesso i team con cui si è ritrovato a collaborare spingevano per release veloci e un rapido passaggio in produzione. Ciò porta ovviamente a problemi che si ripercuotono sul consumatore finale, quest'ultimo diventa spesso un beta tester involontario. Durante la realizzazione dell'infrastruttura AI richiesta la startup che gli aveva dato in gestione lo sviluppo stava svolgendo ancora ricerche di mercato per scoprire quali fossero gli utenti target.
Linton ha così realizzato una soluzione che potesse essere scalabile fin da subito, al contrario in tale mercato si presentano sempre più spesso prototipi spogli di funzioni e che puntano alle performance per rispettare scadenze ristrette.
Cosa serve esattamente per realizzare una infrastruttura AI efficiente? Linton ha scelto di lavorare con strumenti moderni e di distribuire tutto con Kubernetes su Google Cloud. Questo perché si tratta di un servizio estremamente versatile che non compromette la capacità di scalare usando lo stesso software durante le fasi di sviluppo. Inoltre tali strumenti offrono agli sviluppatori la possibilità di cambiare rapidamente la struttura del progetto, dalla build alla fase di test, fino alla produzione.
Linton ha notato che la maggior parte delle aziende inizia con una struttura "monolitica", pensando alle esigenze a lungo termine, ma nella maggior parte dei casi si necessita invece di un'architettura di microservizi. Tale ambiente assicura di poter gestire nel tempo un flusso di lavoro sempre più intenso.
Altro elemento notato da Linton è che spesso spesso esistono discrepanze tra ambienti di test e di produzione, tali differenze causano problemi sopratutto quando si tratta di progetti incentrati sui dati. Se gli esperti di intelligenza artificiale utilizzano un set di strumenti per progettare e sviluppare algoritmi, ma gli ingegneri software ne usano altri per la produzione, si rischia un feedback loop oltre ad errori dovuti alla pessima conversione.
In un'architettura di microservizi ci si assicura sempre che se un ricercatore sviluppa, ad esempio, un algoritmo in R, allora l'ingegnere software dovrà convertirlo e distribuirlo su un servizio realizzato in R, cosi da essere eseguito senza problemi in produzione.
Sviluppare e distribuire un algoritmo usando i medesimi strumenti fa risparmiare tempo e denaro. Inoltre più a lungo si attende per risolvere un problema più rilevanti saranno i problemi, e i danni, per i clienti. Anche per questo Linton ha scelto di usare Kubernetes che consente di realizzare infrastrutture indipendentemente dalla dimensione.
Linton consiglia di segnalare sempre ai problemi clienti le varie opzioni di sviluppo, senza farsi trascinare da deadline troppo oppressive o da progetti poco efficienti. Le aziende solitamente premono per tempi di sviluppo rapidi, questo perché il mercato è in costante cambiamento. Tuttavia realizzare un'architettura scalabile presenta vantaggi maggiori rispetto al classico sistema di early bird, far comprendere ciò è di vitale importanza per assicurare longevità al progetto, oltre ovviamente ad assicurare un'esperienza utente ottimale.
Via MacRae Linton