2

The Twelve-Factor App (Questo testo è una traduzione della versione originale in...

 4 years ago
source link: https://12factor.net/it/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

The Twelve-Factor App (Questo testo è una traduzione della versione originale in inglese.)

The Twelve-Factor App

Introduzione

Nell’era moderna, il software viene fornito sempre più di frequente come servizio (delivered as a service): si parla di web app o software as a service (SaaS). La twelve-factor app è una metodologia di sviluppo orientata alla costruzione di applicazioni software-as-a-service che:

  • Seguono un formato dichiarativo per l’automazione della configurazione, minimizzando tempi e costi di ingresso per ogni sviluppatore che si aggiunge al progetto;
  • Si interfacciano in modo pulito con il sistema operativo sottostante, in modo tale da offrire la massima portabilità sui vari ambienti di esecuzione;
  • Sono adatte allo sviluppo sulle più recenti cloud platform, ovviando alla necessità di server e amministrazioni di sistema;
  • Minimizzano la divergenza tra sviluppo e produzione, permettendo il continuous deployment per una massima “agilità”;
  • Possono scalare significativamente senza troppi cambiamenti ai tool, all’architettura e al processo di sviluppo;

La metodologia twelve-factor può essere applicata a ogni software, scritto in qualsiasi linguaggio di programmazione, che fa uso di una serie di servizi come database, code, cache e così via.

Background

Chi ha scritto questo documento è stato coinvolto direttamente nella realizzazione e nel deployment di centinaia di applicazioni, e ha indirettamente assistito allo sviluppo, le operazioni e lo scaling di centinaia (o migliaia) di app tramite il proprio lavoro sulla piattaforma Heroku.

Questo documento riassume tutta quella che è stata la nostra esperienza, basata sull’osservazione di un grande numero di applicazioni SaaS. Si tratta di una “triangolazione” di pratiche di sviluppo ideali (con una particolare attenzione alla crescita organica dell’app nel tempo), la collaborazione dinamica nel corso del tempo tra gli sviluppatori sulla codebase e la necessità di evitare i costi di software erosion.

La nostra motivazione è di far crescere la consapevolezza intorno ad alcuni problemi sistemici che abbiamo scoperto nello sviluppo di applicazioni moderne, cercando di fornire un vocabolario condiviso per la discussione di tali problemi. Oltre, ovviamente, a offrire delle soluzioni concettuali a queste situazioni (senza però tralasciare il fattore tecnologia). Questo format si rifà ai libri di Martin Fowler Patterns of Enterprise Application Architecture e Refactoring.

A chi è destinato questo documento?

A ogni sviluppatore che costruisca applicazioni SaaS (Software As a Service), e a ogni ops che effettui il deploy e gestisca queste applicazioni.

I “Dodici Fattori”

I. Codebase

Una sola codebase sotto controllo di versione, tanti deployment

II. Dipendenze

Dipendenze dichiarate e isolate

III. Configurazione

Memorizza le informazioni di configurazione nell’ambiente

IV. Backing Service

Tratta i backing service come “risorse”

V. Build, release, esecuzione

Separare in modo netto lo stadio di build dall’esecuzione

VI. Processi

Esegui l’applicazione come uno o più processi stateless

VII. Binding delle Porte

Esporta i servizi tramite binding delle porte

VIII. Concorrenza

Scalare attraverso il process model

IX. Rilasciabilità

Massimizzare la robustezza con avvii veloci e chiusure non brusche

X. Parità tra Sviluppo e Produzione

Mantieni lo sviluppo, staging e produzione simili il più possibile

XI. Log

Tratta i log come stream di eventi

XII. Processi di Amministrazione

Esegui i task di amministrazione/management come processi una tantum

Written by Adam Wiggins
Last updated 2017

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK