I Dodici Fattori
I 12 Fattori di sviluppo(The Twelve-Factor App) sono un insieme di principi per lo sviluppo di applicazioni moderne, scalabili e mantenibili, ideati da sviluppatori di Heroku
I 12 Fattori di Autenticazione (The Twelve-Factor App) sono un insieme di principi per lo sviluppo di applicazioni moderne, scalabili e mantenibili, ideati da sviluppatori di Heroku. Questi principi sono particolarmente utili per le applicazioni cloud-native e aiutano a standardizzare le pratiche di sviluppo, deployment e scalabilità delle applicazioni.
Ecco una panoramica dei 12 fattori:
- Codebase (Base di Codice):
- Un'unica base di codice tracciata in un sistema di controllo delle versioni, con molteplici deploy.
- Dependencies (Dipendenze):
- Dichiarare esplicitamente e isolare le dipendenze. Le dipendenze dell'applicazione devono essere dichiarate esplicitamente nel manifesto delle dipendenze e isolate rispetto all'ambiente di runtime.
- Config (Configurazione):Conservare la configurazione nell'ambiente. La configurazione che varia tra i deploy deve essere archiviata negli environment variables.
- Backing Services (Servizi di Supporto):
- Trattare i servizi di supporto come risorse collegate. Tutti i servizi di supporto, come database, code di messaggi o servizi esterni, devono essere trattati come risorse collegate all'applicazione tramite URL o stringhe di connessione.
- Build, Release, Run (Costruzione, Rilascio, Esecuzione):
- Separare rigorosamente i passaggi di costruzione e rilascio dall'esecuzione.
- Processes (Processi):
- Eseguire l'applicazione come uno o più processi stateless. I processi devono essere senza stato, con qualsiasi dato persistente archiviato in un backing service.
- Port Binding (Binding delle Porte):
- L'applicazione deve essere completamente self-contained, legando le porte e non dipendendo dal web server di runtime esterno.
- Concurrency (Concorrenza):
Scalare tramite il modello di processi. Utilizzare processi che possono essere replicati per gestire l'aumento della domanda. - Disposability (Disponibilità):
- Massimizzare la robustezza con avviamento e spegnimento veloci. I processi devono essere robusti e capaci di avviarsi e spegnersi velocemente.
- Dev/Prod Parity (Parità tra Dev e Prod):
- Mantenere il divario tra sviluppo e produzione il più sottile possibile. Mantenere parità tra gli ambienti di sviluppo, staging e produzione per minimizzare i bug e le discrepanze.
- Logs (Log):
- Trattare i log come flussi di eventi. I log dell'applicazione devono essere trattati come flussi di eventi che possono essere inoltrati a un sistema di gestione dei log per l'analisi e l'archiviazione.
- Admin Processes (Processi Amministrativi):
- Eseguire processi amministrativi e di gestione come processi singoli una tantum. Le attività amministrative, come migrazioni del database, devono essere eseguite come processi una tantum, separati dai processi dell'applicazione principale.
Questi 12 fattori aiutano a garantire che le applicazioni siano facilmente scalabili, facili da mantenere e gestire, e pronte per l'implementazione continua su piattaforme cloud.