Docker, Pierre angulaire du continuous delivery ?

22
DOCKER, PIERRE ANGULAIRE DU CONTINUOUS DELIVERY ? - UNE EXPÉRIENCE DEVOPS DevOps coach & Infra. product owner Société Générale [email protected] @adrienblind

Transcript of Docker, Pierre angulaire du continuous delivery ?

Page 1: Docker, Pierre angulaire du continuous delivery ?

DOCKER, PIERRE ANGULAIRE DU CONTINUOUS DELIVERY ?

-UNE EXPÉRIENCE DEVOPS

DevOps coach & Infra. product ownerSociété Géné[email protected]@adrienblind

Page 2: Docker, Pierre angulaire du continuous delivery ?

202/05/2023

LE CHALLENGE DU CONTINUOUS DELIVERY

Promouvoir une démarche agile et automatisée jusqu’à la production pour améliorer la vélocité et la qualité des produits livrés

De nouveaux challenges apparaissent (non exhaustif !)● Réconcilier le cycle de vie des apps et de leurs infra. : penser produit● Accroitre l’autonomie des équipes applicatives● … tout en augmentant le besoin d’interactions avec des Ops

Des éléments de solutions émergent à différents niveaux● Organisationnel : Culture DevOps, avénement des feature-teams...● Architecture applicative : micro-services, loose-coupling, stateless, APIs versionnées…● Infrastructure : services cloud de plus en plus riches, infrastructure-as-code

Code développé

Tests unitaires Intégration Tests

d’accept.Mise en

prod Exécution

@adrienblind

Page 3: Docker, Pierre angulaire du continuous delivery ?

302/05/2023

LE PARADIGME DU CONTENEUR

« Un artefact universel, autosuffisant et standard, contenant un module applicatif et sa configuration d’infrastructure sous-jacente »

Docker fournit à la fois le conteneur et l’écosystème pour l’opérer

Immuable

Versionné

LégerPortable

Jetable

Programmatique

Social

Incrémental

@adrienblind

Page 4: Docker, Pierre angulaire du continuous delivery ?

402/05/2023

POUPÉES RUSSES

Un catalogue d’images de base● Les Ops de l’entreprise et la communautée proposent des bases système élémentaires● Qu’ils utilisent pour proposer des produits finis directement utilisables (ex. Une instance REDIS)● Ou que les DEVs enrichissent pour construire leur propre application

RHEL 7.0 (OPs)

Tomcat8 + Java1.8 (OPs)

MyApplication x.y (DEV)

FROM tomcat:8-jre8MAINTAINER adrienADD gameoflife.war /usr/local/tomcat/webapps/EXPOSE 8080CMD ["catalina.sh", "run"]

Le DockerFile de MyApplication:

Les Devs et les Ops partagent un même “vocabulaire”et un même écosystème

@adrienblind

Page 5: Docker, Pierre angulaire du continuous delivery ?

502/05/2023

PIPELINE CONTINUOUS DELIVERY

Registry

Récupèrer l’imagesous-jacente

RHEL 6.7 (OPS/system owned)

JAVA 1.8 (OPS/middleware owned)

APP x.y (APP team owned)

0cIntégrer dans une nouvelle

image docker et tester !

0b

Récupèrele code

0a

@adrienblind

Page 6: Docker, Pierre angulaire du continuous delivery ?

602/05/2023

PIPELINE CONTINUOUS DELIVERY

001101010011010110110101111101110101111010011

Registry

CD platform

1

Récupèrer l’imagesous-jacente

RHEL 6.7 (OPS/system owned)

JAVA 1.8 (OPS/middleware owned)

APP x.y (APP team owned)

2bIntégrer dans une nouvelle

image docker

2cRenvoyer le nouvel

artefact dans la registry

On instancie un pipeline à chaque changement de code:

2a

Git commit du code ou du dockerfile

Build Deploy DEV Deploy UAT Deploy PRD

@adrienblind

Page 7: Docker, Pierre angulaire du continuous delivery ?

702/05/2023

PIPELINE CONTINUOUS DELIVERY

001101010011010110110101111101110101111010011

Registry

CD platform

RHEL 6.7 (OPS/system owned)

JAVA 1.8 (OPS/middleware owned)

APP x.y (APP team owned)

On instancie un pipeline à chaque changement de code: Build Deploy DEV Deploy UAT Deploy

PRD

Cluster docker

3a

Retirer l’ancienne version et ordonner

le déploiement d’une nouvelle version

3bPull APP image

D

U U

P

P

@adrienblind

Page 8: Docker, Pierre angulaire du continuous delivery ?

802/05/2023

PIPELINE CONTINUOUS DELIVERY

001101010011010110110101111101110101111010011

Registry

CD platform

RHEL 6.7 (OPS/system owned)

JAVA 1.8 (OPS/middleware owned)

APP x.y (APP team owned)

On instancie un pipeline à chaque changement de code: Build Deploy DEV Deploy UAT Deploy

PRD

Cluster docker

3a

Retirer l’ancienne version et ordonner

le déploiement d’une nouvelle version

3bPull APP image

D

U U

P

P

@adrienblind

Page 9: Docker, Pierre angulaire du continuous delivery ?

902/05/2023

PIPELINE CONTINUOUS DELIVERY

001101010011010110110101111101110101111010011

Registry

CD platform

RHEL 6.7 (OPS/system owned)

JAVA 1.8 (OPS/middleware owned)

APP x.y (APP team owned)

On instancie un pipeline à chaque changement de code: Build Deploy DEV Deploy UAT Deploy

PRD

Cluster docker

3a

Retirer l’ancienne version et ordonner

