Luca Morelli
Software engineer e analista
Team lead

Cloud, rilasci e operatività: esperienza sul campo in Azure e AWS.

Ho lavorato principalmente con Azure e AWS, e in misura più limitata con Google Cloud. Il mio contributo cambia con l'organizzazione del progetto: sviluppo e integrazione delle applicazioni, collaborazione con un team di piattaforma oppure gestione diretta di ambienti e rilasci.

AzureAWSTerraformPipeline di rilascioMonitoraggio

Piattaforme cloud

Lavoro su applicazioni e integrazioni ospitate in cloud, con responsabilità diverse secondo il progetto.

Le esperienze più significative sono su Azure e AWS. Ho utilizzato servizi applicativi e infrastrutturali per collegare sistemi, elaborare dati e rendere osservabile il funzionamento delle applicazioni. Nei progetti più grandi la piattaforma è presidiata da specialisti; in altri seguo anche configurazione, rilascio e controllo degli ambienti.

Software architect e solution architect nel cloud

Due contesti di lavoro

01

Piattaforme con accesso alla produzione limitato

In contesti con forti vincoli di sicurezza, la produzione è gestita da un team dedicato.

Quando non posso accedere direttamente all'ambiente o ai database di produzione, log e strumenti di monitoraggio diventano essenziali per riconoscere le anomalie e ricostruirne le cause. Questo richiede attenzione alla qualità del logging e alla tracciabilità dei problemi già durante lo sviluppo.

Quando c'è un'anomalia in produzione

In un sistema con accesso limitato molte strade sono chiuse: non si può entrare nel database, né correggere al volo, né aggiungere una riga di log per capire meglio. Per questo parto dall'intero percorso della richiesta e uso il monitoraggio dei singoli componenti per capire se il problema è nel codice oppure in un componente sovraccarico, che va ridimensionato. Nei sistemi complessi questi casi anomali spesso non sono previsti dai requisiti, e gli altri componenti possono interpretare in modo fuorviante le risposte che ricevono.

Una volta circoscritta l'area, analizzo il componente. Solo i componenti software permettono di adattare il logging, e spesso non è necessario. Se il problema è nel programma, i log devono bastare: verifico che contengano le informazioni necessarie e che la loro struttura permetta di seguire il flusso che ha portato all'errore, perché un singolo evento in mezzo a centinaia di altri non lo mostra. Dove non bastano, il miglioramento va pianificato in anticipo: in questi ambienti non si rilascia una correzione sul momento.

In alcuni progetti ho contribuito a preparare configurazioni con Terraform, così che le modifiche all'infrastruttura fossero versionate, verificabili e coordinate con il processo di rilascio.

Il mio contributo

  • Analisi dei problemi attraverso log e monitoraggio
  • Logging e tracciabilità delle applicazioni
  • Collaborazione con i team responsabili della piattaforma
  • Configurazioni infrastrutturali con Terraform, dove previsto
02

Gestione diretta di ambienti e rilasci

In altri progetti seguo più da vicino l'operatività, dallo sviluppo fino alla produzione.

Ho lavorato alla configurazione di pipeline di rilascio, anche quando l'aggiornamento coinvolge servizi diversi come applicazioni, CRM e Service Bus. Ho seguito ambienti di sviluppo, test, staging e produzione, occupandomi del monitoraggio dei servizi e dell'analisi delle anomalie.

Le integrazioni e i flussi di dati hanno coinvolto, secondo il progetto, Azure Functions, Service Bus e Stream Analytics, insieme a componenti di rete come Azure Firewall e Application Gateway. Ho utilizzato anche Entra ID per l'identità e Azure Synapse nell'ambito dei dati.

Un rilascio su più sistemi

Un rilascio distribuito su più sistemi richiede una pianificazione attenta. Spesso comporta un fermo programmato del servizio, e l'aggiornamento di applicazioni e database va coordinato con il passaggio in produzione dei sistemi di altri team. Serve una procedura scritta e mantenuta nel tempo, che copra il flusso normale e gli scenari di risoluzione dei problemi. Non è una procedura fissa: non sempre si aggiornano tutti i sistemi, a volte cambiano solo alcuni microservizi.

Il tipo di aggiornamento determina altri due aspetti.

Il ripristino. I problemi inattesi possono capitare comunque. Nei rilasci più semplici si può tornare alla versione precedente, usando i pacchetti già rilasciati dei moduli (artifact), e analizzare con calma. Quando la scadenza non è rinviabile o il rilascio è troppo complesso per tornare indietro, il problema va risolto sul momento, anche a costo di un fermo più lungo.

Le persone. In quel caso tutte le persone utili alla soluzione, del proprio team e degli altri, per i servizi e per l'infrastruttura, devono essere disponibili al momento del passaggio in produzione, per affrontare insieme il problema (la cosiddetta war room). Anche questa disponibilità va pianificata.

Attività e servizi

  • Pipeline e rilasci su più ambienti
  • Monitoraggio e diagnosi dei problemi
  • Integrazione: Azure Functions e Service Bus
  • Dati: Stream Analytics e Azure Synapse
  • Rete e identità: Firewall, Application Gateway, Entra ID

Processi di sviluppo e rilascio

Gli strumenti sono utili quando si inseriscono nel processo reale del team.

Ho utilizzato Azure DevOps, Jira e SonarQube in organizzazioni molto diverse: da team che usano i work item come appunti condivisi a programmi Agile strutturati su più team. Ho lavorato sia con rilasci frequenti negli ambienti di test sia con verifiche concentrate alla fine dello sprint. In alcuni casi ho contribuito alla configurazione degli strumenti e delle pipeline; in altri mi sono inserito in processi già consolidati, collaborando con i team che ne avevano la responsabilità.

Il modo in cui assumo responsabilità in un progetto è descritto anche nella pagina sulle modalità di lavoro.

Esperienze collegate

Tre progetti mostrano contesti e ruoli diversi.

Elenco completo delle tecnologie

State sviluppando o evolvendo un'applicazione cloud?

Curriculum dettagliato e referenze su richiesta.