Sobes.tech
Middle+

Puoi spiegare cos'è uno shutdown ordinato e dove viene applicato?

sobes.tech AI

Risposta dell'AI

Lo shutdown graduale è un processo di chiusura corretta dell'applicazione, che permette di completare le operazioni in corso, liberare risorse e salvare lo stato prima di fermarsi.

Applicazioni dello shutdown graduale:

  • Distribuzione di nuove versioni dell'applicazione: Permette di sostituire senza problemi la vecchia versione con quella nuova, senza perdita di dati o interruzioni delle sessioni utente.
  • Riavvii pianificati o manutenzione tecnica: Garantisce che tutte le connessioni aperte siano chiuse e i compiti completati prima di fermare il servizio.
  • Risposta a guasti o scalabilità: In caso di riduzione del carico o problemi, i servizi possono essere fermati correttamente.

Esempio di implementazione in Node.js:

// process.js
const http = require('http');

const server = http.createServer((req, res) => {
  setTimeout(() => {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello, World!\n');
  }, 2000); // Simulazione di un'operazione lunga
});

server.listen(3000, () => {
  console.log('Server in ascolto sulla porta 3000');
});

// Gestore del segnale SIGTERM per lo shutdown graduale
process.on('SIGTERM', () => {
  console.log('Segnale SIGTERM ricevuto. Chiusura del server...');
  server.close(() => {
    console.log('Server chiuso. Uscita dal processo.');
    process.exit(0);
  });

  // Forzare la chiusura dopo un certo tempo se la chiusura si ritarda
  setTimeout(() => {
    console.error('Chiusura forzata...');
    process.exit(1);
  }, 5000); // 5 secondi
});

Nell'esempio, al ricevimento del segnale SIGTERM, il server smette di accettare nuove connessioni, ma permette a quelle già stabilite di terminare. Dopo il tempo stabilito, avviene una chiusura forzata nel caso in cui la chiusura si protragga troppo a lungo.