
Chargement
Communicationis the new game

WTF is going on ?!
Le DevOps est un concept IT imaginé pour résoudre un problème de communication entre plusieurs équipes critiques :
- DEV- Development
- QA- Quality Assurance
- OPS- Technology Operations
L'équipe de développement et l'équipe opérationnelle ont deux buts distincts qui créent et alimentent les problématiques suivantes :
L'équipe de Dev- Cette équipe vise àdévelopper de nouvelles fonctionnalités fréquemmentet se fiche complétement de l'impact de son code sur l'opérationnel
L'équipe opérationnelle- Les Ops recherchent au maximumla stabilité du systèmeplutôt que les mises à jours, et est consciente de la performance des instances
Lespain pointsen entreprise
La mise en place d'une démarche DevOps devient pertinente lorsque :
- La méthodologie traditionnelle devient compliquée à mesure que le business évolue
- La validation des process est lourde, notamment en terme de sécurité ou de criticité des services
- Trop d'équipes sont parties prenantes du développement
- Trop de coûts
- Plusieurs environnements sont à gérer
- Il devient difficile de déployer des fonctionnalités régulièrement
Waterfall pattern
Pour le moment, la plus part des projets suivent lewaterfall patterntel que :
1.Requirements: Définir tous les prérequis de l'application.Pour faire simple, toute l'application...
2.Design: Designer toute l'architecture à mettre en place
3.Implementation: Développer l'application ou la fonctionnalité. Peu de place au changement, car tous les prérequis ont été définis à l'étape 1.En réalité, les demandes de changement arrivent, et avec elles, le décalage de mise en prod
4.Verification: Tester, tester et retester, encore
5.Maintenance: Déploiement et maintenance de l'application
Moral de l'histoire, le projet est statique et empèche toute adaptation à l'imprévu.
DevOps pattern
1.[Dev]Plan: Etape d'analyse du besoin, à créer avec l'équipe Ops
2.[Dev]Create: Design et développement de l'application et réalisation des tests unitaires
3.[Dev]Verify: Test applicatif et test de non-régression. Cette étape assure également que la stabilité du système ne soit pas compromise.Performance, fonctionnalités, etc...
4.[Dev]Packaging: Packager l'application ou la fonctionnalité, sous forme d'une étape dite "ready to deploy". Il est aussi pertinent de déployer dans un environnement de pré-production
5.[Ops]Release: Publier l'application ou la fonctionnalité en suivant une méthodologie. Il est critique de préparer un plan de rollback si jamais la stabilité du système est compromise.
6.[Ops]Configure: Configuration de l'infrastructure et du système IT
7.[Ops]Monitor: Récupérer des metrics sur la performance de l'infrastructure mais également des informations sur l'expérience utilisateur ainsi que sur l'application.
Les deux équipes doivent participer à toutes les étapes du process afin de garantir l'efficacité de la démarche DevOps
Concrétement...
1.Développement
2.Continuous Integration
3.Tests automatisés
4.Continuous Delivery
5.Continuous Deployment
6.Monitoring
FunFacts
Il est plus simple d'adopter une démarche DevOps en début de projet. Cependant,le coût d'installation va augmenter.
Il est également pertinent d'utiliser du DevOps lorsque le projet s'annonce être complexe, maisle temps de développement peut être multiplié par 2.
Toujours dans l'optique d'éviter tout problème de communication,le DevOps est util si vous n'êtes pas en charge de toute la chaine de production. Par contre,toutes les personnes doivent comprendre le processmis en place (Dev, QA, Ops, etc).
Enfin,lorsque le produit doit être bien testéet que l'on souhaitedéployer régulièrementde nouvelles fonctionnalités ou de nouveaux services, le DevOps est la méthodologie à suivre !
Une communication àdouble sens
Les Ops vers les Dev :
- Expliquer l'environnement de production
- Informer sur l'architecture et ses changements
- Montrer l'installation et la configuration de l'environnement de développement
- Expliquer la criticité de l'expérience utilisateur requise
- Les Ops ont une vision globale du produit
Les Dev vers les Ops :
- Donner les outils et les process qui peuvent aider à gérer et construire l'environnement
- Expliquer l'application et les besoin fonctionnels pour optimiser les ressources, monitorer et gérer les erreurs
- Les Dev peuvent optimiser le travail de toutes les parties prenantes
Continuous Integration -CI
- Est exécuté à chaque modification du code source.Ex : git push
- Est utilisé pour générer du code
- Permet de compiler le code source
- Permet d'excuter des tests unitaires
- Vérifie la compatibilité avec l'état actuel du produit
Le rôle du serveur d'intégration est de contrôler et gérer la production du code : Test, stabilité et analyse du code.
Continuous Delivery -CD
Cette phase permet la possibilité de déployer une fonctionnalité ou un fix à n'importe quel moment.
Cette étape dépend directement de la précédente
On peut également "stacker" les fonctionnalité à cette étape et les déployer en une fois
Continuous Deployment
Cette étape permet de mettre en place une phase d'automatisation pour la publication de fonctionnalité ou de patch.
A chaque fois que les phases précédentes sont validées, cette étape va automatiquement ajouter la fonctionnalité à l'environnement présent (production ou pré-production) dans intervention humaine.
Monitoring
Il est tout aussi crucial en aval de la phase de développement de rester au courant de son système d'information et de sa stabilité.
Il est également possible d'ajouter de l'automatisation à cette étape, comme par exemple :
- Scalerverticalement ou horizontalementun service automatiquement en fonction d'un changement de ressource nécessaire ou disponible
- Créer un ticket et la branche git associéeautomatiquement lors d'un crash de l'application