Articoli

Applicazione a 12 fattori (twelve-factor app)

La realizzazione di Software as a Service ( SaaS) è uno scenario sempre più frequente, pertanto nasce sempre più spesso la domanda : quale metodologia utilizzo per lo sviluppo?
Una delle risposte che troviamo è lo sviluppo Agile con framework come Scrum, ma Noi vi proponiamo un nuovo punto di vista per sviluppatori e DevOps chiamata “twelve-factor app“.

Twelve-factor App

La metodologia twelve-factor app si propone di riuscire a realizzare SaaS che:

  • minimizzano tempi e costi per nuovi sviluppatori;
  • sia portabili su varie piattaforme;
  • permettano il continuous deployment;
  • scalino efficientemente;
  • evitino i costi del software erosion

I 12 Fattori

  1. Codebase : un’unica base di codice, sotto versioning (utilizzando per es. GIT) in maniera da effettuare sviluppo costante e deplyment di funzionalità organizzate e strutturate;
  2. Dipendenze: le dipende del software devono essere chiare, note e ben isolate al fine di poterne controllare i processi evolutivi
  3. Configurazione: occorre mantenere le informazioni di configurazione all’interno dell’ambiente di sviluppo così potrai migliorarne la portabilità
  4. Backing Service: i servizi come un database SWL devono essere trattate come risorse dell’applicazione, così potrai ottenere scalabilità e portabilità
  5. Build, release, esecuzione: i processi devono essere distinti cosi da poter gestire le varie fasi in maniera strutturata, ciò facilità il DevOps
  6. Processi: l’applicazione deve essere realizzata in modo che permetta di operare in maniera stateless ( senza stato), vale a dire che ogni nodo è autosufficiente ed indipendente, per esempio dei dati
  7. Binding delle Porte: è l’estensione del concetto precedente relativo ai processi, l’applicazione deve essere indipendente anche dai servizi di esecuzione come un Web Server, deve in buona sostanza, grazie a esplicite dipendenze, aggiungere il layer del webserver e quindi rispondere semplicemente ad una determinata richiesta su una determinata porta.
  8. Concorrenza: possibilità di scalare efficientemente attraverso un modello di processo orizzontale, in pratica avviare più processi in modo da poterne gestire la singola esecuzione
  9. Rilasciabilità: processi di esecuzione avviabili velocemente e gestione dello stop, ciò garantisce la rilasciabilità intesa non come release dell’applicazione ma come rilascio del processo in modo da eseguire nuovi compiti o gestire le modifiche.
  10. Parità tra Sviluppo e Produzione: l’ambiente di sviluppo e produzione deve essere il più simile possibile così da migliore la gestione del tempo, delle risorse e della tecnologia.
  11. Log: gestire i log come stream di eventi
  12. Processi di Amministrazione: Eseguire i task di amministrazione/management come processi una tantum proprio per la gestione dell’applicazione.

Glue Labs

Sviluppiamo SaaS con garanzia 12 mesi da qualsiasi bug e ti forniamo supporto, assistenza e consulenza tecnica professionale per qualsiasi applicativo, inoltre realizziamo corsi di formazione avanzata orientati alla tue esigenze di business. Contattaci subito senza impegno per un preventivo gratuito.