Fork me on GitHub

Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari, or Firefox 10.

Software Factory Docker

docker logo

Le plan


  1. Principe de Software Factory
  2. Industrialisation en pratique
  3. Un lexique de l'écosystème
  4. Eléments d'une Software Factory
  5. Briques de base
  6. Patterns Docker utilisés
  7. Bilan
docker logo

Principe de Software Factory


  1. Une Software Factory ou usine logicielle

  2. S’inspire de l’usine du monde réel
  3. Et forme une chaine de production de logiciels
  4. Dont les tâches répétitives sont automatisées

  5. Exemple de tâches: compilation, tests unitaires, déploiement
  6. En entrée : du code source versionné dans un VCS
  7. En sortie: des artefacts applicatifs déployables
VCS: logiciel de gestion de version
docker logo

Le plan


  1. Principe de Software Factory
  2. Industrialisation en pratique
  3. Un lexique de l'écosystème
  4. Eléments d'une Software Factory
  5. Briques de base
  6. Patterns Docker utilisés
  7. Bilan
docker logo

Industrialisation en pratique


Partir du dépôt d'un VCS pour un process


  1. avec traçabilité des changements
  2. reproductible
  3. idempotent
  4. à maintenance facilité

Pour produire un élément à industrialiser du SI


  1. un livrable applicatif
  2. un déploiement
  3. une machine virtuelle
VCS: logiciel de gestion de version
docker logo

Le plan


  1. Principe de Software Factory
  2. Industrialisation en pratique
  3. Un lexique de l'écosystème
  4. Eléments d'une Software Factory
  5. Briques de base
  6. Patterns Docker utilisés
  7. Bilan
docker logo

Un lexique l'écosystème


  1. VCS : Version Control System / logiciel de gestion de version
  2. Forge logicielle : outil de développement logiciels collaboratif
  3. ChatOPS : modèle de collaboration entre personnes, outils, process et automatisation
  4. Software repository : Serveur de dépôts d'artefacts logiciels
  5. Software packaging format : Format d'artefacts logiciels
  6. CI : Continuous Integration / intégration continue
  7. CD : Continuous Delivery / livraison continue
  8. Semantic version : format standard de versions logiciel X.Y.Z

  9. Conventional Changelog : conventions de messages de commit

docker logo

Le plan


  1. Principe de Software Factory
  2. Industrialisation en pratique
  3. Un lexique de l'écosystème
  4. Eléments d'une Software Factory
  5. Briques de base
  6. Patterns Docker utilisés
  7. Bilan
docker logo

Eléments de Software Factory


  1. VCS : Git, VCS décentralisé
  2. Forge logicielle : Gitlab, forge open source self-hosted
  3. CIS : Gitlab CI
  4. Software repository : Artifactory, agrégateur de dépôts
  5. Software packaging format : Image Docker
  6. Scripts CI: bash / python, opérations effectuées par la factory
  7. ChatOPS: Rocket.Chat et Hubot
docker logo

Eléments de Software Factory

Schéma de flux


Ci workflow
docker logo

Le plan


  1. Principe de Software Factory
  2. Industrialisation en pratique
  3. Un lexique de l'écosystème
  4. Eléments d'une Software Factory
  5. Briques de base
  6. Patterns Docker utilisés
  7. Bilan
docker logo

Briques de base

Pipeline Gitlab de génération d'images Docker


Ci workflow

  1. Compilation par Docker Builder Pattern
  2. Définition par Dockerfile de l'environnement de compilation

  3. Dockérisation d'un environnement d'exécution léger
  4. Ne contient que le code compilé et le container adapté
docker logo

Briques de base

Pipeline Gitlab de versioning et déploiement d'images Docker

Ci workflow

  1. Déploiement par Gitlab sur tous les environnements
  2. Génération automatique de versions
  3. Notifications du déploiement dans les chans de Rocket.Chat
docker logo

Briques de base

Génération automatique de versions par


Ci workflow
  1. Conventional Changelog : standard de messages de commit
  2. Types de changements définis : fix, feat, Breaking Changes
  3. Semantic Version : incrément par types de commit

docker logo

Briques de base

Matière première de ces briques


  1. Ecrites en Bash et Python
  2. Couteau suisse Bash : git, curl, jq
  3. Commandes git : extraction des metadatas des projets
  4. Commandes docker : login, build, inspect, push, pull, run
  5. Modules npm : génération de la release et du changelog
  6. Commandes bdd : changements bdd
  7. Appels d'API : Gitlab API, Artifactory API, Rocket.Chat API
docker logo

Le plan


  1. Principe de Software Factory
  2. Industrialisation en pratique
  3. Un lexique de l'écosystème
  4. Eléments d'une Software Factory
  5. Briques de base
  6. Patterns Docker utilisés
  7. Bilan
docker logo

Patterns Docker utilisés


Docker Builder Pattern


  1. Docker build comme finalité (plutôt que docker run)
  2. Créer un environnement de compilation avec un Dockerfile
  3. Docker cp pour extraire le code compilé
  4. Autre option : Multi-stages build dans Docker 17.05

DooD / Docker Outside Of Docker


  1. Lancer des commandes docker depuis un container
  2. Monter la socket docker dans les volumes
  3. Utiliser une image Docker contenant Docker
  4. A éviter : DinD / Docker In Docker
docker logo

Le plan


  1. Principe de Software Factory
  2. Industrialisation en pratique
  3. Un lexique de l'écosystème
  4. Eléments d'une Software Factory
  5. Briques de base
  6. Patterns Docker utilisés
  7. Bilan
docker logo

Bilan


Ce qui marche


  1. Grand confort apporté par les briques de base natives
  2. Déploiement facilité et aligné sur toute la chaîne
  3. Scripts d'ugrade idempotents
  4. Notifications Rocketchat pour diffuser l'information
  5. Fonctionne aussi pour les progiciels dockerisés : Piwik

A venir


  1. Ajouter des Quality Gates
  2. Ajouter des commandes hubot pour piloter les déploiements
  3. Insérer le lancement de tests Selenium

Utiliser la barre espace ou les flèches pour se déplacer