Académique Documents
Professionnel Documents
Culture Documents
Synthèse 3eme
Synthèse 3eme
Livraison continue
Le développeur fait du code fonctionnel
Il le met dans le versionning
Tout le reste est automatisé :
o Compilation du code avec les changements de tous
o Tests (interfaces, unitaire, etc.)
o Déploiement sur des serveurs de test
o Entre chaque étape on reçoit un résultat et si chaque étape fonctionne
Déploiement sur serveur test ou prod
Permet le déploiement à chaque moment et après chaque changement. À tout moment, ils ont une
version prête à être déployé.
Build pipeline
C’est les différentes étapes automatisées de la livraison ou le déploiement continu. On peut y ajouter
toutes les étapes qu’on souhaite automatiser.
Déploiement continu
Chaque changement (surtout les petits changements), si tous les tests passent, est déployé. C’est
utilisé dans les grosses boîtes. On pousse la livraison continue, plus loin.
Déploiement automatisé
C’est utile d’avoir un environnement seulement pour les développeurs, avec le dernier code et un
autre environnement, pour le client, avec la dernière version stable. Cette dernière doit être le plus
proche possible de l’environnement de production, pour faciliter le déploiement. Mais ce n’est pas
pratique de maintenir plusieurs serveurs.
C’est des scripts pour automatiser le déploiement. Cela permet de ne pas oublier des choses au
moment du déploiement. Et ça permet de faire le déploiement plus rapidement et plus facilement.
Métriques
Faits par des développeurs, pour les développeurs. Permet de repérer des problèmes ou attire
l’attention sur quelque chose.
Mais c’est à double-tranchant : si les managers se réfèrent seulement à ça, ça va induire des
mauvaises pratiques (par ex. : on voudra corriger seulement des petits bugs, pour avoir le plus de
bugs corrigés,)
1
Code coverage : pourcentage de code couvert par les tests
Code coverage
Les tests appellent les méthodes et les classes, donc on va voir toutes lignes qui ont été exécutées et
calculer le pourcentage, en fonction du nombre de lignes totales. Cela permet de savoir, si on a
oublié de faire des tests, pour du code. C’est pratique pour le développeur.
Si vous voulez faire changer le pourcentage, vous pouvez facilement « tricher ». Donc il ne faut pas
seulement se référer au code coverage.
Tests
Tester par petites parties, quitte à faire des copier-coller. Pendant les tests, l’accès est bloqué aux
autres classe Dès un changement est fait et que ce n’est plus fonctionnel, le test ne passe plus. On
sait précisément d’où ça vient !
Cela ne sert à rien de tester du code généré automatiquement où qui font appel à des méthodes de
libraires, qui fonctionnent.
Tests unitaires
Appelle un morceau de code
Tests d’interface
C’est un test plus concret, sur le fonctionnement de l’application à partir de l’interface Pratique
pour les applications web, mais beaucoup plus lourds à mettre en place
Integration test
Appelle la base de données aussi et l’interaction avec la logique du code
Component test
Teste les couches internes de l’application
Blue/Green Deployement
À tout moment, seul l’un des environnements est en direct, avec l’environnement en direct
desservant tout le trafic de production. Pour cet exemple, Blue est actuellement en direct et Green
est inactif.
Au fur et à mesure que vous préparez une nouvelle version de votre logiciel, le déploiement et
l’étape finale des tests se déroulent dans l’environnement qui n’est pas en direct : dans cet exemple,
Green. Une fois que vous avez déployé et testé entièrement le logiciel en vert, vous basculez le
routeur de sorte que toutes les demandes entrantes passent maintenant à vert au lieu de bleu. Le
vert est maintenant live, et le bleu est inactif.
Il y a une complexité ajoutée, avec la DB. On peut facilement ajouter des nouveaux champs, mais s’il
faut retire des champs, ça devient compliqué.
2
Dark Launch
Le Dark Launch est un processus où le logiciel est progressivement ou "invisiblement" libéré aux
consommateurs afin d’obtenir des commentaires des utilisateurs et de tester les performances. Le
code est enveloppé dans un "feature flag" de caractéristique ou une "feature toggle" qui est utilisée
pour contrôler qui peut voir la nouvelle fonction et quand. C’est aussi utilisé pour des releases
spéciales : par ex. des fonctionnalités pour la période des fêtes, …
Canary Release
On déploie une nouvelle version seulement à certains utilisateurs. On peut arriver à faire ceci avec le
Dark Launch ou avec le Blue/Green Deployement.
A/B testing
Cela permet de faire des tests de fonctionnalités, auprès des utilisateurs, sur deux versions
différentes. Par exemple deux versions avec des UI différents, pour savoir laquelle est plus efficace au
niveau des utilisateurs. On peut faire ceci avec du Blue/Green Deployement ou les features toggles.
DevOps
DevOps >< ITIL
ITIL
Méthodologie avec deux équipes distinctes : change et run. Chaque équipe à sa hiérarchie
(managers,etc) qui n’ont pas forcément les mêmes objectifs.
Le change veut faire beaucoup de changements, souvent. Tandis que le run préférerait l’inverse.
DevOps
Le devOps est un mouvement visant à l’alignement de l’ensemble des équipes du système
d’information sur un objectif commun, à commencer par les équipes de dev ou dev engineers
chargés de faire évoluer le système d’information et les ops ou ops engineers responsables des
infrastructures (exploitants, administrateurs système, réseau, bases de données, ...).
Donner les mêmes responsabilités aux Dev et Ops le dev est plus enclin à faire en sorte
que l’application est plus facilement utilisable par l’Ops. S’il y a un souci avec l’application, ce
n’est plus l’ops qui est appelé, mais le dev
On les fait travailler au même étage, voir l’un à côté de l’autre, on évite les « barrières »
entre les équipes Besoin de moins de doc, car ils collaborent plus
Le dev voit aussi l’utilisation de son application Permet l’optimisation dans le code, car il
apprend l’utilisation réelle (comment ça fonctionne au jour le jour)
Automatiser certains tests (tests d’interfaces) Pas besoin de faire des réunions et de
tests inutiles. Les rapports sont faits automatiquement aussi
3
Livraison continue pour l’infrastructure !
Chaos Engineering
Combien de temps me faut-il pour remettre mes serveurs en route, après un disaster?
Dans le monde ITIL : Disaster Recovery Plan (DRP). Un très gros plan, détaillé avec les différentes
étapes pour remettre en routes les serveurs. Il faut s’entraîner pour les DRP.
Avec des outils DevOps, on peut remettre un serveur en route, très rapidement, grâce au fichier de
config du serveur.
Chaos monkey
Application que Netflix lance dans leur application, pour tout casser (de manière imprévisible) ! Pour
observer ce qu’il se passe dans différents cas. L’idée est de simuler les problèmes, pour être sûr que
leur système se rétablit bien lors de problèmes.
Si vous cassez des choses toutes les semaines On aura l’habitude et de le réparer et on ne
découvrira pas seulement au moment où le serveur crash !
Safe
Méthodologie psuedo-agile, avec un manifest, bouquin, … C’est une approche waterfall d’agile. Une
approche restrictif d’agile.
LeSS
Cadre gloable qui est proposé, mais beaucoup moins de détails que Safe. Reste un peu restrictif.
Nexus
Basé sur Scrum of Scrum. On désigne une équipe qui suit au jour le jour, l’avancement des autres
équipes et faire en sorte que l’intégration des différentes parties des équipes se fait bien.
Spotify
Pas vraiment de structure. Ils encouragent aux équipes de tester des nouvelles choses. Et les
personnes avec des rôles similaires de chaque équipe, échangent souvent leur découverte.
Conclusion
Il faut plutôt être agile que faire agile. Il ne faut pas essayer de suivre les autres sociétés, à la lettre. Il
faut aussi limiter la croissance de l’entreprise Plus il y a du monde, plus on passe du temps à
essayer de trouver la bonne méthodologie.
Projets à forfait
Forfait Régie
4
- Prix fixe en fonction des fonctionnalités - Consultance ou Time & Means
demandés par le client, au début - On facture par jour
- Risque chez le fournisseur, car s’il vous - Risque chez le client, car si ça prend
faut plus de temps que prévu, vous ne plus longtemps que prévu, c’est lui qui
serez pas payé en plus paie
Il faut une analyse détaillée de ce qu’on veut faire ! L’agilité n’est pas possible pour ça
Les grands projets à forfaits amènent de grands risques. L’idéal est de commencer avec des petits
projets.
Il faut prévoir une marge, dans le temps, car il faut 60% pour faire ce que le client a demandé et 40%
pour faire des changements.
Lean
Historique
Toyota >< Ford : Modèles qui ont été appliqués à l’informatique, par après.
Ford Toyota
- Idées du scientific management de - Des gens qui sont capables d’un peu
Taylor tout faire
- Rationnaliser - Des machines qui font la plupart des
- Des personnes qui ont Instruction choses avec un nombre limité de gens
claires, précises et répétitives (on sait qui s’occupent des machines On ne
prédire cmb de temps ça doit prendre) sait pas les remplacer aussi facilement
- D’autre gens qui réfléchissent à quels que chez Ford
sont les opérations à faire et comment
les optimiser
Just in time
On va développer des choses, chez Toyota, au moment où on en a besoin. On améliore la production,
pour que quand on a besoin des pièces, on sait les obtenir rapidement.
C’est l’inverse, chez Ford, où ils stockent des pièces, donc ils font tourner les machines à plein
régime, pour essayer de rentabiliser Gaspillage
5
a. Code qui traîne sur une machine
b. Documents inutiles
c. Changer constamment de tâche
d. Procédures inutiles
e. Attentes entre étapes : réduire leap time
2. Amplify learning : nous encourage à apprendre des nouvelles choses
3. Decide as late as possible : ça a de la valeur de prendre des décisions plus tard (parfois ça
vaut le coût de dépenser, pour ne pas être bloqué, sur une plateforme par ex)
4. Deliver as fast as possible: just in time
5. Empower the team : c’est l’approche p/r aux employés, il faut demander leur avis
6. See the whole : il ne faut pas optimiser les choses à une trop petite échelle (optimiser au
niveau de l’équipe, plutôt qu’au niveau de la personne)
7. Kanban (trello) : Origine chez toyota. Le vendeur laisse le kanban, chez la personne qui
monte la voiture, s’il lui manque des pièces, il laisse un kanban chez la personne
correspondante
Lean Startup
S’inspire des principes Lean. Permet d’amener une startup à un buisines durable. Il faut adapter ses
principes à une startup, car ça diffère d’une entreprise déjà existant depuis longtemps.
Apprentissage valorisé
Il ne faut pas partir avec la même optique d’une entreprise normale. Il faut aussi valoriser
l’apprentissage. Il faut revoir le modèle de management classique.
- L’objectif de la startup est d’apprendre si l’idée peut mener à un business viable. Donc tout
ce qui ne sert pas cet objectif est inutile Il ne faut pas punir l’apprentissage
- Pas besoin de mettre la qualité d’un produit fait pour la vente, il faut doser la qualité
Pivot
Si la croissance n’est pas ce qu’on espère, on change une chose du produit et on voit ce que ça
donne. Le but c’est de faire un maximum d’expériences dans le temps qu’on a, pour savoir ce qui
marche. Il faut changer qu’un seul changement à la fois.
Il faut apprendre assez rapidement. Si dans X temps, on n’a pas assez de croissance, il faut
changer quelque chose !
No Estimate
C’est du gâchis de passer beaucoup de temps à estimer des fonctionnalités sur lesquels on ne pas
travailler maintenant. On estime les fonctionnalités sur lesquels on va travailler en premier. Travailler
d’abord sur la priorité.