DevOps Flashcards

1
Q

Introduction

A
  • Pendant longtemps, le développement et les opérations ont été des départements isolés.
    • Les développeurs écrivent du code ;
    • les administrateurs système sont responsables de son déploiement et de son intégration.
  • Etant donné que la communication entre ces deux silos était limitée, les spécialistes
    travaillaient séparément au sein d’un même projet.
  • Cette approche est acceptable pour le développement en cascade. Mais, avec l’approche Agile, ce modèle en silos n’est pas approprié.
    • Le fait que les itérations sont courtes et les releases sont fréquents (exp. toutes les deux semaines) nécessite une nouvelle approche et même un nouveau rôle au sein de l’équipe de développement.
  • Aujourd’hui, DevOps est l’une des approches de développement logiciel les plus utilisées.
    • elle est utilisée par Facebook, Netflix, Amazon, Microsoft et de nombreuses autres entreprises leaders du secteur.
    • elles ont adopté l’approche DevOps dans le but d’améliorer les performances, la réussite commerciale et la compétitivité.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Qu’est-ce que c’est DevOps ?

A
  • DevOps signifie développement et opérations.
  • une méthodologie de développement logiciel
    qui combine le développement logiciel ( Dev )
    avec les opérations informatiques ( Ops )
    participant ensemble à la globalité du cycle de
    vie.
  • une pratique qui vise à fusionner le
    développement, l’assurance qualité et les
    opérations (déploiement et intégration) dans
    un processus unique et continu.
  • Cette méthodologie est une extension
    naturelle des approches Agile et de livraison
    continue.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Activités composant le flux DevOps.

A
  • Plan : gestion des tâches, plannification
  • Code : développement du code et revue du code, outils de gestion du code source, intégration du code
  • Build : outils d’intégration continue, outils de contrôle de version, état du build
  • Test : outils de test continu qui fournissent un rapport sur les erreurs et les performances
  • Package : artefacts de déploiement, test de pré-déploiement de l’application
  • Release : gestion des changements, approbations des releases, automatisation des releases
  • Operate : installation de l’infrastructure, modifications de
    l’infrastructure (évolutivité), configuration et gestion de
    l’infrastructure, outils d’infrastructure, planification de la capacité,
    gestion de la capacité et des ressources, contrôle de sécurité,
    déploiement de services, garantir une disponibilité élevée, gestion
    des journaux/sauvegardes, restaurations de données, gestion de la base de données
  • Monitor : suivi des performances du service, suivi des logs, suivi de
    l’expérience de l’utilisateur final, gestion des incidents
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Les objectifs du DevOps

A
  • C’est une méthodologies qui assure :
    • Un développement plus rapide
    • Des résultats d’assurance qualité plus rapide
    • Un déploiement plus rapide
    • Des itérations incrémentales et des rétroactions continues
    • Une communication forte et continue entre les parties prenantes
      • les utilisateurs finaux et les clients, les propriétaires de produits, les développeurs, l’assurance qualité, etc.
    • Une mise en production plus rapide
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Les avantages du DevOps

A
  • Stabilisation de l’environnement
    • Renforce la cohérence, augmente le temps de disponibilité
  • Cycle de développement plus court
    • Gérer les exigences et le référentiel de code
  • Augmentation la fréquence des releases
    • Construction continue, déploiements sur demande
  • Nombre d’erreurs réduit
    • Processus contrôlé, tests automatisés
  • Métriques pour le processus
    • Suivre la durée de chaque étape, ainsi que les statistiques sur les erreurs et les exceptions
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q
  • Trois avantages couvrant les aspects technique, financier et culturel du
    développement.