le déploiement d’une nouvelle version

3bPull APP image

D

U U

P

P

One (versionned) artifact to rule them all !

@adrienblind

Page 10: Docker, Pierre angulaire du continuous delivery ?

1002/05/2023

JENKINS PIPELINE VIEW

1 pipeline instantiated automatically at each git commit:

●Version N is on DEV

●Version N-1 is on UAT

●Version N-2 is on PROD

Auto-deployedup to DEV + click to

promote to UAT

Click to promote to prod

Corresponding git commit hash

@adrienblind

Page 11: Docker, Pierre angulaire du continuous delivery ?

1102/05/2023

TECHNOLOGIES UTILISÉES

Nous avons bâti un PoC qui reposait principalement sur :● Github on premises● Jenkins

Delivery Pipeline pluginCloudbees plugin pour Docker (surtout pour build & push)

● Une plateforme d’exécution Docker SWARM hybride et une registry

Et pour aller plus loin...● Explorer une démarche plus intégrée et industrialisée : UCP ? DTR ? Vendor

solutions ?

@adrienblind

Page 12: Docker, Pierre angulaire du continuous delivery ?

1202/05/2023

IMPORTANCE DE L’ARCHITECTURE APPLICATIVE

Une architecture applicative adaptée facilite le déploiement continu

● Ex. Zero Downtime Deployment en faisant du déploiement par roulement des conteneurs d’une même ferme

● Patterns loose coupling, multi versioned, stateless, etc.

@adrienblind

Page 13: Docker, Pierre angulaire du continuous delivery ?

1302/05/2023

DU CONTENEUR À L’APPLICATION

‘’Docker est passé du conteneur universel à une topologie d’infra. applicative orientée objet’’

ApplicationExécution

(Run containers)

Stockage(Volumes)

Transport(Network)

Topologie(Compose)

‘’... reposant sur une plateforme d’exécution’’Plateforme de CaaS

• Composants élémentaires : engine, swarm, machine, registry• Plateforme Docker : HUB/Tutum (cloud), DTR/UCP (on premises)• Plateformes tierces : topologie non-docker, quid du support des volumes, des réseaux ?

@adrienblind

Page 14: Docker, Pierre angulaire du continuous delivery ?

1402/05/2023

Host file system Host file system

‘’Mais jusqu’il y a peu, la résilience du stockage reposaitencore sur le système hôte, et la démarche n’était donc pas élastique’’

VOLUMES DOCKER

‘’Le continuous delivery requiert de créer des conteneurs immuableset donc de sortir la donnée du conteneur applicatif...’’

@adrienblind

Page 15: Docker, Pierre angulaire du continuous delivery ?

1502/05/2023

Host file system

Container

Volume

‘’Le conteneur peut devenir un avatar permettant de déléguer la gestion du stockage’’

VOLUMES DOCKER

@adrienblind

Page 16: Docker, Pierre angulaire du continuous delivery ?

1602/05/2023

Host Host Host Host

SDN

sSDN 1

SDN 2

SDN 3

RÉSEAUX APPLICATIFS

‘’Le réseau est devenu une problématique applicative’’

@adrienblind

Page 17: Docker, Pierre angulaire du continuous delivery ?

1702/05/2023

Chaque application devient une bulle autonome

RÉSEAUX APPLICATIFS

@adrienblind

Page 18: Docker, Pierre angulaire du continuous delivery ?

1802/05/2023

CONTINUOUS DELIVERY DE TOPOLGIES ?

Dans certains cas, on ne délivre donc plus tant un artefact unique qu’une topologie complète !

●Même un micro-service peut être composé de plusieurs briques●Dans l’expérimentation nous avons simplement piloté une topologie

docker-compose avec Jenkins

@adrienblind

Page 19: Docker, Pierre angulaire du continuous delivery ?

1902/05/2023

« Organizations which design systems... are constrained to produce designs which are copies of the communication structures of these organizations ». - M. Conway, 1968

« Organisez-vous opérationnellement de façonadaptée pour faire du continuous delivery »

ORGANISATION

@adrienblind

Page 20: Docker, Pierre angulaire du continuous delivery ?

2002/05/2023

REDISTRIBUTION DES CARTES DEVOPS

Equipes applicatives focalisées sur le contenu

Ne se préoccupe pas de la façon d’opérer des conteneurs

Sait comment construire des conteneurs et opérer des applications

DevOps

“You build it, you run it!”

Services cloud focalisés sur l’aspect extérieur

Ignore la façon dont sont construites les images

Sait comment opérer de grandes quantités de conteneurs

DevOps

@adrienblind

Page 21: Docker, Pierre angulaire du continuous delivery ?

2102/05/2023

CA PAAS OU CA CAAS ?

IaaSCapacité (VM, Stockage, réseau…)

PaaSApplication (code)

CaaSConteneur

Legacy Le CaaS facilite notamment l’accès au cloud des applications “legacy”

La topologie d’une application peut tout à la fois reposer sur des composants CaaS/PaaS/IaaS

@adrienblind

Page 22: Docker, Pierre angulaire du continuous delivery ?

2202/05/2023

CONCLUSION

Docker facilite le continuous deliveryDes propriétés du conteneur idoines (granularité fine, versionnable, immuable…)Un écosystème docker programmatique facilement interconnectableL’universalité du conteneur facilite le continuous delivery pour différents écosystèmes

Docker est passé à un modèle objetLa topologie et l’orchestration sont des sujets de plus en plus importants

Au delà de la technologie, Docker est un outil “DevOps”Favorise l’autonomie des équipes applicatives portant l’ensemble d’un produit

@adrienblind