Percorso 04Lezione 5 / 10

Progetta software per un ambiente cloud native

Collega infrastruttura ripetibile, processi sostituibili, stato persistente e comportamento osservabile. Valuta il cloud native oltre il packaging in container.

Pratico12 minRevisionato

Pubblicato da Come scriviamo

Verifica cosa hai capitoDopo un guasto, la piattaforma sostituisce un worker dei report. Cosa rende sicuro il nuovo tentativo?Svolgi l'esercizio
Dopo un guasto, la piattaforma sostituisce un worker dei report. Cosa rende sicuro il nuovo tentativo?

Cosa imparerai

  • Distinguere il packaging in container dal comportamento cloud native.
  • Individuare rischi legati a stato, nuovi tentativi e sostituzione in un servizio generato.
  • Definire un contratto di piattaforma verificabile da agenti e persone.

Definisci il comportamento necessario

Le pratiche cloud native aiutano a rendere ripetibili sviluppo e gestione operativa in ambienti pubblici, privati o ibridi. La CNCF mette in evidenza sistemi che restano gestibili, osservabili e resilienti mentre cambiano. Container e orchestrazione possono aiutare. Da soli non dimostrano tutte queste proprietà.

Parti da un servizio fittizio di report. Uno strumento AI crea un endpoint, un worker e un’immagine container. Una dimostrazione produce il PDF corretto. Prima della produzione, il team deve rispondere a un’altra domanda: cosa accade quando la piattaforma sostituisce il worker durante un job?

È una domanda di progettazione applicativa oltre che infrastrutturale. Un riavvio può ripristinare un processo perdendo però il lavoro incompleto.

Separa il processo dallo stato persistente

Il prototipo conserva job in coda e report completati sul disco del container. Sostituire il container può rimuovere entrambi. Aggiungere worker può anche produrre risposte diverse a seconda di quale worker riceve la richiesta.

Il progetto rivisto usa un archivio persistente dei job e un object store approvato. Una richiesta registra l’identità del job. Un worker prende in carico il job, crea il risultato e ne registra la posizione. I controlli di accesso valgono anche quando un utente scarica il report.

AspettoDomanda per il servizio di report
StatoQuali record devono sopravvivere alla sostituzione del processo?
ConfigurazioneCome funziona lo stesso artefatto in ogni ambiente?
IdentitàQuale identità di servizio può leggere il job e scriverne il risultato?
Stato di saluteIl worker può accettare lavoro e completarlo?
ArrestoCosa accade a un job preso in carico quando il worker si ferma?
CapacitàQuale limite interviene prima: worker, database, storage o un altro servizio?

Mantieni i segreti fuori dall’immagine. Forniscili tramite il sistema approvato per i segreti. Registra quali modifiche di configurazione richiedono un nuovo rilascio o il riavvio del processo.

Progetta i nuovi tentativi prima di aggiungere worker

Supponi che il worker salvi un PDF e poi si fermi prima di confermare il job. La coda consegna di nuovo il job. Un secondo tentativo non deve creare un secondo addebito al cliente o inviare messaggi di completamento in conflitto.

Usa un’operazione idempotente dove opportuno. Ripetere la stessa richiesta logica deve conservarne l’effetto previsto. Definisci un’identità stabile della richiesta, registra il risultato in modo persistente e verifica cosa accade in ogni punto di guasto. AWS descrive la tecnica nella guida ai nuovi tentativi sicuri.

Anche i nuovi tentativi richiedono limiti. Usa un timeout, un numero massimo di tentativi e un ritardo che eviti richieste ripetute simultanee. Conserva il lavoro fallito per esaminarlo invece di riprovarlo all’infinito.

Rendi revisionabile lo stato desiderato

Una configurazione dichiarativa descrive il deployment previsto. Un controller lavora per mantenere quello stato. Per esempio, un Kubernetes Deployment gestisce repliche applicative e aggiornamenti controllati. L’applicazione deve comunque gestire correttamente la sostituzione.

Versiona la configurazione infrastrutturale e applicativa. Revisiona le modifiche con il normale processo di consegna. Osserva completamento effettivo dei job, tempo di permanenza in coda, guasti e limiti delle dipendenze. Un processo in esecuzione può comunque non riuscire a produrre un report.

Scegli una piattaforma che il team possa gestire

Il cloud native non richiede che ogni applicazione diventi un insieme di microservizi. Un’applicazione modulare su un runtime gestito può soddisfare i requisiti. Più servizi introducono più interfacce, decisioni di deployment e lavoro operativo.

Fornisci all’agente di sviluppo il contratto effettivo della piattaforma: runtime previsto, metodo di identità, servizi dati, regole di deployment e prove richieste. Verifica interruzione e sostituzione insieme alle richieste riuscite. Prosegui con disponibilità e confini di guasto.

Svolgi l'esercizio

Un servizio fittizio di report conserva job e file completati sul disco del container. Disegna il flusso di richiesta, job, file e download. Indica lo stato che deve persistere. Definisci cosa accade se il worker si ferma dopo aver scritto un file ma prima di confermare il job.

Scarica la scheda di lavoro (Markdown)
Verifica cosa hai capito ↑

Continua a imparare

Fonti e approfondimenti

Letture correlate di Taiga

← Lezione precedente: Definisci l'infrastruttura oltre il prototipo