Aggiornamenti dell'ecosistema senza downtime
(Sezione Ecosistema e Rete)
1) Scopo e principi zero-downtime
Gli aggiornamenti zero-downtime garantiscono il funzionamento continuo della rete e dei prodotti in caso di modifiche a codice, configurazione, schemi di dati e protocolli. Principi di base:- Compatibilità avanti/indietro (backward/forward) ai limiti dei contratti.
- Gradualità (progressive delivery) anziché «grande cambio».
- Osservabilità e reversibilità: metriche, tracciabili, rapido ritorno.
- Idipotenza e retrai sicuri per i flussi di rete e di pagamento.
- Isolamento dei guasti: architettura cell, circuito-breakers, limiti di fan-out.
2) Strategie di rilascio senza downtime
Blue-Green - Due pile identiche (Blue = prod, Green = new). Il traffico si sposta atomonicamente a livello di bilanciatore con possibilità di ripristino istantaneo.
Canary è una quota di traffico graduale (1%→5%→20%→50%→100%) con gate SLO.
Rolling - Aggiorna il pool a nodi con il controllo di preparazione e il drenaggio delle connessioni.
Shadow/Traffic Mirroring - Mirroring delle richieste di una nuova versione senza influire sulle risposte.
Feature Flags - Commutazione del Fich su API invariata (gradual rollout).
Dark Launch - Includere rami nascosti di logica per la telemetria e la profilassi.
Raccomandazione: per i servizi critici - combinazione canary + rolling + feature flags; per gateway e API - blue-green con failover breve.
3) Compatibilità contrattuale (API/eventi/protocollo)
API: versioning per URI/intestazione; aggiungere campi è valido, eliminare/rinominare solo mediante la finestra di deprecazione.
Eventi (event-bus) - Aggiunge solo campi. le chiavi sono immutabili; nuovi tipi - come nuovi argomenti/versioni.
Schemi (Avro/JSON-Schema/Protobuf) - Registro di sistema, compatibilità "BACKWARD" FULL ".
Protocollo di rete/P2R: versione handshake e capability negotion (i nodi dichiarano versioni/fitch supportate).
Gateways - Adattatori tra vN e vN+1 (trascoding/field mapping) per il periodo di migrazione.
Criterio di deprecazione (esempio) - L'annuncio dei giorni di avviso la casella di controllo «deprecated» consente di eliminare il campo/endpoint.
4) Migrazione dei dati senza interruzione (Expand → Migrate → Contract)
1. Expand - Aggiungi nuove strutture/indici/colonne (nullable/c default), doppio (dual-write) al formato vecchio e nuovo.
2. Migrate - migrazioni di sfondo, backfill, validatori di consistenza; lettura tramite scheda che supporta entrambi gli schemi.
3. Contract - Disabilita la lettura/scrittura nel vecchio schema, rimuove il debito tecnico al termine della «finestra di deprecazione».
sql
-- Expand
ALTER TABLE payouts ADD COLUMN payout_ref TEXT NULL;
CREATE INDEX CONCURRENTLY ix_payouts_ref ON payouts(payout_ref);
-- Migrate (batch + idempotent)
UPDATE payouts SET payout_ref = concat('ref_', id) WHERE payout_ref IS NULL;
-- Contract (after compatibility window)
ALTER TABLE payouts ALTER COLUMN payout_ref SET NOT NULL;
Transazionalità eventi: utilizzare Outbox (transazione con record evento) + CDC per la consegna garantita.
5) Composti a lunga durata e drenaggio
Graceful shutdown: SIGTERM ha deciso di interrompere l'accettazione di nuove richieste, di esporre «readava= fail» in attesa del drenaggio WebSocket/HTTP2/QUIC-Striam.
Connection draining sul bilanciatore: 'deregister _ delay' 30-120 s, sticky-sessioni via token, non IP.
Back-pressure - Limita i nuovi upstream quando p99 _ latency cresce.
6) Versioning SDK e client
SemVer per SDK; Un ramo LTS con finestra di supporto avanzata (ad esempio 12 mesi).
Policy: «almeno due versioni minori attive» telemetria per la quota di clienti in versione; avvisi automatici di upgrade.
Modifiche critiche: flag forzato per disattivare le versioni precedenti dal gateway dopo la deadline.
7) Aggiornamenti di protocolli e siti di rete
Soft-fork espande le regole senza violare i vecchi nodi (capabilities).
Hard-fork: finestra preannunciata, doppia validazione, «validatori canari», protezione da conflitti «reorg/rollback», time-lock per l'attivazione.
Update a catena crociata: i ponti governance trasmettono segnali di attivazione; in caso di rassincronizzazione - circuito-breaker locale.
8) Configurazioni e segreti come dati
Config-service centralizzato con versioning, firme digitali e recupero.
Secret rotation senza downtime: doppie chiavi (old/new), attivazione alternata; zero interruzioni per KMS/PKI.
Feature-flags in uno store separato, controllo di attivazioni/disattivazioni.
9) Rilascio pipeline e «gate» automatici
Стадии: build → unit → security scan → e2e/stage → shadow → canary → 100%.
Le fermate gate:- Errore-budget burn-rate, p95/p99 latency, errato-rate, riduzione di success-rate eventi/pagamenti, crescita delle code dead-letter.
- Ritorno automatico in caso di violazione dello SLO in uno qualsiasi dei passaggi.
yaml release:
strategy: canary steps:
- name: shadow traffic_mirror: 5%
gates: [no_data_loss, no_pii_leak]
- name: canary_1 traffic: 1%
gates: [error_rate<0. 2%, p99<400ms]
- name: canary_2 traffic: 10%
gates: [slo_ok_1h, zero_deadletters]
- name: rollout traffic: 100%
gates: [stability_6h]
- name: bake duration: 24h action: finalize_or_rollback
10) Osservabilità e SLO per le release
SLI chiave:- p95/p99 latency per endpoint; errore-rate (5xx + fatali 4xx); success-rate eventi la quota dei retrai; La lega delle code; «relay» in P2P; La quota di clienti delle versioni.
- p99 API da 400 ms; error-rate ≤ 0. 2%; success-rate eventi ≥ 99. 5%; Coda ≤ 2 c; MTTR ≤ 15 minuti
- Dashboard release: confronto «prima/dopo», canaretti, mappa delle dipendenze (service map), alert burn-rate 1h/6h.
11) Rimborsi e «kill-switch»
Autotrasporto - Conservare gli ultimi manufatti «buoni» e confighi; rollback a 1 pulsante sul bilanciatore (Blue←Green).
Partial rollback: la ficcaflag spegne la nuova logica mantenendo il binario.
Data rollback: solo per «read-paths» write-paths - Migrazioni protette (non eliminare mai le vecchie colonne prima della fine della finestra).
Kill-switch - Flag centralizzato per disattivare il sottosistema instabile.
12) Test senza interruzioni
Test di protesi contrattuali contro il client (consumer-driven).
Test schemici di compatibilità (schema-compat).
Test Chaos in stejing: interruzione del% dei nodi/regioni, degrado DHT/TURN/KMS/DNS, «tempesta di retrai».
Test di carico/rimarket: regioni canarie e rotte calde.
13) Regolamenti delle comunicazioni e della compilazione
Note di rilascio: cosa cambia, impatto, finestre/deadline del deprecato, azioni per i partner.
La SLA risponde agli incidenti: MTTA 5 min, primo update stato 15 min, post mortem 72 h.
Controllo tracce: associa tutte le modifiche config e i comunicati a richieste/suggerimenti, firma artefatti.
14) Casi speciali
Flussi di pagamento/finanza: idemoticità rigorosa, dedotto idempotency-key, outbox + CDC, migrazioni «non distruttive» solo.
WebSocket/striam: versione del protocollo in handshake, riassunto con riassunto (resume tokens).
Cache/edge: 'stale-while-revalidate', doppie versioni della cache, igiene TTL durante la release.
Clienti mobili: rollout graduale negli store, update forzati nelle edizioni di sicurezza.
15) Assegno-foglio zero-downtime
1. Compatibilità contrattuale e registro di sistema configurati.
2. Expand→Migrate→Contract descritto e automatizzato.
3. Equilibrio/Ingress supporta le connessioni blue-green e drenaggio.
4. Canary-pipline con SLO-gate e auto-recupero.
5. Feature-flags e kill-switch sono disponibili 24/7.
6. Outbox + CDC e idempotenza sono inclusi per tutti i percorsi write.
7. I Dashboard «release-health» e gli alert burn-rate sono attivi.
8. Le comunicazioni e le politiche di deprecazione sono preannunciate ai partner.
9. Le prove settimanali sono state ritirate; chaos-day trimestrale.
16) Glossario
Progressive delivery - rilascio graduale con controllo dei rischi.
Schema registry - Archivio versioni diagrammi con criteri di compatibilità.
Outbox/CDC è il modello di pubblicazione garantita degli eventi dalle transazioni.
Blue-Green sono stack paralleli con cambio di traffico atomico.
Canary è l'aumento progressivo della quota di traffico sulla nuova versione.
Graceful shutdown/draining - Completamento corretto delle connessioni attive.
Il risultato è che il downtime zero non è un trucco, ma un sistema: contratti, compatibilità dei circuiti, strategie di rilascio graduali, osservabilità, migrazioni sicure e ritorno garantito. Seguendo questo framework, l'ecosistema viene aggiornato in modo rapido, prevedibile e privo di dolore per utenti e partner.