15. “
« les organisations qui conçoivent
des systèmes [...] tendent
inévitablement à produire des
designs qui sont des copies de la
structure de communication de leur
organisation. »
— M. Conway
15
16. Quel est le RACI ?
Est-ce que votre organisation est compatible ?
16
RACI &
Responsabilités
18. 18
Codebase
One codebase tracked in revision
control, many deploys
Dependencies
Explicitly declare and isolate
dependencies
Config
Store config in the environment
Backing Services
Treat backing services as attached
resources
Build, release, run
Strictly separate build and run
stages
Backing Services
Treat backing services as attached
resources
Processes
Execute the app as one or more
stateless processes
Port Binding
Export services via port binding
Disposability
Maximize robustness with fast
startup and graceful shutdown
Dev/prod parity
Keep development, staging, and
production as similar as possible
Logs
Treat logs as event streams
Admin processes
Run admin/management tasks as
one-off processes
Source: https://12factors.net
24. 24
Items à
identifier
✓ Rapidité du démarrage
✓ Gestion des arrêts
✓ Capacité à s’intégrer dans Docker et K8S
✓ Observabilité
✓ Mémoire et CPU utilisées
✓ Gestion des dépendances et du patch management
25. TOMCAT vs FAT JARS
→ Un compromis Production - Équipes de
développement
25
27. Adresser sur ce sujet
dès la conception !
Ne pas attendre la mise en production :)
Exposer via des endpoints REST l’état de votre système
Faire attention aux FRAMEWORKS utilisés
27
34. Étapes à
intégrer dans
votre chaîne
✓ Tests unitaires + intégration
✓ Création d’image Docker automatique
✓ “Smoke tests” de l’image crée
✓ Déploiement continu de la branche develop
✓ Déploiement de vos charts HELM (linter?)
✓ Déploiement d’une release
✓ ...
34
49. Flux de sortie
des containers
Docker
stdout & stderr
Inutile de configurer la sortie vers des fichiers
49
50. Bonnes
pratiques
Indiquer dans vos LOGS:
Les éléments de votre conteneur (Image,
containerID,...)
Les éléments de contexte K8S (IP POD, ID POD,
namespace,...)
Log4j Docker Support – Log4j Kubernetes Support 50
51. Pour aller plus
loin
Vous pouvez logger et tracer les appels à vos APIS:
Requête, ID de l’appelant, ID de corrélation,...
zalando/logbook: An extensible Java library for HTTP request and response
logging
51