Dietro il tech con Gianluigi Mucciolo

banner

Oggi parliamo di innovazione con Gianluigi Mucciolo, Principal Solution Architect in AWS, con una lunga esperienza nella progettazione di architetture software scalabili e affidabili, unendo competenze nel campo dell’intelligenza artificiale e del cloud computing.

Qual è stata la sfida tecnologica più significativa che hai affrontato di recente?

La sfida tecnologica più significativa non è stata di natura tecnica, ma sistemica.

Nelle organizzazioni contemporanee, l’ecosistema tecnologico evolve a velocità incompatibili con i cicli di definizione della governance.

Nuovi framework emergono, protocolli si consolidano, pattern architetturali si diffondono: la pressione a sperimentare tutto immediatamente è costante.

Mi sono trovato a implementare soluzioni multi-agente per root cause analysis su anomalie di sistema. L’integrazione richiedeva accesso diretto a dati real-time e coordinamento tra strumenti eterogenei. Il problema centrale non risiedeva nella complessità dell’architettura: dovevo sviluppare in assenza di controlli di validazione formali e confini di responsabilità definiti.

Ho scelto di procedere costruendo le soluzioni mentre documentavo ogni decisione architetturale e ogni punto critico dove la governance sarebbe stata necessaria. In parallelo, ho comunicato a diversi livelli organizzativi i rischi specifici della Generative AI: prompt injection, data leakage, accesso non controllato a sistemi critici. Il tema era percepito come marginale. Quando lavori sulla frontiera dell’innovazione, spiegare rischi non ancora materializzati richiede credibilità costruita nel tempo.

Le soluzioni hanno funzionato. Hanno generato valore misurabile. Ma l’insight più rilevante è stato diverso: l’innovazione sostenibile nasce solo quando sperimentazione e governance crescono in sincronia. La vera sfida non consiste nell’adottare tecnologie potenti. Consiste nel costruire i contesti che le rendono affidabili.

Il segnale di maturità più forte è stato imparare a dire di no. Decidere quando non adottare è più difficile che sperimentare.

Quale tecnologia o strumento ha avuto il maggior impatto nel tuo lavoro quest’anno?

La tecnologia che ha avuto il maggior impatto quest’anno non è stata uno strumento, ma un principio di standardizzazione: il Model Context Protocol. Il suo valore non risiede nell’adozione, ancora limitata, ma nell’idea architetturale che rappresenta. MCP ha reso il contesto un elemento primario dell’architettura, spostando il focus dall’implementazione alla definizione del perimetro.

Separazione netta tra chi espone capacità e chi decide come usarle.

Molti interpretano il protocollo come un “USB universale” per la GenAI. Tuttavia questa astrazione si rompe quando si considerano tutte le componenti del protocollo oltre ai tools. Il suo vero valore non è l’universalità, ma la chiarezza delle responsabilità che impone: il server espone capacità, il client decide come usarle.

Come Principal Solution Architect su AWS, ho progettato architetture distribuite dove questi principi erano centrali: chi può leggere quali dati, chi può modificare lo stato, come le informazioni attraversano i confini dei sistemi, quando scade la validità di un’informazione. La complessità nasceva sempre dall’implicito. Negli ultimi anni mi sono dedicato anche allo sviluppo software ed ho visto quegli stessi pattern riemergere alla riga di codice.

MCP ha funzionato come cornice mentale. Ho iniziato ad applicare la stessa logica anche fuori dal protocollo, come metodo per ordinare le decisioni nel software. Le domande si erano evolute. Non più “quale libreria uso”, ma “quale confine sto tracciando”.

Prima di scrivere codice, mappo: chi produce informazioni, chi le consuma, chi può invalidarle, cosa succede quando mancano. Ogni componente espone capacità esplicite, ogni client dichiara cosa si aspetta. Zero assunzioni implicite.

Il risultato pratico: architetture software più lineari, meno accoppiamento, e, soprattutto, un cambio di attitudine, perché ora vedo anche la parte dello sviluppatore e non solo quella “operativa” da DevOps, un nuovo modo di pensare. E quel modo di pensare ha avuto più valore di qualsiasi libreria o framework specifico che ho adottato quest’anno.

Che consiglio daresti a chi sta iniziando ad adottare questa tecnologia?

Il rischio più frequente che vedo non è scegliere la tecnologia sbagliata. È introdurre complessità prima di avere chiarezza.

Quando lavoro con team che iniziano, dedico sempre la prima fase a mappare le responsabilità, non il codice. Faccio domande semplici: chi possiede questa informazione? Chi può modificarla? Chi deve essere notificato quando cambia? Quali dipendenze esistono tra componenti? Non serve sofisticazione tecnica, serve esplicitezza concettuale.

Una volta che questo è mappato, la scelta degli strumenti diventa lineare. Il mio approccio è sempre: caso d’uso piccolo, concreto, tracciabile. Poi allargo mantenendo trasparente ogni passo, documentando le scelte e i vincoli.

Ho visto troppi progetti partire da architetture complete che nessuno capiva davvero. Il risultato è sempre fragilità. La metodologia è: prima la chiarezza delle responsabilità, poi la tecnologia. Non puntare alla completezza: punta alla tracciabilità. Costruisci sistemi che puoi spiegare prima di costruire sistemi che fanno tutto.

Come immagini l’evoluzione futura del tuo settore nei prossimi 3-5 anni?

Credo che nei prossimi anni vedremo un cambiamento di prospettiva strutturale. Il focus si sposterà dalla capacità tecnica all’affidabilità sistemica.

L’evoluzione che immagino è una convergenza: automazione deterministica, automazione adattiva, intervento umano selettivo. Non come alternative, ma come tre livelli nella stessa architettura. I sistemi intelligenti non sostituiranno i processi esistenti: li completeranno dove ha senso, lasciando il resto intatto.

E probabilmente avremo risorse computazionali più vicine. Non solo nel cloud, ma locali o edge. Non come novità tecnica, ma come necessità: dati sensibili, latenza critica, costi ricorrenti, autonomia operativa. È il ritorno del calcolo distribuito, ma con una consapevolezza diversa rispetto a prima.

Allo stesso modo, è plausibile che avremo anche un nostro modello personale: un “digital twin” mantenuto vicino alla persona, come avvenne con i personal computer. Non come gimmick, ma come asset identitario.

In questo scenario, la responsabilità tornerà centrale. Un sistema automatico sbaglia. Un umano sbaglia. Ma continuiamo a parlare di supervisione umana perché vogliamo un referente. Un ultimo miglio decisionale interrogabile. Forse inconsciamente perché culturalmente accettiamo l’errore umano più facilmente di quello algoritmico. O perchè, in senso provocatorio, ci piace l’idea di avere un colpevole per tutto.

La domanda non sarà “chi comanda”, ma “come convivono”. Sembrerà evoluzione tecnica.

Sarà maturità sistemica. E la capacità di progettare quella convivenza: definendo confini, responsabilità, escalation, sarà più preziosa della capacità di costruire singoli componenti performanti.

C’è un’esperienza o aneddoto personale dietro a un successo tecnico che vuoi condividere?

Qualche mese fa ho revisionato una piattaforma serverless per generazione e validazione di contenuti e-commerce basata su LLM. L’architettura funzionava, ma era diventata instabile. Il mio obiettivo era renderla più affidabile senza riscriverla da zero. Il punto di rottura è arrivato dopo un aggiornamento minimo di dipendenze: il pacchetto ha superato il limite di dimensione di AWS Lambda. Tutte le pipeline sono cadute. Non era un bug: era il sintomo di un problema sistemico nell’ecosistema Generative AI: i framework evolvono così velocemente che accumulano responsabilità in modo quasi monolitico. Orchestrazione, prompt management, memory, tool calling, guardrails, streaming: tutto nello stesso pacchetto.

Mi sono fermato e ho fatto la domanda vera: mi serve davvero tutto questo? Il 90% delle applicazioni LLM manipola stringhe, fa qualche trasformazione, chiama API, persiste risultati.

Ho tolto completamente il framework di orchestazione e l’ho sostituito con codice diretto: chiamate HTTP esplicite, gestione dello stato minimale, logica vicina al dominio del problema. Risultato: tutto ha ripreso a funzionare subito. Deploy più leggeri, stack più prevedibile, latenze ridotte del 40%, costi infrastrutturali dimezzati.

Non era “meno potente”: era più stabile e controllabile.

Il reminder è stato chiaro: nell’ecosistema Generative AI, dove i framework diventano monolitici per rincorrere ogni nuova capability, spesso la mossa vincente è non usarli. Codice chiaro e diretto non è una rinuncia: è un vantaggio competitivo.

C’è uno strumento o una tecnologia che secondo te non ha avuto la risonanza che merita?

LiteLLM Gateway. Non la libreria client: ormai grande quanto altri framework, ma il Gateway specificamente.

È un layer di controllo centralizzato per modelli LLM: monitoraggio unificato, controllo accessi, guardrails, cost tracking, load balancing multi-modello, discovery di server MCP, generazione API key. Tutto in un unico punto.

Lavorando su architetture multi-modello, mi sono reso conto che spendiamo tempo enorme a costruire pezzi infrastrutturali ricorrenti. Monitoring sparso tra dashboard diverse, policy di accesso distribuite nel codice, cost tracking manuale, switching tra provider reimplementato ogni volta. Centralizzarli in un layer dedicato cambia l’equazione.

L’ho adottato in un progetto dove gestivamo tre modelli diversi con policy di accesso complesse per team differenti. L’integrazione è stata immediata: una configurazione, un deployment. Da quel momento: routing automatico tra modelli, enforcement delle policy centralizzato, observability unificata, budget tracking per team. Cambi di configurazione senza toccare il codice applicativo.

Il valore non è “semplificare il coding”. È avere governance operativa in un ecosistema che cambia settimanalmente. I modelli evolvono velocemente: nuove versioni, nuovi provider, pricing che fluttua. La governance molto più lentamente. Il Gateway colma quel gap. Nel medio periodo, questa separazione ha più impatto di qualsiasi ottimizzazione di prompt.

È infrastruttura invisibile che abilita affidabilità scalabile.

E paradossalmente, la sua invisibilità è proprio il motivo per cui viene sottovalutata.

Post correlati

TheRedCode.it - Il mondo #tech a piccoli #bit

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di Codemotion
Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls
Logo di Improove
Logo del libro open source
Logo di NgRome
Logo de La Locanda del Tech
Logo di Tomorrow Devs
Logo di DevDojo

Vuoi diventare #tech content creator? 🖊️

Se vuoi raccontare la tua sul mondo #tech con dei post a tema o vuoi condividere la tua esperienza con la community, sei nel posto giusto! 😉

Manda una mail a collaborazioni[at]theredcode.it con la tua proposta e diventa la prossima penna del blog!

Ma sì, facciamolo!