Infrastructure Needs toward continuous delivery

Transcription

Infrastructure Needs toward continuous delivery
DOCKER, PIERRE ANGULAIRE DU
CONTINUOUS DELIVERY ?
-
A DEVOPS STORY
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
Code
développé
Tests
unitaires
Intégration
Tests
d’acceptance
Mise en
production
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
19/11/2015
2
LE PARADIGME DU CONTENEUR
« Un artefact universel, autosuffisant et standard, contenant un module
applicatif et sa configuration d’infrastructure sous-jacente »
Incrémental
Programmatique
Jetable
Léger
Immuable
Social
Portable
Versionné
 Docker fournit à la fois le conteneur et l’écosystème pour l’opérer
19/11/2015
3
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
MyApplication x.y (DEV)
Tomcat8 + Java1.8 (OPs)
RHEL 7.0 (OPs)
 Les Devs et les Ops partagent un même “vocabulaire”
et un même écosystème
Le DockerFile de
MyApplication:
FROM tomcat:8-jre8
MAINTAINER adrien
ADD gameoflife.war /usr/local/tomcat/webapps/
EXPOSE 8080
CMD ["catalina.sh", "run"]
19/11/2015
4
PIPELINE CONTINUOUS DELIVERY
On instancie un pipeline à chaque
changement de code:
Build
Deploy DEV
One versionned artifact
to rule them all !
Deploy
PRD
Deploy UAT
2a
Récupèrer l’image
sous-jacente
Registry
APP x.y (APP team owned)
Git commit du
code ou du
dockerfile
0011010100110
1011011010111
1101110101111
010011
1
JAVA 1.8 (OPS/middleware owned)
2c
RHEL 6.7 (OPS/system owned)
Renvoyer le nouvel
artefact dans la
registry
3b
Pull APP image
CD platform
Intégrer dans une nouvelle
image docker
2b
Retirer l’ancienne
version et ordonner
le déploiement d’une
nouvelle version
P
D
3a
U
U
P
Cluster docker
19/11/2015
5
JENKINS PIPELINE
Le tag de l’image docker correspond
directement au hash GIT
 Le build N est en env. de DEV
Promotion manuelle
 Le build N-1 est en env. d’UAT
 Le build N-2 est en env. de PROD
19/11/2015
6
DU CONTENEUR À L’APPLICATION
‘’Docker est passé du conteneur universel à
une topologie applicative orientée objet’’
Application
Topologie
(Compose)
Exécution
(Run containers)
Stockage
(Volumes)
Transport
(Network)
‘’... Et fournit une plateforme d’exécution complète’’
Plateforme de CaaS
Cluster de serveurs Docker (Swarm)
Exécution (Engine)
Provisioning (Machine)
Registry d’images
internes, Docker
Hub...
19/11/2015
7
CA PAAS OU CA CAAS ?
Application
(code)
Conteneur
Capacité (VM, Stockage,
réseau…)
Legacy
PaaS
CaaS
IaaS
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
19/11/2015
8
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
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
“You build it, you run it!”
19/11/2015
9
CONCLUSION
L’universalité du conteneur Docker facilite :
La transition vers le cloud pour les applications historiques
L’hybridation et la réversibilité des opérateurs de cloud
Au delà de la technologie, Docker est un outil “DevOps”
Favorise l’autonomie des équipes applicatives portant l’ensemble d’un produit
Accroît la qualité des app. et contribue à accélérer le flux de livraison en automatisant
Docker facilite l’élasticité des applications
Toutefois, il faut également penser aux patterns d’architecture applicative adaptés
19/11/2015
10