Luca Morelli
Software engineer e analista
Team lead

Software architect e solution architect: un ruolo che cambia con la dimensione del progetto.

Chi decide come è fatta un'applicazione nel cloud? In un progetto piccolo è lo stesso sviluppatore che la scrive; in un grande programma è un gruppo di persone che fa solo questo. Questa pagina è un'introduzione al tema: raccoglie la mia visione di questi ruoli, costruita sui progetti a cui ho lavorato, e il modo in cui opererei se mi fosse chiesto di assumerli. Riguarda solo una parte del mio percorso: il mio ruolo principale resta quello di sviluppatore.

Il lavoro conta più del titoloGli stessi nomi indicano compiti diversi da un'azienda all'altra: conta chi prende le decisioni e chi ne risponde.
Decisioni che duranoDove gira il software, chi vede i dati, come si aggiorna: sono scelte costose da cambiare dopo.

Due livelli, prima del singolo progetto

Un sistema in produzione deve raggiungere obiettivi precisi: prestazioni, affidabilità, sicurezza e conformità, tracciabilità, gestibilità, flessibilità, costi. Per ottenerli si lavora su due livelli, prima ancora di entrare nelle funzioni dell'applicazione.

Il solution architect definisce l'architettura dei servizi: quali servizi cloud usare e come collegarli per raggiungere quegli obiettivi. Microsoft lo descrive come chi consiglia gli stakeholder e traduce i requisiti di business in progetti tecnici, insieme a sviluppatori, amministratori ed esperti di sicurezza e di dati.

Il software architect definisce le regole software comuni che fanno funzionare quelle scelte: come ogni componente scrive i log e usa gli strumenti di monitoraggio, come usa i servizi, come gestisce errori e configurazione.

I due livelli non bastano l'uno senza l'altro. Il monitoraggio va previsto nell'architettura, ma i dati utili arrivano solo se anche lo sviluppo segue regole precise. Con accesso limitato alla produzione è evidente: davanti a un'anomalia si può contare solo su ciò che è stato previsto prima.

Esperienza cloud

Per entrambi i ruoli questi servizi e queste regole sono quasi sempre da valutare: formano una base, quasi un framework a sé stante, per un progetto che sfrutta l'ambiente cloud, può crescere e si può monitorare.

Fatto questo si entra nel singolo progetto, capendo cosa serve davvero. Il software architect sceglie quale architettura sviluppare, per esempio se usare la Clean Architecture, e definisce le regole di sviluppo; insieme si scelgono i servizi e i pattern cloud adatti al caso. Secondo la situazione si parte da un prototipo (proof of concept) che verifica il rispetto di queste regole, poi si passa allo sviluppo vero e proprio.

Come organizzo il codice

Anche le esigenze del progetto possono cambiare la base: dati regolamentati o volumi elevati possono richiedere servizi diversi.

Non sono titoli standard. Nelle organizzazioni grandi si aggiunge l'enterprise architect, che lavora sull'insieme dei sistemi e sulla strategia tecnologica, non sul singolo progetto.

Il ruolo non nasce con il cloud, ma oggi i due temi si incontrano quasi sempre. Nel cloud l'infrastruttura non si compra una volta: si sceglie tra molti servizi, si descrive in file versionati e si paga ogni mese. Una scelta di architettura diventa anche una scelta di costi, di rischi e di dipendenza da un fornitore.

Quattro situazioni diverse

01

Progetti piccoli: l'architettura è parte dello sviluppo

In un progetto piccolo non c'è una figura a parte: le scelte di architettura le fa chi sviluppa, mentre sviluppa.

Le scelte esistono comunque: dove ospitare l'applicazione, come separarne le parti, quali servizi aggiungere. Basta una persona esperta che le prenda e ne risponda; un ruolo separato costerebbe più di quanto renderebbe.

Cosa serve

  • Una persona che decida e risponda delle scelte
  • Poche decisioni scritte, con il motivo
  • Una struttura che possa crescere dopo

Il mio ruolo

Qui le scelte le ho fatte io, lavorando direttamente con il cliente.

