Team
AWS consiglia di organizzare tre team di sviluppatori per l'implementazione di un ambiente CI/CD: un team delle applicazioni, un team dell'infrastruttura e un team degli strumenti (fai riferimento alla figura seguente). Questa organizzazione rappresenta un insieme di best practice che sono state sviluppate e applicate nelle startup in rapida evoluzione, nelle grandi organizzazioni aziendali e nella stessa Amazon. Il numero dei membri di un team non dovrebbe superare il numero di persone che possono essere sfamate da due pizze, ovvero circa 10-12 persone. Ciò segue la regola di comunicazione secondo cui le conversazioni significative raggiungono dei limiti proporzionali all'aumento delle dimensioni del gruppo e delle linee di comunicazione.
Team dell'applicazione, dell'infrastruttura e degli strumenti
Team dell'applicazione
Il team dell'applicazione si occupa della creazione dell'applicazione. Gli sviluppatori dell'applicazione sono proprietari del backlog, delle storie e degli unit test e sviluppano funzioni basate su un target di applicazione specifico. L'obiettivo organizzativo di questo team è ridurre al minimo il tempo che gli sviluppatori dedicano alle attività non principali relative all'applicazione.
Oltre ad avere competenze di programmazione funzionali nel linguaggio applicativo, il team dell'applicazione dovrebbe avere competenze relative alla piattaforma e conoscere la configurazione del sistema. In questo modo, il team potrà concentrarsi esclusivamente sullo sviluppo delle funzioni e sul rafforzamento dell'applicazione.
Team dell’infrastruttura
Il team dell'infrastruttura scrive il codice che compilerà e configurerà l'infrastruttura necessaria per eseguire l'applicazione. Questo team può utilizzare strumenti AWS nativi, ad esempio AWS CloudFormation, o strumenti generici come Chef, Puppet o Ansible. Il team dell'infrastruttura deve specificare quali risorse sono necessarie e lavora a stretto contatto con il team dell'applicazione. Il team dell'infrastruttura può essere composto da solo una o due persone, nel caso di applicazioni di piccole dimensioni.
Il team deve avere competenze relative ai metodi di provisioning dell'infrastruttura, come AWS CloudFormation o HashiCorp Terraform. Il team dovrebbe inoltre sviluppare competenze di automazione della configurazione con strumenti come Chef, Ansible, Puppet o Salt.
Team degli strumenti
Il team degli strumenti crea e gestisce la pipeline CI/CD. È responsabile dell'infrastruttura e degli strumenti che compongono la pipeline. I membri di questo team non rientrano nel concetto del two-pizza team; tuttavia, creano uno strumento che viene utilizzato dai team dell'applicazione e dell'infrastruttura dell'organizzazione. L'organizzazione deve far crescere continuamente il proprio team degli strumenti, in modo che sia sempre un passo avanti rispetto ai team dell'applicazione e dell'infrastruttura in fase di crescita.
Il team degli strumenti deve essere esperto nella compilazione e nell'integrazione di tutte le parti della pipeline CI/CD. Ciò include la creazione di repository di controllo del codice sorgente, motori del flusso di lavoro, ambienti di compilazione, framework di test e repository di artefatti. Questo team può scegliere di implementare software come AWS CodeStar, AWS CodePipeline, AWS CodeCommit, AWS CodeDeploy, AWS CodeBuild e AWS CodeArtifact, insieme a Jenkins, GitHub, Artifactory, TeamCity e altri strumenti simili. Alcune organizzazioni potrebbero chiamarlo team DevOps, ma AWS sconsiglia di utilizzare questa nomenclatura e incoraggia invece a pensare a DevOps come all'insieme delle persone, dei processi e degli strumenti che compongono la consegna del software.