Académique Documents
Professionnel Documents
Culture Documents
02 Motivation
02 Motivation
Motivation
Mohammed Sayagh
Facebook 62
Android OS 12
La communication entre
les composants n’est pas MySQL ->
v2
v3 MySQL
explicite Postgres
v3
v4 v1
Chaque composant v5
est developpé par
diffirentes équipes V4.0.1
10
L’architecture des nouveaux système sont de plus en
plus compliquées!
Contexte technique : l’ingénierie des systèmes de
nos jours sont de plus en plus complexes
Le développement d’un logiciel passe par un long voyage
qui est complexe avant d’arriver au client
Git Branch 1
Master Branch
Merge
Conflict
Branch 2
Release
Branch
MyApp
3rd party
library
Compiler et construire (build) un logiciel est aussi difficile
Le système de build d’un logiciel est souvent très
compliqué
2.6.21.5
Beaucoup de types de tests exist
Integration Component
Unit tests. tests. tests.
Installation
Load tests. System tests. tests. Regression tests
Beta-tests. Performance
tests. platform tests.
Malgré tout ça! Les nouveaux systèmes publient des
nouvelles versions plus fréquemment
20 code
> 5k > 2k projects change/min
developers
< 150k > 50M
tests/commit tests/day
https://engineering.fb.com/developer-tools/rapid-release-at-massive-scale/
La publication de nouvelles versions est de plus en
plus rapide
Discussion
https://bitbar.com/blog/the-value-of-testing-in-mobile-game-development/
Les logiciels tendent à réaliser des nouvelles versions
rapidement, moins cher et avec moins de risque
• Les entreprises qui
utilisent DevOps déploient
des dizaines, voir des
centaines de
modifications/jour.
• Les entreprises qui ne
suivent pas les principes
du DevOps ont toujours
des difficultés de déployer
une version par mois ou
même par semestre.
Expérimentations de nouvelles idées
QA
IT Operations
Les Dev et Ops sont en conflit
Blame Game : Les Développeurs et les operateurs
sont toujours en conflits
Non, ça marche
sur ma machine. Ta modification
C’est ne fonctionne
l’environnent de pas
production qui
n’est pas bon
C’est conflits peuvent causer des problèmes qui ne
sont détecté qu’à l’environnement de production
Non, c’est toi Ton code est
qui a mal trop lend.
configuré
l’environement
Cette exemple de
problème peut coûter les
grandes entreprises des
millions de dollars.
Calendrier du Dev vs Ops
Le conflit entre les Développeur et Operateurs est
un conflit “chronique”
• Des gros lots de travail arrivent à l’opération pour le déploiement
• Ces changements à déployer ne marche pas comme attendu sur les
environnements de production
• Beaucoup de va-et-vient entre les développeurs et l’opération
• Les solutions de contournement (qui sont généralement de mauvaise qualité)
augmentent dans le code et dans l’infrastructure
• Les retards de livraison
• Les managers essayent de récompenser le retard en promettant une grosse
nouvelle fonctionnalité
• On est de nouveau en retard, essayant de respecter les promesses dans un code
et une infrastructure pleins de dettes techniques
• La situation ne fait que s’aggraver avec le temps
• Le même problème peut arriver au moment de la résolution d’un boggue
Coût humain et économique de ce conflit
• Impact sur la rentabilité de l’entreprise :
• Prévient la réalisation des objectifs globales de
l’entreprise
• Réduit l’agilité
• Impact la satisfaction des clients
• Impact les promesses (ex : revenue, performance,
sécurité des données, etc.)
• Les ingénieurs ne s’engagent pas dans la prévention des
erreurs
• Le stress augmente <=> diminution de la motivation et
productivité
4. Définition du DevOps et de l’ingénierie de mise en
production
Définition du DevOps
• Wikipedia:
• DevOps est une culture et une pratique en matière d'ingénierie logicielle visant à
unifier développement de logiciels (Dev) et exploitation de logiciels (Ops).
• La principale caractéristique du mouvement DevOps est de plaider en faveur de
l’automatisation et de la surveillance à toutes les étapes de la construction de
logiciels, depuis l’intégration, les tests, la publication, le déploiement et la gestion
de l’infrastructure.
• DevOps vise des cycles de développement plus courts, une fréquence de
déploiement accrue et des versions plus fiables, en phase avec les objectifs de
l'entreprise.
• DevOps est une culture et un ensemble de pratiques visant à unifier les
objectives des équipes de développement et les équipes d’opération
pour améliorer l’agilité, la productivité et la qualité d’un logiciel.
Agile permet au Business de collaborer avec l’équipe de développent, DevOps
permet la collaboration entre l’équipe de développent et l’équipe d’opération
DevOps consiste que toutes les équipes aient une
objective commune qui sert l’entreprise
https://www.usenix.org/sites/default/files/conference/protected-files/ures14_slides_zapata.pdf
Les types des réalisations d’un logiciel
• Réalisation périodique: