université de nantes · donner quelques patterns et anti-patterns ... ou microservices. ou pour du...

85
Introduction au métier d’Intégrateur Université de Nantes M1 MIAGE 2019-2020 Copyright Bertrand Florat

Upload: others

Post on 21-May-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Introduction au métier d’Intégrateur

Université de NantesM1 MIAGE 2019-2020

Copyright Bertrand Florat

Page 2: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Bertrand FloratArchitecte Solution et intégrateur

[email protected]

Avis / suggestions

Page 3: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

● Expliquer le rôle d’un intégrateur

● Présenter l’écosystème actuel

● Donner quelques patterns et anti-patterns

Objectifs du cours

Page 4: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

● Contexte : le monde de l’intégrateur

● Le rôle de l’intégrateur

● Les usines logicielles

● Les conteneurs

● La démarche DevOps

● Patterns et anti-patterns d’intégration

● Les documents pour l’exploitant

● La gestion d’un test de charge

Agenda (à prioriser)

Voter

Page 5: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Contexte : le monde de l’intégrateur

Page 6: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Les devs et les ops...

Page 7: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

...ne parlent pas la même langue...

Page 8: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

et ce n’est pas si simple...

- Il faut packager les applications- Il faut tester et valider l’application (acceptance)

Page 9: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Le développeur a besoin d’une usine logicielle

Page 10: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

il faut aussi documenter

- Pour que l’exploitant sache superviser, ordonnancer, sauvegarder...- Pour que l’exploitant sache installer

Page 11: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

il y a plusieurs environnements...

Page 12: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

L’idéal : l’approche DevOps

- Approche DevOps, application cloud native, containeurs :

Page 13: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

il peut y avoir plusieurs branches...

https://leanpub.com/git-flow/read

Solution possible : voir les feature flags

Page 14: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

...principalement pour gérer le multi-versions et gérer le cycle de vie du produit

crédit : sos-berlin.com

Page 15: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

...condition sine qua non en architecture SOA ou microservices

Page 16: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

ou pour du déploiement multi-version

● Blue-Green– Tout l’un ou tout l’autre

● A/B testing– A et B en même temps

statistiques d’usage● Canary testing

– 1 % en B, 99 % en A● Rolling update (orchestrateur de conteneurs)

– 100% A, 0 % B -> 60 % A, 40 % B -> 100 % A, 0 % A

crédit : Martin Fowler,

https://martinfowler.com/bliki/BlueGreenDeplo

yment.html

Page 17: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

chaque environnement a son modèle de déploiement

Page 18: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

et son jeu de données

- Versions des MPD différentes suivant les environnements- DEV : en local, dédiée ou partagé

Page 19: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Architectures de plus en plus distribuées et complexesSOA, micro-services

- Beaucoup de paramétrage- Intégration complexe- Besoin de coordination entre projets ou composants

Page 20: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Le rôle de l’intégrateur

Page 21: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

“instancie l’architecture en quelque chose d’utilisable

Page 22: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

“celui qui fait que tout marche ensemble

et c’est dur ...

Page 23: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

les principaux rôles de l’intégrateurFace aux Devs

● Industrialisation développement via usine logicielle

– Build (Maven, Gradle, Gulp...)

– Intégration continue

– Déploiement continue

– Inspection continue

● Paramétrage applicatif

● Exploitation DEV

● Groupware

Page 24: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

les principaux rôles de l’intégrateurFace aux Ops

● Packaging● Préparation plan de production● Rédaction du guide d’installation● Rédaction du DEX● Support

Page 25: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

les principaux rôles de l’intégrateurAvec les architectes

● Préparation/exécution tests de charge

● Tuning/configuration des composants d’infrastructure

● Intégration de progiciels dans le SI

Page 26: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Interface entre les devs et les ops

Page 27: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Build et packaging

Page 28: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Gestion de l’usine logicielle

Page 29: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Documentation

Page 30: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Administration de l’environnement de DEV

Page 31: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Plusieurs métiers qui convergent

Intégrateur d'applicationsAssemble les applications (Maven,

npm, gradle...), PIC, mise à jour modèles

de données, tests, configuration des middlewares, containeurs

Ingénieur DevOpsMise en place automatisation

du code à la productionIaC (Docker, K8S,

Terraform, Ansible…), Clouds