A
  • Une vitesse de mise en production et une qualité plus élevées des versions du produit.
    • DevOps accélère la mise en production du produit en introduisant une livraison continue, en encourageant un feedback plus rapide du client et en permettant aux développeurs de corriger les bogues plus rapidement.
    • l’équipe peut ainsi se concentrer sur la qualité du produit et automatiser un certain nombre de processus.
  • Une réactivité plus rapide aux besoins des clients.
    • une équipe peut réagir plus rapidement aux demandes de changement des clients, en ajoutant de nouvelles fonctionnalités et en mettant à jour les fonctionnalités existantes.
    • les délais de mise sur le marché diminuent et la fréquence de livraison augmente.
  • Meilleur environnement de travail.
    • Les principes et les pratiques DevOps conduisent à une meilleure communication entre les membres de l’équipe, ainsi qu’à une productivité et une agilité accrues.
    • Les équipes qui pratiquent DevOps sont considérées comme plus productives et polyvalentes.
    • Les membres d’une équipe DevOps, aussi bien ceux qui développent que ceux qui sont en opération, agissent ensemble de concert.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q
  • Ces avantages ne viennent qu’avec la compréhension que DevOps
    n’est pas simplement un ensemble d’actions, mais plutôt une
    philosophie qui favorise la communication au sein d’une équipe
    interfonctionnelle.
  • DevOps ne nécessite pas de changements techniques substantiels car
    l’objectif principal est de modifier la façon dont les gens travaillent.
  • Le succès dépend du respect des principes DevOps.
    • En 2010, Damon Edwards et John Willis ont proposé le modèle CAMS pour
      présenter les principes clés de DevOps.
    • CAMS est un acronyme qui signifie :
A

Culture, Automation, Measurement, et
Sharing.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Principes DevOps
* Culture

A
  • DevOps est essentiellement une culture et l’état d’esprit qui forgent des liens de collaboration solides entre les équipes de développement logiciel et d’exploitation
    de l’infrastructure (opération).
  • Cette culture repose sur les piliers suivants.
    * Collaboration et communication constantes.
    * Ce sont les éléments constitutifs de DevOps depuis sa création.
    * Les deux équipes doivent travailler de manière cohérente avec une bonne compréhension des besoins et des attentes de tous les membres.
    * Changements progressifs.
    * La mise en œuvre de déploiements progressifs permet aux équipes de livraison de proposer fréquemment des versions du produit aux utilisateurs tout en ayant la possibilité de rapidement effectuer des mises à jour et revenir en arrière en cas de problème.
    * Responsabilité partagée de bout en bout.
    * Lorsque chaque membre d’une équipe vise un objectif commun et est également responsable d’un projet du début à la fin, ils travaillent de manière cohérente et cherchent des moyens de faciliter les tâches des autres membres.
    * Résolution rapide des problèmes.
    * DevOps exige que les tâches soient effectuées le plus tôt possible dans le cycle de vie du projet. Ainsi, en cas de problèmes, ils seront traités plus rapidement.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Principes DevOps
* Automatisation des processus

A
  • Automatiser autant de processus de développement, de test, de configuration et de déploiement que
    possible est la règle d’or du DevOps.
  • Il permet aux spécialistes de se débarrasser du travail répétitif chronophage et de se concentrer sur d’autres
    activités importantes qui ne peuvent pas être automatisées par leur nature.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Principes DevOps
* Mesure des KPI (Key Performance Indicators)

A
  • La prise de décision doit être guidée essentiellement par des informations factuelles.
  • Pour obtenir des performances optimales, il est nécessaire de suivre l’avancement des activités composant le flux DevOps.
  • Mesurer diverses métriques permet de comprendre ce qui fonctionne bien et ce qui peut être amélioré.
  • Fréquence de déploiement, taux d’échec des changements, Temps moyen de récupération (MTTR), Délai de mise en production, volume des changements, Taux d’erreurs non identifiées, nombre de billets ouvert par le clients, etc.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Principes DevOps
* Partage (Sharing)

A
  • DevOps souligne l’importance de la collaboration.
  • Il est crucial de partager les retours d’expérience, les bonnes pratiques et les connaissances entre les équipes car cela favorise la transparence, crée une intelligence collective et élimine les contraintes.
    * Vous ne voulez pas mettre tout le processus de développement en pause simplement parce que la seule personne qui sait
    gérer certaines tâches est partie en vacances ou a démissionné.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Modèle et pratiques DevOps

A

DevOps nécessite un cycle de livraison qui comprend la planification, le
développement, les tests, le déploiement, la publication et la surveillance
avec une coopération active entre les différents membres d’une équipe.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Modèle et pratiques DevOps
* Les pratiques de base qui constituent le DevOps :

A
  • Planification agile
  • Développement continu
  • Tests automatisés continus
  • Intégration et livraison continues (CI/CD)
  • Livraison continue
  • Contrôle continu - Monitoring
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q
  • Planification agile
A
  • Contrairement aux approches traditionnelles de gestion de projet, la planification Agile organise le travail en courtes itérations (par exemple des sprints) pour augmenter le nombre de versions.
  • Cela signifie que l’équipe ne peut définir que des objectifs de haut niveau, tout en
    faisant une planification détaillée pour quelques itérations à l’avance.
  • Cela permet une flexibilité et la possibilité de changement, une fois qu’un incrément de produit est rendu accessible et testé.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q
  • Développement continu
A
  • Le concept «continu» englobe le développement logiciel itératif, ce qui signifie que tout le travail de développement est divisé en petites portions pour un meilleur produit et une livraison plus rapide.
  • Les développeurs font des commits le code par petits morceaux plusieurs fois par jour pour qu’il soit facilement testé.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q
  • Tests automatisés continus
A
  • En plus des tests unitaires des développeurs, l’équipe d’assurance qualité met en
    place des tests de code à l’aide d’outils d’automatisation tels que Selenium, Ranorex,
    UFT, etc.
    • Si des bogues et des vulnérabilités sont identifiés, l’équipe est notifiée.
  • Cette étape utilise également le gestionnaire de source pour détecter à l’avance les
    problèmes d’intégration grâce aux tests unitaires.
    • Le gestionnaire de source permet aux développeurs de partager avec d’autres membres de
      l’équipe les modifications apportées au code pour tester l’intégration.
17
Q
  • Intégration et livraison continues (CI/CD)
A
  • Le code qui réussit les tests automatisés est intégré dans le gestionnaire de source.
  • Les fréquents commits du code empêchent les problèmes d’intégration.
  • La livraison continue est une approche qui fusionne les opérations de développement, de test et de déploiement dans un processus optimisé car il repose
    fortement sur l’automatisation.
  • Cette étape permet le déploiement automatique des mises à jour de code dans un
    environnement de production.
18
Q
  • Livraison continue
A
  • A ce stade, le code est déployé pour s’exécuter en production sur un serveur public.
  • Le code doit être déployé d’une manière qui n’affecte pas les fonctionnalités
    existantes déjà fonctionnelles et disponible pour un grand nombre d’utilisateurs.
  • Un déploiement fréquent permet une approche « fail fast », ce qui signifie que les nouvelles fonctionnalités sont testées et vérifiées tôt dans le processus.
  • Il existe divers outils automatisés qui aident à déployer un incrément de produit,
    comme Jenkins, Puppet, Azure Resource Manager et Google Cloud Deployment
    Manager.
19
Q
  • Contrôle continu - Monitoring
A
  • La dernière étape du cycle de vie DevOps est orientée vers l’évaluation de l’ensemble
    du cycle.
  • L’objectif du monitoring est de détecter les zones problématiques d’un processus et
    d’analyser les retours de l’équipe et des utilisateurs pour identifier les problèmes
    existants et améliorer le processus ou le fonctionnement du produit.
20
Q

Infrastructure en tant que code

A
  • L’infrastructure en tant que code (Infrastructure as Code - IaC) est une approche de gestion d’infrastructure qui rend possible la livraison continue et le DevOps.
    • Conteneurisation, Microservices, Infrastructure cloud, etc.
  • Il s’agit d’utiliser des scripts pour définir automatiquement l’environnement de
    déploiement (réseaux, machines virtuelles, etc.) à la configuration requise quel
    que soit son état initial.
  • Sans IaC, on devrait traiter chaque environnement cible individuellement, ce qui devient une tâche fastidieuse car on peut avoir de nombreux environnements
    différents pour le développement, les tests et la production.
  • L’environnement étant configuré en tant que code, vous
    • Pouvez le tester comme vous testez le code source lui-même et
    • Pouvez utiliser une machine virtuelle ou un contenneur qui se comporte comme un environnement de production pour tester en amont.
  • Une fois que le besoin d’évoluer se fait sentir, le script peut définir
    automatiquement le nombre d’environnements nécessaires pour qu’ils soient cohérents
21
Q

Responsabilités d’un DevOps
* Les responsabilités de base d’un
DevOps sont :

A
  • Rédaction des spécifications et de la
    documentation pour les
    fonctionnalités côté serveur
  • Gestion de la livraison continue et de
    l’intégration continue (CI/CD)
  • Évaluation et suivi des performances
  • Gestion des infrastructures
  • Déploiement et gestion du cloud
  • Assistance à l’adoption de la culture
    DevOps