Un esempio

02

Progetti articolati: definire la soluzione e preparare il terreno

Quando i sistemi sono più d'uno e gli sviluppatori parecchi, l'architettura diventa un lavoro impegnativo in sé.

Non basta decidere come sarà la soluzione: bisogna predisporre ciò che permette al team di lavorare. Regole comuni nel codice, per esempio su log, monitoraggio e uso dei servizi; ambienti separati di sviluppo, test e produzione, descritti con infrastruttura come codice; pipeline che compilano, verificano e rilasciano; regole su chi accede a cosa; un percorso controllato per le modifiche al database. Tutto questo va poi mantenuto, perché cambia insieme al progetto.

In questa dimensione la stessa persona o un piccolo gruppo spesso definisce e costruisce. Crescendo, la manutenzione passa a chi si occupa di DevOps o di piattaforma, e l'architetto ne indirizza le scelte.

Cosa serve

  • Infrastruttura e rilasci ripetibili, non affidati alla memoria di qualcuno
  • Un modo di provare ogni modifica senza dipendere dal cloud
  • Tempo dedicato: non è un'attività da fare a margine dello sviluppo

Il mio ruolo

Le soluzioni di questo tipo in cui ho lavorato erano già operative. Ci ho lavorato come parte del team, ma non le considero una mia creazione.

03

Grandi programmi: figure dedicate, spesso un team

Nei programmi molto grandi software architect e solution architect fanno solo questo, e spesso una persona non basta.

Microsoft distingue i team di piattaforma, che costruiscono la base comune, da quelli che governano regole e sicurezza e da quelli che sviluppano le applicazioni. SAFe, un framework per il lavoro agile su larga scala, prevede un architetto a ogni livello, dal gruppo di team al portafoglio, e nota che il ruolo è spesso affidato a un piccolo team.

Dedicati non significa separati. Martin Fowler ricorda che l'architettura è profondamente intrecciata con la programmazione: quando chi decide si allontana dal codice, le scelte perdono contatto con ciò che accade davvero.

Il mio ruolo

In programmi di questa scala ho lavorato da sviluppatore e team lead, non da architetto. Ho applicato architetture definite da altri, ne ho visto da vicino le conseguenze e ho lavorato su sistemi già in esercizio.

Esperienza cloud

04

La migrazione al cloud di un'azienda

C'è poi un lavoro che va oltre lo sviluppo: portare nel cloud le attività e le risorse di un'azienda.

Si parte dall'analisi della situazione: applicazioni, server, dati, contratti, persone, e il motivo per cui conviene spostarli. Non tutto si sposta allo stesso modo: AWS elenca sette strategie, tra cui dismettere ciò che non serve più, lasciare dov'è ciò che non è pronto e sostituire con un prodotto esistente. Microsoft colloca la migrazione in un percorso più ampio: strategia, piano, preparazione della base comune, adozione, governo, sicurezza e gestione.

In questo percorso il solution architect traduce gli obiettivi in architetture e guida la parte tecnica. Le decisioni restano dell'azienda, che coinvolge anche finanza, sicurezza e conformità.

Il mio ruolo

Non me ne sono occupato; lo cito perché è un altro significato del termine. Il mio lavoro di migrazione riguarda le singole applicazioni.

Come le migro

Le domande che contano per un'azienda

Se mi fosse chiesto di assumere questo ruolo, partirei da queste domande. Sono solo le principali: ogni risposta può aprirne altre, e l'analisi e le decisioni dipendono sempre dal contesto e dal progetto.

Dove gira il software?

Azure offre servizi per applicazioni web, per software in container, per funzioni attivate da eventi, e Kubernetes. Kubernetes dà il massimo controllo e richiede più gestione: va scelto per un'esigenza concreta, non per abitudine.

Quanto può restare fermo, e quanti dati si possono perdere?

Senza queste cifre, insieme a utenti attesi e budget, non si può dimensionare nulla. Più affidabilità costa di più.

Chi può vedere i dati di produzione?

