• Collegamento a LinkedIn
  • Collegamento a Youtube
  • Collegamento a Facebook
Kinetikon S.r.l. - Torino - +39 011 0122340
Kinetikon
logo
  • Formazione per aziende
      • Formazione ICT
          • AI & Machine Learning Engineering
          • AI Literacy & Strategy
          • Backend Development
          • Business & Collaboration Platform
          • Cloud Native & Container Management
          • Cloud Platform Administration
          • Cybersecurity Fundamentals
          • Data & Business Intelligence
          • Database Management & Administration
          • Defensive Security & Operations
          • Digital Marketing
          • Frontend & Web Application Development
          • Governance & Compliance
          • IT Observability & Monitoring
          • Metodologie Agile & DevOps
          • Offensive Security & Penetration Testing
          • Project & IT Service Management
          • Strumenti e framework per lo sviluppo
          • System Network & Operations
        • Scarica il catalogo ICT & AI
      • Soft Skills for Tech People
          • Age Diversity Management
          • Comunicazione efficace per Team Tech
          • Cultura DE&I e Parità di Genere: strumenti per prepararsi alla certificazione UNI/PdR 125:2022
          • Cyber Crisis Communication
          • Gestione dello stress e sicurezza psicologica
          • La cultura del feedback nei team tech
          • Leadership Management
          • Product Mindset per Developer
          • Sviluppo strategico per team tech
        • Scarica il Catalogo – Soft Skill for Tech People
      • Formazione e-learning
        • Utilizzo consapevole dell’Intelligenza Artificiale
        • Cyber Security Awareness
        • Project Management Overview
        • Introduzione alla sostenibilità aziendale
        • Privacy & GDPR
        • Scarica il Catalogo dei corsi E-learning
      • Formazione certificata
        • Intelligenza Artificiale
          • Artificial Intelligence for Business Professional – AIBIZ
          • Generative AI for Business Professional
        • Cyber Security
          • CompTIA Security+
          • CompTIA PenTest+
          • CompTIA CySA+
        • Project & IT Service Management
          • ITIL® Foundation (Version 5)
          • ITIL® 4 Foundation
          • PRINCE2® – Foundation
          • PRINCE2® – Practitioner
          • ISIPM Base
          • Professional Scrum Product Owner I (PSPO I)
          • Professional Scrum Master I (PSM I)
          • Professional Scrum Master II (PSM II)
        • Scarica il Catalogo dei corsi con Certificazione
      • Sicurezza
          • Accordo Stato Regioni
          • Agenti Biologici e chimici
          • Agenti fisici
          • Antincendio
          • Attrezzi di sollevamento
          • BLSD
          • DPI
          • HACCP
          • LOTO
          • Mezzi di movimentazione
          • PES-PAV - PEI
          • Primo soccorso
          • RLS
          • Spazi confinati
        • Scarica il Catalogo – Salute e Sicurezza sul lavoro
  • Consulenza
      • Servizi IT
        • Penetration test
        • Fractional IT Manager
        • Consulenza gestionale per MSP e MSPP
        • Microsoft 365 & Security
        • Google Workspace Administration
      • Organizzativa
        • Project Management
        • Progettazione della formazione
        • Formazione Finanziata
      • Normativa
        • GDPR & DPO
        • ISO/IEC 27001
  • Info utili e Risorse
      • Contatti e info aziendali
        • Chi siamo
        • Contatti
        • Lavora con noi
      • Risorse Gratuite
        • Blog
  • Partnership e Accreditamenti
      • Partnership
        • Partner Accreditato PeopleCert
        • CertNexus Authorized Training Partner
        • CompTIA Authorized Delivery Partner
        • Red Hat Ready Business Partner
      • Accreditamenti
        • Ente accreditato dalla Regione Piemonte
        • Fondimpresa – Soggetto proponente qualificato
        • Fondirigenti – Soggetto proponente
        • Fondo Conoscenza – Soggetto Proponente
  • Menu Menu
Sei in: Home1 / Coding & Programming2 / Metodologia 12 Factor App: Sviluppo Saas
17 Novembre 2021

Metodologia 12 Factor App: Sviluppo Saas

Il Saas (Software-as-a-service) ha visto, negli ultimi vent’anni, una crescita esponenziale, grazie soprattutto alle caratteristiche vantaggiose che presenta, come ad esempio le condizioni di flessibilità, scalabilità e facilità di implementazione e configurazione rapida.

