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
- 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;
- Dipendenze: le dipende del software devono essere chiare, note e ben isolate al fine di poterne controllare i processi evolutivi
- Configurazione: occorre mantenere le informazioni di configurazione all’interno dell’ambiente di sviluppo così potrai migliorarne la portabilità
- Backing Service: i servizi come un database SWL devono essere trattate come risorse dell’applicazione, così potrai ottenere scalabilità e portabilità
- Build, release, esecuzione: i processi devono essere distinti cosi da poter gestire le varie fasi in maniera strutturata, ciò facilità il DevOps
- 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
- 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.
- Concorrenza: possibilità di scalare efficientemente attraverso un modello di processo orizzontale, in pratica avviare più processi in modo da poterne gestire la singola esecuzione
- 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.
- 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.
- Log: gestire i log come stream di eventi
- 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.