Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 49

MGL869 : Introduction et

Motivation
Mohammed Sayagh

Département de génie logiciel et TI


Objectifs
• Comprendre le contexte de l’ingénierie de mise en
production.
• Pourquoi l’ingénierie de mise en production logiciel
est elle importante ?
• Contexte d’affaire des entreprises
• L’impacte des erreurs de mise en production
• La complexité des logiciels de nos jours
• Définition du DevOps, de l’ingénierie de mise en
production, et le lien entre les deux
1. Complexité des logiciels
Les logiciels de nos jours sont de plus en plus
complexes
Google 2000

Car Software 100

Facebook 62

Android OS 12

Google Chrome 6.7

Boeing 787 2.5

0 500 1000 1500 2000 2500


MLOC
Contexte technique : tout les composants sont
entrain d’évoluer en parallèle

“the exact composition of a


… system cannot be known
when it is being designed
and may vary from moment
to moment”
Le code source de Google
peut faire une pile de
papier 4.34 fois la taille
de Burj Khalifah!
317k mise à jour de
status, 147k photos sont
chargés et 54k liens sont
partagés dans
Facebook/min
L’architecture est
téllement
compliqué
Contexte technique : les systems de nos jours sont
large et multi-composants

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

Compilation Intégration Révision de


code

Tests Déploiement Livraison


(plus de détails dans le chapitre suivant)
Chaque modification de code prend un long voyage
d’intégrations avant d’arriver à la branche principale

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

Build cache > > 50k


50TB of memory builds/day
Des simples erreurs qui échappent peuvent avoir un
impact très négatif
2. Contexte d’affaire des entreprises
Contexte d’affaire

• La concurrence entre les entreprises est de plus en


plus féroce
• Les entreprises et ce qu’elles offrent dépendent de
plus en plus sur les logiciels
• Les entreprises qui survivent de nos jours sont celles
qui répondent aux besoin du client plus rapidement
• Entre autre, les entreprises les plus agiles.
“Facebook required
us to develop a
system that pushes
tens to hundreds of
diffs every few hours”
- Chuck Rossi

https://engineering.fb.com/developer-tools/rapid-release-at-massive-scale/
La publication de nouvelles versions est de plus en
plus rapide
Discussion

•Pourquoi c’est important de réaliser


rapidement ?
•Qu’est ce qu’on peut déployer/réaliser si
rapidement ?
Besoins du marché de nos jours : Mise sur le marché
rapide

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

“One of the most


fascinating kind of tools
we have at our disposal
is the ability to do active
experiments. It's kind of
this huge laboratory.”
Pourquoi atteindre ce rythme/productivité est si
important ?
• La compétition: Une entreprise qui n’est
pas capable de produire rapidement des
nouvelles versions est dans sa voix de
disparition.
• Augmentation de la valeur pour les
utilisateurs.
• Réduction de risques.
• Réduction de coûts.
Mais, comment peut on balancer la complexité des
logiciels et la compétition du marché ?
DevOps en générale et l’ingénierie de mise en
production en particulier
3. Les challenges que DevOps et l’ingénierie de mise
en production font face
Discussion

• Qu’elles sont les rôles qui interviennent dans le cycle


de vie d’un logiciel ?
• Qu’elles sont les taches typiques de chaque rôle ?
• Pourquoi on est pas capable de déployer rapidement
dans un contexte traditionnel ?
• On dit qu’il y a un conflit entre les développeurs (Dev)
et les opérateurs (Ops), pourquoi ?
Plusieurs rôles intervient dans l’ingénierie d’un
logiciel

QA

Business mangement Infosec Services de finances


Développeurs

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

•Comment l’entreprise fonctionne est un


bon prédicteur de ses résultats.
Aligner les objectifs pour atteindre une bonne productivité et qualité ne se fait par
magie ! Mais, par un ensemble de solutions (1) de gestion et (2) techniques
Définition

•L’ingénierie de mise en production consiste en


pratiques suivies pour mettre en production un
logiciel/changement de code
•Notre objectif de ces pratiques et d’améliorer
l’agilité de nos systèmes
•Tout en améliorant la qualité des versions
réalisées.
Exemple de pratiques

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:

• Réalisation par fonctionnalité:


Conclusion

• Le compétition entre les entreprises demande une


grande agilité
• Ce qui n’est pas facile dans les logiciels modernes qui
sont très complexes.
• Les pratiques du mise en production interviennent
pour balancer les la complexité et la demande du
marché

Vous aimerez peut-être aussi