Questo scenario di sviluppo sempre più frequente ha però sollevato in particolare una domanda.

Quale metodologia usiamo per lo sviluppo?

Abbiamo illustrato in precedenza framework di sviluppo del software Agili, quali ad esempio Scrum, ma in questo articolo ci dedichiamo ad una metodologia pensata soprattutto per sviluppatori e DevOps che si chiama “12 Factor App”.

Iniziamo con una definizione del contesto di sviluppo: il Saas è un modello di distribuzione del software nel quale l’hosting delle applicazioni è eseguito da un rivenditore o fornitore di servizi e reso disponibile per i clienti sulla rete. La metodologia Twelve Factor App si orienta in modo specifico a questa tipologia di applicazioni, con l’obiettivo di ridurre tempi e costi di sviluppo, garantire la piena compatibilità esternamente su varie piattaforme e internamente con le versioni precedenti, creare sistemi leggeri e scalabili con un utilizzo ridotto di risorse.

12 factor App: introduzione

Presentata per la prima volta nel 2011 da Adam Wiggins, la metodologia Twelve Factor App è stata progettata dagli sviluppatori per gli sviluppatori.

Si tratta infatti di una serie di best practices che hanno come obiettivo finale la progettazione di Saas che:

  • Minimizzano tempi e costi di ingresso per ogni sviluppatore che si aggiunge al progetto;
  • Offrono la massima portabilità sui vari ambienti di esecuzione;
  • Sono adatte allo sviluppo sulle più recenti piattaforme cloud;
  • Permettono il continuous deployment;
  • Scalano in modo significativo.

> Leggi anche: “Metodo CI/CD: una best practice DevOps”

Metodologia 12 factor app - sviluppo applicazioni saas

I 12 fattori o principi:

  1. Codebase – Una sola codebase sotto controllo di versione, tanti deploy

Il primo principio afferma che tutti gli asset legati ad un’applicazione, dal codice sorgente alle impostazioni di configurazione, devono essere depositati in una code repository che sia accessibile a chi sviluppa, a chi è dedicato al test e ai sistemisti. La code repository deve anche essere accessibile agli script di automazione dei processi di CI/CD (Continuous Integration/Continuous Delivery) che fanno parte del Software development lifecycle (SDLC)

> Leggi anche: “Secure SDLC: Integrazione della Sicurezza nel Ciclo di Sviluppo del Software”

  1. Dipendenze – Dipendenze dichiarate e isolate

Il principio delle Dipendenze dichiara che solo il codice che è unico e rilevante allo scopo dello sviluppo dell’applicazione deve essere depositato. Packaging esterni come file .jar o DLL devono essere tutte dichiarate tramite un manifest dedicato. Viene contemplato anche l’uso di uno strumento di isolamento delle dipendenze durante l’esecuzione, in modo tale da assicurarsi che non ci siano delle “dipendenze implicite” che creino interferenze nel sistema di riferimento.

  1. Configurazione – Memorizza le informazioni di configurazione nell’ambiente

Il terzo principio stabilisce che le informazioni di configurazione devono essere memorizzate in variabili d’ambiente (env vars o env). La configurazione di un’applicazione è tutto quello che può variare da un deployment all’altro: impostazioni come il numero di porta, le dipendenze sugli URLs e le impostazioni di stato, come il DEBUG, devono esistere separatamente ed essere applicate esclusivamente in fase di deployment. Il vantaggio di questo principio è proprio quello di poter utilizzare e gestire in modo indipendente le diverse impostazioni di configurazione rispetto al path di deployment: si potrebbe avere, ad esempio, un set di impostazioni di configurazione per l’ambiente di staging, uno per la produzione e uno per l’ambiente di sviluppo.

  1. Backing Service – Tratta i backing service come risorse

Un backing service è un qualsiasi servizio a cui l’applicazione accede attraverso la rete durante la sua esecuzione, come ad esempio database, servizi SMTP per la posta, sistemi di cache ecc.

Il principio backing services incoraggia a trattare risorse esterne, siano esse locali o di terze parti, come risorsa connessa. Trattare le risorse come backing service promuove la flessibilità e l’efficienza nel ciclo di vita di sviluppo del software ed evidenzia la separazione dal deployment di riferimento.

  1. Build, release, esecuzione – Separare in modo netto lo stato di build dall’esecuzione

