Il 2023 si è caratterizzato come un anno di forti cambiamenti per il settore IT. Le più recenti tendenze in tema di Design e Software Architecture sono state il focus dell’ultimo Report InfoQ: una panoramica degli argomenti di maggiore interesse a cui prestare attenzione per capire lo sviluppo del settore nel 2024.
Il grafico delle tendenze
È molto interessante dare uno sguardo al grafico riportato più sotto, rilevando le tendenze in atto, le fasi del ciclo di vita in cui si trovano ed anche le differenze rispetto allo scorso anno.
Tra gli “innovators” si sono aggiunte quest’anno tre nuove voci, estremamente riportate nei dibattiti di settore: Large language models (LLM) e Supply chain security, relativa alla sicurezza della catena di fornitura del software. Tra gli “early adopters” invece si aggiunge la voce “Architecture as a team sport“, che fa riferimento più che altro a una metodologia di lavoro più che a una nuova tecnologia. Tra le tendenze invece che hanno guadagnato consensi, spostandosi verso destra nel grafico, troviamo “Design for portability“, “Data-driven architecture” e, nel riquadro Late Majority, il “Serverless”.
Tendenze primarie e risultati del report
- Il “Design for Portability” sta guadagnando rapidamente consensi, grazie a framework come Dapr che si concentrano su un modello di astrazione cloud-native e consentono agli sviluppatori di separare la logica aziendale dai dettagli di implementazione.
- LLM (Large Language Model) avranno un impatto sempre più significativo, anche e soprattutto nel contribuire allo sviluppo di una nuova generazione di specialisti low-code e no-code.
- La sostenibilità del software sarà una delle principali tematiche di progettazione dei prossimi anni, come abbiamo già visto in questo articolo “User Personas, UX Design e Climate Change”. L’attenzione si sta indirizzando verso una migliore misurazione dell’impatto inquinante di un software e nella contestuale riduzione della “Carbon Footprint” dei sistemi.
- Le applicazioni decentralizzate (dApp) stanno portando la blockchain oltre le criptovalute e gli NFT, anche se la carenza attuale di domanda da parte dei consumatori manterrà queste tecnologie in un mercato di nicchia.
Design for portability
Il “Design for Portability ” merita qualche attenzione e approfondimento in più. L’attività non si limita solamente a rendere “trasportabile” il codice; piuttosto, crea un’astrazione clean a partire dall’infrastruttura. Chi progetta e realizza il sistema può concentrarsi in tal modo su ciò che genera valore, senza preoccuparsi troppo dei dettagli della piattaforma su cui verrà eseguito il codice. Questa filosofia di progettazione è resa possibile da framework come Dapr, un sistema runtime gratuito e open source progettato per supportare l’elaborazione cloud native e serverless.
Un’altra tecnologia che supporta il Design for Portability è WebAssembly, in particolare WebAssembly lato server. Spesso si pensa a WebAssembly come a una funzionalità lato client, per ottimizzare il codice in esecuzione nel browser. Ma l’uso di WebAssembly offre vantaggi significativi anche lato server.
Large Language Model
Le notizie sull’AI durante l’ultimo anno, in particolare sui modelli linguistici di grandi dimensioni come GPT-3 e GPT-4, sono state impossibili da ignorare.
Non si tratta semplicemente di uno strumento utilizzato dai professionisti del software, bensì qualcosa che è entrato prepotentemente nella vita di tutti i giorni, come dimostra l’adozione ampia da parte delle persone non del settore e l’incredibile copertura mediatica.
Anche se è ancora troppo presto per arrivare a delle conclusioni ed il futuro può riservare grandi sorprese, l’opinione più diffusa sembra quella che vede un effetto positivo sul mondo del software e sul modo in cui lo costruiamo da parte dei modelli di intelligenza artificiale.
Le capacità di calcolo di ChatGPT, Bing chat e GitHub Copilot sono già ora molto utili per scrivere codice e consentire agli sviluppatori di lavorare più velocemente. E gli effetti si ripercuoteranno su tutto il mondo del lavoro (come abbiamo già visto in un articolo dedicato all’AI e i suoi effetti sull’occupazione).
Data-driven Architecture
Fino allo scorso anno il binomio “data + architecture” si incentrava per lo più sul modo in cui gli IT Architect considerano i dati in modo diverso in funzione della progettazione di sistemi e applicativi. Quest’anno l’avvento dei Data Mesh cambia le carte in tavola e si può parlare più correttamente di “architettura guidata dai dati“.
La struttura, l’archiviazione e l’elaborazione dei dati sono un fondamentale step iniziale, piuttosto che un dettaglio da gestire durante l’implementazione. Come sostiene Blanca Garcia-Gil, membro del comitato di programmazione della QCon di Londra: “Quando si progettano architetture cloud, è necessario pensare fin dall’inizio alla raccolta, all’archiviazione e alla sicurezza dei dati, in modo da poterne poi ricavare valore, compreso l’uso di AI/ML”.
Il Data Mesh può considerarsi un vero e proprio cambio di paradigma: i dati vengono organizzati in Domini, costituiti da una serie di dati omogenei rispetto a determinati criteri (es. marketing, produzione, logistica ecc.…), e ogni Dominio viene posto sotto la ownership di un team interdisciplinare di professionisti con skill adeguate rispetto alla sfera di competenza di questi dati.
In tutto ciò si realizza pienamente la Legge di Conway, con organizzazione e design del sistema allineati secondo gli stessi principi e la stessa struttura organizzativa.
Applicazioni decentralizzate (dApp)
Blockchain e registri distribuiti sono le tecnologie più utilizzate alla base delle app decentralizzate (dApp).
L’uso della decentralizzazione per applicazioni al di là di blockchain e web 3.0 è stato per il momento poco frequente, anche in altri ambiti dell’ecosistema di sviluppo del software. Uno dei pochi esempi lo possiamo trovare in Mastodon, social network decentralizzato e open source alternativo a Twitter. Tuttavia, l’adozione di questa piattaforma da parte dei consumatori non ha ancora avuto lo stesso successo delle concorrenti già esistenti.
A causa di questo scarso successo, le applicazioni decentralizzate rimangono ancora classificate nel grafico come tendenze innovative.
Architecture as a team sport
L’ultimo aspetto interessante riguarda il lavoro degli IT Architect, che non operano più da soli e non possono più occuparsi esclusivamente di questioni tecniche. Il ruolo del Software Architect varia notevolmente da un settore all’altro (alcune aziende hanno addirittura eliminato del tutto il ruolo, privilegiando la figura di “ingegnere principale” come primo responsabile delle decisioni di sviluppo e progettazione.
Tutto ciò determina un approccio più collaborativo, in cui gli Architects lavorano a stretto contatto con gli ingegneri che realizzano il sistema per perfezionarlo in modo tempestivo e costante.
Gli Architectural Decision Records (ADR) sono ormai comunemente riconosciuti come un modo per documentare e comunicare le decisioni di progettazione. Vengono utilizzati anche come strumento di collaborazione per aiutare gli ingegneri a prendere decisioni tecniche e a considerare i vari compromessi.