Chi compila il software non deve per questo leggere i dati dei clienti. Vanno considerate anche le vie indirette: log, backup, esportazioni, strumenti di diagnosi.

Una modifica si può provare senza il cloud?

Se ogni prova richiede un rilascio, il team rallenta e il costo sale. Il software va organizzato per essere provato sul computer di chi sviluppa; alcune cose, come rete e identità, si verificano comunque nel cloud.

Chi crea le risorse e chi rilascia il software?

Sono attività distinte, non alternative. La pipeline compila, verifica e rilascia il software; Terraform o Bicep descrivono le risorse e di norma li esegue la stessa pipeline. Conviene usarli anche per un solo progetto, e diventano indispensabili quando la soluzione va installata in più copie. Se un'operazione riesce, le risorse esistono: non è detto che il servizio funzioni.

Da dove lavorano gli sviluppatori?

Se i servizi sono raggiungibili solo in rete privata, servono una VPN, un accesso Zero Trust o un PC cloud collegato alla rete. Cambiano costi e gestione, non il principio: ogni modifica deve restare verificabile con test autonomi, e stare in rete non dà accesso ai dati di produzione.

Come arrivano in produzione le modifiche al database?

In sviluppo capita di modificarlo a mano. Quelle modifiche vanno raccolte, riviste e versionate, mai copiate in automatico.

Se il rilascio va male?

Tornare alla versione precedente del software è di solito possibile; con i dati è molto più difficile. Va deciso prima.

Un rilascio su più sistemi

Quanto costa davvero?

Un budget su Azure avvisa, ma non ferma il consumo. Un servizio che si spegne quando non serve non azzera la spesa: restano dati, rete e log. Va guardato l'intero sistema, compreso il tempo di chi lo gestisce.

Un'installazione per ogni cliente o una condivisa?

Per chi vende software come servizio, la copia dedicata facilita la separazione dei dati e il ripristino, ma aumenta molto i costi e moltiplica gli aggiornamenti. Servono registro delle installazioni, aggiornamenti a ondate e procedure per chi entra ed esce.

Cosa finisce in un modello di IA? I dati inviati al modello rientrano negli stessi limiti di quelli di produzione. Le garanzie dipendono dal servizio e da come è configurato.

Sicurezza IA

Come lavorerei in questo ruolo

  1. Prima i numeri

    Disponibilità, volumi, dati regolamentati, budget. Senza questi, ogni scelta di prodotto è prematura.

  2. Decisioni scritte

    Cosa si è scelto, quali alternative c'erano, perché, e come tornare indietro.

  3. Un prototipo, quando serve

    Una funzione portata dal codice a un ambiente reale, con test, rilascio e monitoraggio, per verificare che il progetto rispetti le regole prima dello sviluppo vero e proprio.

  4. Confronti alla pari

    Due soluzioni si confrontano sullo stesso caso e con gli stessi requisiti: costo a riposo, rilascio, ripristino.

  5. Prova dei guasti

    Si ripristina davvero un backup e si simula un rilascio interrotto a metà.

È un metodo di lavoro, non una garanzia di risultato.

La mia esperienza, in sintesi

Questo profilo si applica solo a una parte dei progetti a curriculum.

  • Ho definito architettura e scelte tecniche, da unico sviluppatore, con clienti diretti (C-06, C-07).
  • Ho lavorato dentro soluzioni già operative, come parte del team: rilasci su più sistemi, diagnosi con produzione ad accesso limitato, infrastruttura come codice (C-01, C-05, Esperienza cloud).
  • Non mi sono occupato di migrazioni al cloud di un'intera azienda: le mie migrazioni riguardano singole applicazioni (Migrazione).

Fonti a supporto

Le fonti descrivono ruoli e servizi. Le quattro situazioni e il modo di lavorare in questo ruolo sono una mia lettura basata sull'esperienza, non una classificazione ufficiale.

Ultimo aggiornamento dei contenuti:

Vi serve qualcuno che assuma questo ruolo in un progetto?

Curriculum dettagliato e referenze su richiesta.