Il principio build – release – esecuzione, divide il processo di deployment in 3 step replicabili che possono essere istanziati in ogni momento. La fase di Build converte il codice del repo in una build “eseguibile”. Le impostazioni vengono applicate nella fase di release. Poi, nella fase di esecuzione (o runtime) si vede l’applicazione in esecuzione nell’ambiente di destinazione, attraverso l’avvio di processi della release scelta. Il vantaggio di questo principio è proprio la separazione netta dei 3 stati: è impossibile, ad esempio, effettuare dei cambiamenti del codice in fase di esecuzione, dato che non c’è modo di propagare queste modifiche all’“indietro”, verso la fase di build.

  1. Processi – Esegui l’applicazione come uno o più processi stateless

Il principio dei Processi afferma che ogni applicazione sviluppata con la metodologia 12 Factor App sarà eseguita come una serie di processi stateless. Questo significa che nessun processo singolo tiene traccia dello stato di un altro processo e che nessun processo tiene traccia di informazioni di sessione o stato del workflow. Tutti i dati che devono persistere saranno memorizzati in un backing service, come ad esempio un database. Un processo stateless rende la scalabilità più facilmente raggiungibile.

  1. Binding delle Porte – esporta i servizi tramite binding delle porte

Questo principio dichiara che un servizio o applicazione è identificabile sulla rete dal numero di porta e non dal nome dominio. L’argomentazione a supporto è che il nome dominio e l’indirizzo IP ad esso associato, possono essere assegnati sul momento in modo manuale oppure in modo automatico: viene quindi considerato inaffidabile utilizzarli come punto di riferimento. Al contrario, l’esposizione di un servizio o di un’applicazione sulla rete tramite numero di porta è più affidabile e più facile da gestire.

L’idea principale che sta dietro al principio di binding delle porte è che uniformare l’utilizzo del numero di porta è il miglior modo di esporre un processo sulla rete: ad esempio la porta 80 è convenzionalmente legata all’HTTP, 443 è il numero di porta di default dei protocolli HTTPS, 22 per gli SSH, la porta 306 è quella di default per MySQL e così via.

  1. Parallelismo – Scalare attraverso il modello di processo

Il principio di parallelismo si raccomanda l’organizzazione dei processi rispetto al loro scopo e la separazione di questo processo in modo che possano essere scalati in modo indipendente e al bisogno. Il modello di processo così come presentato rende il massimo quando arriva il momento di scalare. La natura orizzontalmente partizionabile (e non soggetta a condivisioni) di un processo twelve-factor permette di gestire il parallelismo in modo semplice e affidabile.

  1. Disposability – Massimizzare la robustezza con avvii veloci e shutdown graduali

Il principio di disposability afferma che i processi di un’applicazione twelve-factor possono essere avviati o fermati senza problemi al momento del bisogno. Questo significa che tutto il setup necessario deve essere completato prima di rendere l’applicazione disponibile allo user finale. Questo principio facilita le procedure di scaling, deploy rapido della codebase o cambi dei file di configurazione e minimizza i tempi di avvio.

  1. Parità tra Sviluppo e Produzione – Mantieni lo sviluppo, staging e produzione il più simili possibile

Un’applicazione twelve-factor è progettata per il rilascio continuo: in questo modo tiene le differenze di deployment al minimo. Il principio si assicura che sia implementato lo stesso processo di deployment sia per la produzione che per lo Sviluppo.

  1. Log – Tratta i log come stream di eventi

Questo principio tratta dell’invio di dati di log in uno stream accessibile ad una serie di consumer interessati. Il processo di instradamento dei dati log deve essere separato dall’elaborazione dei dati di log stessi. Ad esempio: un consumer potrebbe solo essere interessato ai dati errore, mentre un altro solo ai log degli eventi di archiviazione.

  1. Processi di Amministrazione – esegui i task di amministrazione come processi una tantum

Questo principio indica che i processi di amministrazione sono first-class citizens nel SDLC (Software Development Lifecycle) e devono essere trattai come tali. I processi di amministrazione dovrebbero essere avviati in un ambiente con le stesse caratteristiche di quello su cui lavorano gli altri processi e dovrebbero essere eseguiti su una specifica release.

I principi della metodologia 12 Factor app sono progettati per permettere a sviluppatori e DevOps di creare applicazioni eseguibili su web-scale. Inizialmente possono sembrare insormontabili e per tanti aspetti, lo sono: dover ripensare dal principio a come si progettano software, può essere scoraggiante. Fortunatamente, l’implementazione dei principi 12 Factor App non è una questione “tutto o niente”: la metodologia permette l’applicazione parziale o di singoli principi. Molte aziende hanno tratto benefici dalla metodologia twelve factor app: il trucco è impegnarsi a seguirli tutto e poi fare il primo passo.

Fonti:

Reselman, B., 2021. An illustrated guide to 12 Factor Apps. [online] redhat.com. Disponibile su: https://www.redhat.com/architect/12-factor-app [Ultimo accesso 17 Novembre 2021].
Wiggins, A., 2021. The Twelve-Factor App. [online] 12factor.net. Disponibile su: https://12factor.net/ [Ultimo accesso 16 Novembre 2021].

Condividi questo articolo
  • Condividi su Facebook
  • Condividi su WhatsApp
  • Condividi su LinkedIn
  • Condividi attraverso Mail

Potrebbe interessanti anche:

  • Fondimpresa: Avviso 3/2026 – Innovazione25/06/2026 - 08:56
  • Aggregatori IA per PMI: che cosa sono e come sceglierli23/06/2026 - 08:22
  • Learning Agility nei team tech: il segreto per l’upskilling15/06/2026 - 11:40
  • Le soft skill più richieste nel 2026: guida per HR nell’era dell’Intelligenza Artificiale nel settore IT09/06/2026 - 14:38
  • Automazione dei processi aziendali: Agenti IA vs. RPA03/06/2026 - 16:41
  • Mappatura e automazione dei processi aziendali nell’era dell’Agentic AI26/05/2026 - 08:07
  • Il Feedback nei team tech e team asincroni: tecniche e strategie19/05/2026 - 10:06

Iscriviti alla newsletter

Resta sempre aggiornato sulle ultime news del mondo IT e della formazione finanziata!

Scopri le altre tematiche:

  • Cloud (21)
  • Coding & Programming (20)
  • Cyber Security (45)
  • Data Analysis e Business Intelligence (11)
  • Eventi (1)
  • Fondimpresa (11)
  • Fondirigenti (3)
  • Formazione (26)
  • industria 4.0 (4)
  • Intelligenza Artificiale e Machine Learning (52)
  • ITSM (25)
  • LMS e E-learning (6)
  • News (212)
  • Project Management (12)
  • Red Hat (5)

KINETIKON S.R.L.

Via Verolengo 29/9 – 10149 Torino
Tel. +39 011 0122340
Fax +39 011 19213523

Via Asi Asse Attrezzato 11 – 03013 Ferentino (FR)
Tel. +39 0775 1741757

email: info@kinetikon.com
pec: kinetikon@pec.it

P. IVA 08061210012
Rea: 944416

La tua iscrizione non può essere convalidata.
La tua iscrizione è avvenuta correttamente.

Iscriviti alla newsletter

Informative: 

Privacy Policy
Cookie Policy

Politica per la Qualità

Codice Etico

Procedura Whistleblowing

Whistleblowing

Kinetikon è certificata ISO 9001

Azienda certificata ISO 9001
Certificato n° IT25-27302A

Chi siamo

Aiutiamo le aziende ad ottenere il meglio dal proprio ambiente IT. Attraverso lo sviluppo di competenze del personale e il potenziamento dei singoli componenti infrastrutturali, il tuo ambiente IT sarà pronto a scalare e ad innovare con te, a qualunque velocità o livello di complessità tu intenda andare.

© Copyright - KINETIKON s.r.l. - Capitale Sociale: 10.000 €
  • Collegamento a LinkedIn
  • Collegamento a Youtube
  • Collegamento a Facebook
Collegamento a: L’interattività nei corsi e-learning: livelli e vantaggi Collegamento a: L’interattività nei corsi e-learning: livelli e vantaggi L’interattività nei corsi e-learning: livelli e vantaggiInterattività nei corsi e-learning Collegamento a: 12 Trend Tecnologici per il 2022 Collegamento a: 12 Trend Tecnologici per il 2022 Trend tecnologici per il 202212 Trend Tecnologici per il 2022 Scorrere verso l’alto Scorrere verso l’alto Scorrere verso l’alto