1. DevOps et qualification continue
Contrôler l’externalisation de ses
développements
1Club Qualité Logicielle – Contrôler l’externalisation de ses développements
Le 13 octobre 2015
2. PLAN
Objectif de la présentation
Contexte
Description d’un système de contrôle continu
Architecture
Apports
Exemple d’implémentation
Architecture
Organisation
Rôles des différents acteurs
Gains
Évolutions
2Club Qualité Logicielle – Contrôler l’externalisation de ses développements
3. OBJECTIF DE LA PRÉSENTATION
3Club Qualité Logicielle – Contrôler l’externalisation de ses développements
• Présenter les systèmes de contrôle continu
– permettant de :
Faciliter la mise en œuvre des tests à chaque étape du cycle de
production logiciel
Détecter les défauts le plus tôt possible
S’intégrer dans un processus de développement agile
– et proposant :
La mise à disposition d'une usine de développement mutualisée
entre les différents prestataires de service
• Détailler la mise en œuvre d’une solution de ce type
sur un cas concret
4. CONTEXTE
4Club Qualité Logicielle – Contrôler l’externalisation de ses développements
• L’externalisation des développements présente des
risques, notamment :
– La dépendance vis-à-vis du prestataire, comme par exemple des
délais trop longs ou une détérioration du service,
– Un manque d'information et de transparence,
– Une vulnérabilité par rapport à la réversibilité.
• Il y a un enjeu important à la mise en place des
processus de contrôle afin de garantir
– Le respect de l’état de l’art des développements effectués
– L’adéquation entre l’environnement utilisé pendant les tests des
développements et l’environnement cible de production
– Une réversibilité des travaux sous-traités
– La détection des problèmes au plus tôt dans le cycle de
développement
5. ARCHITECTURE D’UN SYSTÈME DE
CONTRÔLE CONTINU
5Club Qualité Logicielle – Contrôler l’externalisation de ses développements
6. Brique N°1 – Usine logicielle
- Partage des mêmes outils entre les différents acteurs
- Standardisation des processus de build
- Livraison régulière des sources et analyses qualité au fil de
l’eau
Brique N°2 – Provisionnement
- Provisionnement d’environnements standardisés en libre service
- Isolation des environnements applicatifs par sous-traitant
- Création dynamique de nouveaux environnements en fonction des
projets
Brique N°3 – Déploiement
- Industrialisation des déploiements middlewares et applicatifs
- Utilisation de templates OS banalisés
- Automatisation du déploiement des « configurations système»
- Déploiement des patches de sécurité
- Déploiement de services applicatifs complets
Brique N°4 –
Orchestration
- Modélisation et
gestion du
pipeline de
déploiement
- Pilotage du
passage entre les
différentes phases
automatiquement
ou manuellement
ARCHITECTURE FONCTIONNELLE
Intégration
continue
Qualification
continue
...
Livraison
continue
Club Qualité Logicielle – Contrôler l’externalisation de ses développements
7. BRIQUE N°1 – USINE LOGICIELLE
Club Qualité Logicielle – Contrôler l’externalisation de ses développements
• Objectif :
– Construire un binaire de manière fiable et reproductible
• Services offerts :
– Gestion centralisée des sources
– Processus de build normalisé
– Analyse qualimétrie
– Exécution des tests unitaires
– Exécution de certains tests d’intégration
– Dépôt des binaires dans le référentiel d’entreprise
• Logiciels disponibles
– De nombreuses solutions existent sur la marché, en fonction des
technologies supportées.
– Jenkins, Hudson, Bamboo, TeamCity, Team foundation Server…
8. BRIQUE N°1 – USINE LOGICIELLE : Illustration
8Club Qualité Logicielle – Contrôler l’externalisation de ses développements
9. BRIQUE N°2 - PROVISIONNEMENT
9
• Objectif :
– Automatiser le déploiement applicatif dans son environnement
d'exécution similaire à celui de production afin de permettre
d’accélérer les cycles de qualification (nécessite une virtualisation
des environnements)
• Services offerts :
– Provisionnement en libre service de serveurs ou de « bundles »
de serveurs
– Création des configurations matérielles souhaitées
– Mise à disposition d’un catalogue de templates
– Gestion de quotas de ressources
– Inventaire du parc de serveurs déployés
– Reporting avancé sur l’utilisation des ressources
– Gestion des réseaux virtuels
• Logiciels disponibles
– Exemples : Cloudstack, Cloudify, BMC, Cloudforms, ManageIQ…
Club Qualité Logicielle – Contrôler l’externalisation de ses développements
10. BRIQUE N°2 – PROVISIONNEMENT : Illustration
Exemple : Architecture de la solution Cloudforms Management
Engine
Club Qualité Logicielle – Contrôler l’externalisation de ses développements
Source : Redhat
11. BRIQUE N°3 - DÉPLOIEMENT
11Club Qualité Logicielle – Contrôler l’externalisation de ses développements
• Objectif :
– Déployer des packages et des configurations logicielles
automatiquement de manière idempotente (capacité à mettre à
niveau un serveur quelque soit son état initial)
• Services offerts :
– Déploiement de tous les types d’applications (prise en charge de
l'existant sans modification)
– Base de données des configurations déployées (CMDB)
– Description de l'état souhaité d'un serveur par l'écriture de
« recettes »
– Isolation complète des environnements
– Reporting avancé sur les configurations déployées
– Orchestration des déploiements dans le cadre d’un service
applicatif complet (plusieurs serveurs)
• Logiciels disponibles
– Exemples : Puppet, Ansible, Chef, Salt…
12. BRIQUE N°3 – DEPLOIEMENT : Illustration
12
Principe de fonctionnement de Puppet
Club Qualité Logicielle – Contrôler l’externalisation de ses développements
Les différents concepts Puppet
Node : Machine physique ou
virtuelle à configurer
Master : Serveur Puppet
regroupant l'ensemble des
configurations à appliquer
Catalog : Document décrivant l'état
final d'un « Node »
Resource : Unité décrivant un
aspect du système tel qu'un
service ou un package
Class : bloc de code Puppet
définissant les « resources » à
configurer
ENC : External Node Classifier,
application qui définie les « class »
à appliquer pour chaque « Node »
Source : PuppetLabs
13. BRIQUE N°3 – DÉPLOIEMENT : Illustration
13
Tableau de bord Puppet de suivi des déploiements
Club Qualité Logicielle – Contrôler l’externalisation de ses développements
14. 14
BRIQUE N°4 : ORCHESTRATION
Club Qualité Logicielle – Contrôler l’externalisation de ses développements
• Objectif
– Automatiser le passage entre chaque étape du cycle de
production logicielle (déclenchement automatique ou approbation
manuelle)
• Services offerts
– Modélisation des différentes étapes du pipeline
– Déclenchement automatique ou à la demande des étapes
suivantes
– Reporting détaillé des tests
– Exécution en parallèle quand c’est possible
• Logiciels disponibles
– GoCD, Plugin pipeline de Jenkins, ...
15. BRIQUE N°4 - ORCHESTRATION, MODÈLE DE
PIPELINE
15Club Qualité Logicielle – Contrôler l’externalisation de ses développements
16. 16
BRIQUE N°4 - ORCHESTRATION : Illustration
Club Qualité Logicielle – Contrôler l’externalisation de ses développements
GoCD
Jenkins Pipeline plugin
17. Club Qualité Logicielle – Contrôler l’externalisation de ses développements
LES APPORTS DE LA SOLUTION DANS LA MISE EN
ŒUVRE DES TESTS
17
Tests
fonctionnels
automatisés
Qualimétrie
Test unitaires
Contrôles
lors du
commit
Tests
non
fonctionnels
automatisés
Sondes
applicatives
19. CONTEXTE
19
• Un grand compte public délégant dans le cadre de
prestations sous-traitées
– Les développements des applications en maintenance à une
TMA ;
– Les développements des nouvelles applications à des équipes
projet dédiées ;
– La recette et l'intégration à une équipe de TRA ;
– L'exploitation à un infogérant,
• Souhaite renforcer la maîtrise de la sous-traitance
– En imposant l'utilisation de sa propre usine de développement
dans les appels d'offres ;
– En fournissant une infrastructure industrialisée pour la mise en
œuvre des tests.
Club Qualité Logicielle – Contrôler l’externalisation de ses développements
23. RÔLES DES DIFFÉRENTS ACTEURS
23
Développeurs Intégrateurs Assurance
qualité
MOA Exploitants
M.C.O. de l'usine de développement A, R R
Configuration des règles de contrôle
qualimétrie
C A,R C
M.C.O. des outils de provisionning et
de déploiement
A,R
Développement des modules de
déploiement système
I I A,R
Développement des modules de
déploiement middleware
C R A,R
Développement des modules de
déploiement applicatif
A,R I R I
Ajout d'un nouvel OS C R I I A,R
Ajout d'un nouveau middleware C R A,R
Exécution des tests automatisés A,R
Exécution de la recette manuelle R A,R
Déploiement en production I C C A R
Club Qualité Logicielle – Contrôler l’externalisation de ses développements
TMA TRA Infogérant
24. LES GAINS
24Club Qualité Logicielle – Contrôler l’externalisation de ses développements
Avant Après Apports du système de contrôle de
l'externalisation
Chaque sous-traitant gère sa
plateforme d'intégration continue
La plateforme d'intégration continue
est mise à disposition de l'ensemble
des sous-traitants
Visibilité totale de l'avancement
des travaux
Possibilité de mise en œuvre des
contrôles qualimétrie
Les coûts de réversibilité sont
fortement réduits
Les phases d' installation et
intégration sont longues car les
environnements des sous-traitants ne
sont pas conformes à la cible
Dès les premières phases de test, les
environnements sont identiques à la
cible
Réduction importante des charges
d'installation et d'intégration
Les installations sont effectuées
manuellement à partir de documents
d'installation
La majorité des applications est
installée automatiquement
Les installations sont reproduites
sans erreurs d'un environnement à
l'autre
Les délais d'installation sont
fortement réduits (interruptions de
service minimes)
Les tests ne sont exécutés qu'après
livraison à l'équipe de recette
Un nombre important de tests
automatisés sont joués avant livraison
Phases d'acceptation réduite
Tests de non régression joués
systématiquement car automatisés
Les tests « techniques » sont
ajoutés au périmètre de non
régression
Chaque sous-traitant construisait son
propre environnement de test
Les environnements sont construits
dynamiquement à la demande
La durée des phases d'initialisation
est fortement réduite pour chaque
nouveau sous-traitant de TMA
25. ÉVOLUTIONS PRÉVUES
25
• Fonctionnelles
– La gestion des changements dans les bases de données n’est
pas prise en compte (chantier 2016)
• Organisationnelles
– L'industrialisation du déploiement des middlewares doit faire partie
du périmètre de l’infogérant, cela nécessite une mise à niveau de
ses compétences
• Techniques
– Certains composants (BD Oracle, SAP BO) sont complexes à
configurer et leur durée d’installation peut être longue. Cela
empêche leur redéploiement systématique. Ils sont considérés
comme des services à disposition des applications. Une étude est
prévue pour les intégrer au processus standard de déploiement
• Financières
– R.O.I à formaliser
Club Qualité Logicielle – Contrôler l’externalisation de ses développements