Intégrateur d’exploitationResponsable du déploiement

(Ansible...)Responsable des procédures

d’exploitation (supervision, sauvegardes...)

Intégrateur progicielInstallation, configuration d'un ou plusieurs progiciel

Page 32: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Un métier en pleine croissance

● Non délocalisable :

– développeurs remplaçables par progiciel/SaaS

– exploitants remplaçables par du cloud

– MAIS toujours besoin d’architectes et d’intégrateur

● Compétences variées, profil adaptable

● Idéalement, être intégrateur d'application ET d'exploitation

– Vision globale du code à la production

– Alter ego de l’architecte solution

Page 33: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Les usines logicielles

Page 34: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Composants principaux de l’usine logicielle

Page 35: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Pourquoi une PIC ? pour automatiser !

● Intégration continue : pratique XP (eXtreme Programming) pour accélérer la boucle de retour

● « Bob the builder » : collaborateur corvéable à merci

● Lancement automatique des builds

● Lancement automatique des tests

● Analyse automatique de la qualité (Inspection Continue)

● Livraison automatique

● Déploiement continu (en prod : le Graal)

Page 36: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

… et tester en continu

● Évite le syndrome « Works on my machine »

● Évite d’exécuter tous les TU et TI en local

Page 37: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Feedback aussi souvent que possible pour limiter les coûts

Page 38: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Le SCM : le point d’entrée

● Git : distribué, workflows complexes, équipes distribuées, startups, université, Open Source

● Subversion = SVN : centralisé, workflows simples, équipes colocalisées, grands comptes, legacy, administrations, SSII

● Build au commit: L’outil de CI récupère le code et lance le build

● En savoir plus : https://florat.net/cours_vcs/cours.html

Page 39: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

L’outil de CI/CD : le cœur du réacteur

https://landscape.cncf.io/

Page 40: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

SonarQube pour analyser la qualité

auto-formationcalcul de la dette techniqueévolution

dans le temps

indicateurshaut niveau

profils d’erreurs et de seuils

Page 41: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

La livraison et le déploiement continu

● Livraison continue : prêt à livrer mais on déploie pas

● Déploiement continu : du commit au serveur sans humain

● DEV mais aussi jusqu’en prod !

Page 42: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Déploiement

● Génération de containers lors du build

● Déploiement vers serveur ou CaaS via un pipeline

● Hors Docker, différentes architecture de déploiement :– Jboss CLI, SSH, Maven Wagon, Rundeck, Ansible, SaltStack ...

source : docker.com

Page 43: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Les containeurs

Page 44: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Aujourd’hui, la plupart des serveurs sont virtuels

● Partage mémoire, CPU et disque entre OS invités

● Technologies : VMWare, KVM, VirtualBox, MS Virtual Server

● Même en production !

● Permet de densifier les datacenters : on bourre !

● Grande flexibilité

Source : VMWare

Page 45: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

● Les serveurs deviennent une commodité

● Serveurs créés/modifiés/supprimés en un clic

● un problème ? on shoot

Approche « pet to cattle »

Page 46: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

mais ne suffit plus

● Il faut toujours installer les applications :

– installer les packages (RPM, .deb...)

– dérouler le guide d’installation

– … pour chaque déploiement

● Tuning composants complexe, isolation devs et ops

● Gaspille toujours mémoire et disque

→ il faudrait un grain plus fin

Page 47: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

les containers...

source : ZDNet

Page 48: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

approches complémentaires ?

● Ne pas opposer VM et containers

● VM : premier découpage pour grosses machines

● Sinon, utiliser un serveur physique

● Les containers peuvent être dans des VM...

● Mais pas toujours (bare metal)

Page 49: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

mais c’est quoi un container ?

● Normalisé

● Étanche (processus isolés)

● Auto-porteur

● Actuellement, technologie de référence : Docker

Page 50: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Docker

● Basé sur des fonctionnalités du kernel Linux (cgroups, namespaces, union FS...)

● Exécution sur un même Linux mais en isolation complète

● Repository, gestion de versions

● Taille disque de quelques Mo (contre 1 Go pour une VM)

● Consomme 4 à 10 fois moins de RAM qu’une VM

● Démarre en quelques secondes

