The Twelve-Factor App

XII. Processi di Amministrazione

Esegui i task di amministrazione come processi una tantum

La “process formation” è l’array dei processi che vengono usati durante le normali operazioni dell’applicazione (ad esempio, la gestione delle richieste web). Non è tutto, però: ci sono dei task che lo sviluppatore può voler eseguire, una volta ogni tanto. Ad esempio:

Tali processi dovrebbero essere avviati in un ambiente identico a quello in cui lavorano gli altri nel contesto dell’applicazione. Dovrebbero essere eseguiti quindi su una specifica release, partendo dalla stessa codebase ed impostazioni di configurazione. Il codice per l’amministrazione dovrebbe inoltre essere incluso nel codice dell’applicazione, in modo tale da evitare qualsiasi problema di sincronizzazione.

La stessa tecnica di isolamento delle dipendenze dovrebbe poter essere usata allo stesso modo su tutti i processi. Ad esempio, se il processo web di Ruby può usare il comando bundle exec thin start, una migration del database dovrebbe poter usare bundle exec rake db:migrate senza problemi. Allo stesso modo, un programma Python che usa Virtualenv dovrebbe usare il bin/python per eseguire sia i server Tornado che processi di amministrazione.

La metodologia twelve-factor favorisce molto tutti quei linguaggi che offrono una shell REPL out of the box, rendendo quindi semplice l’esecuzione di script una tantum. In un deploy locale, gli sviluppatori possono invocare questi processi speciali tramite un semplice comando diretto. In un ambiente di produzione, invece, gli sviluppatori possono raggiungere lo stesso obiettivo tramite SSH o un qualsiasi altro sistema di esecuzione di comandi remoto.