● Mono-application (ex : une image docker mongodb)

● Ne stocke pas de données (volumes sur l’hôte)Solomon Hykes

Page 51: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Containers et clouds

● Nouveau type de cloud : CaaS (Container As A Service) : GKE, EKS, ACS ...

● Orchestrateurs : Docker Swarm, Google Kubernetes, Rancher…

● Clouds publics ou privés

● Infrastructure élastique

● Outils d’exploitation et de supervision globaux

Page 52: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

La démarche DevOps

Page 53: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Le DevOps...

● Démarche issue du courant agiliste

– encore embryonnaire dans les faits

● Équipes multi-disciplinaires centrées sur l’apport métier : le produit avant le process

● Équipes dotées d'un(e) ingénieur DevOps

● Deux piliers :

– La collaboration

– L’automatisation

Page 54: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

De ça :

Page 55: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

à ça (la two-pizzas team) :

Page 56: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

La fin de la fracture ...

Page 57: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Collaborer, mais comment ?

● Penser système, pas équipe isolée

– Communication globale

● Feedback

– Source d’information commune

● Innovation et amélioration continue

– Ateliers

● Casser les carcans

– les devs exploitent (cloud)

– les ops codent (IaC : Infrastructure as Code)

« You build it, you run it »Amazon

Page 58: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Qu’est ce qu’on entend par automatisation ?

● Intégration continue au commit

● Tests automatiques (TU, intégration, end to end, BDD...)

● Livraison continue

● Infrastructure as Code

– Provisioning des serveurs et composants

– Cibler le MTTR plutot que le MTBF

● Déploiement continue (au moins en DEV)

Amélioration du TTM(Time To Market)

jenkins.io

Page 59: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Les outils d’Infrastructure As Code

● Libère les Ops pour des tâches à plus grande valeur ajoutée (performance, sécurité..)

Page 60: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Qu’apportent les containeurs ?

● Facilite grandement le déploiement de systèmes complexes

● Facilite les architectures micro-service

● Remonte le tuning vers les équipes de dev

● Référentiel de composants d’infrastructure sur étagère

● Plus besoin de guide d'installation

● Exploitation unifiée

Page 61: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Les patterns et anti-patterns d’intégration

Page 62: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Patterns

● Convention over configuration (on rails)

● Jamais de configuration plate-forme dépendante dans les packets applicatifs

● Tout automatiser, éliminer toute intervention humaine

● Build au commit

● Feedback le plus rapide possible, accélérer le build

● Une seule branche (mainline) si possible

● Utiliser un outil d'IT Automation– Ansible, Salt, Puppet, Chef...

Roue de Deming, source : wikipedia

Page 63: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Anti-patterns

● Nombreuses interventions humaines, worflows humains

● Builds lancés manuellement

● Tests longs

● Pas de tests d’intégration

● Perte confiance dans la CI

● Trop de notifications

● Nombreuses branches

● Un paquet par environnement

Page 64: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

La documentation

Page 65: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Le guide d’installation

● Doit permettre à un exploitant d’installer l’application

● De vérifier que l’application fonctionne

● De mettre l’application à jour

● De supprimer l’application

Page 66: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Le guide d’installation

avec les containers, ce guide est remplacé

par le déploiement continu et des

tests automatisés

Page 67: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Le guide d’installationPréparation du système

● Pré-requis :

– version de l’OS

– pré-requis matériels (CPU , mémoire, disque)

● Paquets requis

● Création de partitions ou volumes logiques

● Création des groupes et utilisateurs

● Configuration de la configuration globale du serveur

Page 68: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Le guide d’installationInstallation des composants techniques

● Pré-requis (composant et version)

● Installation du composant (SGBD, serveur d’application …)

● Configuration standard du composant technique (charset, sécurité, connectivité...)

● Tuning fin de l’intergiciel (Xmx, taille des caches…)

● Démarrages automatiques

Page 69: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Le guide d’installationInstallation des applications

● Copie / déploiement des binaires

● Configuration applicative

● Pré-chauffage

● Smoke tests bout en bout

Page 70: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Le guide d’installationMises à jour

● Depuis la version n-1

● Depuis la version n-x ? si exigé

– Conserver plusieurs versions pour MAJ incrémentales

● Scripts de MAJ de bases

– Scripts d’extension (vers état transitoire versions n et n+1)

– Scripts de contraction (vers état n+1)

– Scripts de rollback ( vers état n)

– Outils : voir par exemple Liquibase

● Optimisations (calcul stats, mise en cache...)

Page 71: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Le guide d’installationMigration

● Arrêt de l’ancien système

● Export des données

● Migration des données

● Import de données

● Tests

faire une migration incrémentale

quand possible

Page 72: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Le guide d’installationDésinstallation

● Arrêt de l’application

● Archivage

● Suppression des données

● Suppression des intergiciels désormais inutiles

● Libration des ressources (disque)

● Suppression démarrages automatiques

Page 73: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Le Dossier d’EXploitation (DEX)

● Permet à un exploitant de faire fonctionner l’application

● Dans le respect des exigences non fonctionnelles

Page 74: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Le DEXCommandes

● Procédures d’arrêt / démarrage (dans le bon ordre)

● Liste des opérations programmées

● Affinités / anti-affinités des batchs

● Plan de production

● Procédures purges /archivage

Ordonnancement de batchs dans JobScheduler

Page 75: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Le DEXGestion des incidents

● Localisation des logs et aide interprétation

● Aide au diagnostique

● Procédures de sauvegarde et restauration

● Modes dégradés

Logstash : consultation de logs centralisés

Page 76: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Le DEXSupervision

● Métriques + seuils = indicateurs

● Indicateurs système

● Indicateurs applicatifs

Supervision avec Nagios

Page 77: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Réaliser un test de charge

Page 78: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Préparer un test de chargeLes tests d’acceptance / à la cible

● Charge le système comme prévu dans les exigences

– Objectif : vérifier que le système tient la charge demandé en pic

● Pré-requis : recueillir le besoin (SLA)

– Charge prévisionnelle en TPS

– Exigences de temps de réponse au 95eme centile

– Ratio d’erreurs

– Disponibilité

Page 79: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Préparer un test de chargeLes tests aux limites

● Charge le système jusqu’à ses limites

● Quelques limites intéressantes :– Décrochage : le ratio TR/nb utilisateurs commence à ne plus être

linéaire (devient exponentiel)

– Rupture (on ne respecte plus le TR ou ratio d’erreurs dépassé)

– Tombe en panne (plus aucune réponse)

● Objectif : déterminer la charge que peut supporter mon système

– De quelle marge je dispose ?

Page 80: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Préparer un test de chargeLes tests de robustesse

● Charge le système sur une longue période

– exemple : une semaine

● Objectif : détecter les dérives

– Fuites mémoire

– Remplissage de systèmes de fichiers

– Erreurs intermittentes

Page 81: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Préparer un test de chargeExemple de workflow

Page 82: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Préparer un test de chargeLes outils : l’outil de supervision

● Suivre/enregistrer la charge du système

● Corréler charge du système /charge injectée

● Métriques : CPU, mémoire, réseau, nb threads, ...

● Outils :

– APM (Application Performance Monitoring)

– Outils standards (top, vmstat.)

– plugins de l’injecteur (injecteur HTTP de jmeter)

JMeter Servers Performance Monitoring

Page 83: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Préparer un test de chargeLes outils : le profiling

● Analyser les problèmes de performance (hot spots)

● Temps de réponse détaillés

● Analyse de la mémoire (heap)

● Outils :

– Orienté développement : JVisualVM

– Orienté production : Mission Control, PinPoint, nombreux APM propriétaires

Oracle Mission Control

Page 84: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Préparer un test de chargeLes outils : les APM (Application Performance Monitoring)

● Analyser tout le système (chaîne de liaison complète)

● Peut être activé en production (avec prudence)

● Surtout pendant les campagnes de performance

Pinpoint APM

Page 85: Université de Nantes · Donner quelques patterns et anti-patterns ... ou microservices. ou pour du déploiement multi-version ... Architectures de plus en plus distribuées et complexes

Références

● Jez Humble, David Farley-Continuous Delivery_ Reliable Software Releases through Build, Test, and Deployment Automation-Addison-Wesley (2010) 

● Toby Clemson : https://martinfowler.com/articles/microservice-testing/

● Cours gestion de version Bertrand Florat : https://florat.net/cours_vcs/cours.html