Différence entre DevOps et Software Configuration Management

16

Quelle est la différence entre les opérations de développement et la gestion de la configuration logicielle?

Pour moi, cela semble être le même tant que DevOps et la gestion de la configuration logicielle se concentrent sur:

  1. Mettre en place une infrastructure de développement - être en charge du contrôle de version , de la gestion des builds, de la gestion du déploiement, de la gestion des dépendances, de l'intégration et de la livraison continues , etc.
  2. Utilisation des meilleures pratiques pour organiser l' environnement des développeurs .
  3. Assurance qualité des processus de développement - collecte de mesures de l'efficacité du développement, élimination des goulots d'étranglement du processus de développement (exécution de tests unitaires, évaluation de la couverture des tests unitaires, exécution d'inspections, etc.)
  4. Gestion des infrastructures - plateformes cibles et spécificités.
  5. Gestion des versions - s'assurer que la version a été livrée au client / client à temps.

Peut-être que je manque quelque chose? Ce lien montre que l'utilisation du terme «Gestion de la configuration logicielle» prévaut. Mais encore, quelle combinaison de mots préférez-vous utiliser pour décrire la gamme d'activités répertoriée: opérations de développement ou gestion de la configuration logicielle ?

altern
la source

Réponses:

19

Les termes décrivent des concepts et des responsabilités très similaires et, en général, ils sont quelque peu synonymes. Le terme «DevOps» est relativement nouveau, popularisé par la conférence Devopsdays Gand 2009 et les événements Devopsdays ultérieurs . Il est mieux décrit dans ce diagramme :

entrez la description de l'image ici

D'un autre côté, la gestion de la configuration logicielle est un terme beaucoup plus établi au sein de la profession et dérive du terme de gestion de configuration non spécifique au logiciel . La gestion de la configuration logicielle est souvent référencée dans un contexte de génie logiciel, une définition simple est donnée par Roger Pressman dans "Génie logiciel: approche d'un praticien" :

est un ensemble d'activités conçues pour contrôler le changement en identifiant les produits de travail susceptibles de changer, en établissant des relations entre eux, en définissant des mécanismes de gestion des différentes versions de ces produits de travail, en contrôlant les changements imposés, et en vérifiant et en rendant compte des changements effectués.

Bien que tous les termes que vous référencez soient vagues, DevOps semble être juste une manière moins formelle de décrire plus ou moins le même ensemble de principes que la gestion de la configuration ou la gestion de la configuration logicielle si on les considère du point de vue d'un développeur de logiciels, en particulier en donnant la priorité aux équipes étroitement couplées :

DevOps est une réponse à la prise de conscience croissante qu'il existe un décalage entre ce qui est traditionnellement considéré comme une activité de développement et ce qui est traditionnellement considéré comme une activité opérationnelle. Cette déconnexion se manifeste souvent par un conflit et une inefficacité.

Dans le même article, les similitudes avec SCM sont notées:

Ajout au mur de la confusion est le décalage trop commun dans l'outillage de développement et d'exploitation. Jetez un œil aux outils populaires que les développeurs demandent et utilisent quotidiennement. Jetez ensuite un œil aux outils populaires que les administrateurs système demandent et utilisent quotidiennement. À quelques exceptions notables, comme les suiveurs de bogues et peut-être SCM , il est peu probable que vous constatiez un grand intérêt à utiliser les outils les uns des autres ou une intégration significative entre eux. Même s'il y a un certain chevauchement dans les types d'outils, souvent les implémentations seront différentes dans chaque groupe.

Quant à l'utilisation des termes, votre comparaison n'a pas vraiment de sens:

  1. SCM est un sous-ensemble de CM, pas un terme compétitif,
  2. DevOps est un terme assez nouveau, inutile de comparer avec les termes établis,
  3. DevOps dérive des opérations de développement (évidemment) mais est rarement étendu en tant que tel.
yannis
la source
Voulez-vous dire que SCM en tant que gestion de code source ou gestion de configuration logicielle est un sous-ensemble de CM?
alternatif le
@zaphod_beeblebrox: cette image est tirée de l'article de wikipedia: en.wikipedia.org/wiki/DevOps :)
alternatif le
@altern Paragraphe sous la jolie image: "D'un autre côté, la gestion de la configuration logicielle est un terme beaucoup plus établi au sein de la profession, et dérive du terme de gestion de configuration non spécifique au logiciel." : P La photo est également tirée du blog auquel j'ai lié. Si l'auteur l'a emprunté à Wikipedia, je ne le saurais pas.
yannis
@zaphod_beeblebrox: Je devrais alors probablement changer le titre de ma question
altern
@altern Que voulez-vous dire? La gestion de la configuration logicielle n'est pas seulement dans le titre. Aussi ce que le diable est "Gestion du code source". Voulez-vous dire le contrôle des révisions? Si oui, le contrôle des révisions est un aspect de la gestion de la configuration logicielle, donc la réponse reste telle quelle. Mais comparer le contrôle des révisions aux devops est pour le moins bizarre.
yannis
6

Étant personnellement un gestionnaire de configuration logiciel principal pendant de nombreuses années (10+), j'entends les termes qui ne correspondent pas dans une variété de situations de la vie réelle. Il n'est pas rare pour le personnel non technique en raison de la nature relative des postes. Ils ont tous deux des rôles, des besoins et des exigences spécifiques qui sont similaires mais qui peuvent néanmoins être clairement divisés à mon avis.

Je crois que la meilleure façon de décrire la division de ces rôles est de se concentrer sur leur relativité à l'interaction. Cela signifie que la gestion de la configuration logicielle se concentre sur les systèmes et environnements internes, ainsi que sur l'intégration, le déploiement, la publication et la gestion du code source. Where as Developer Operations (DevOps) se concentre davantage sur l'aspect opérationnel de l'architecture d'application à l'extérieur, tout en maintenant une compréhension claire du code tel qu'il était destiné à être utilisé et de la pratique de son environnement. Si les performances d'une machine montrent des signes de dégradation, la communication entre plusieurs applications est défectueuse, la communication d'entreprise à entreprise (BtB) et / ou les limites de l'architecture par rapport à un environnement de production, vous devriez vous tourner vers les opérations du développeur pour leur diagnostic et Solution.

En règle générale, d'après mon expérience, le gestionnaire de configuration logicielle peut également effectuer ces tâches, mais cela enlève à son objectif principal le suivi, la gestion et le déploiement des configurations d'environnement et des révisions logicielles. Gérer le logiciel qui permet la séparation des tâches, le suivi des bogues et des défauts, le suivi des projets, ainsi que le cycle de vie et le flux de travail du développement logiciel. Ces tâches ne sont pas au cœur des opérations du développeur et sont donc moins impératives, mais elles peuvent toujours être effectuées.

J'ai vu de nombreux cas de confusion de chacun, et dans chacun il y a un croisement limité. Cependant, il est très important de penser aux différences entre les responsabilités de chacun des postes indépendants par rapport à leur objectif principal. Principalement lorsque vous traitez avec des systèmes et du matériel utilisés en interne pour gérer la configuration des environnements et la sortie du produit, vous devriez rechercher un gestionnaire de configuration logicielle. D'autre part, lorsque vous traitez avec les performances du système, la surveillance, la recherche et le diagnostic des systèmes utilisés par vos clients, vous devriez vous tourner vers les opérations de développement ou DevOps.

Or, ce n'est pas une signification comme une diatribe, ni comme une réponse définitive, mais plutôt une identification personnelle des différences de chacune des positions. Je voudrais savoir si je suis bien loin de la base, ou si les choses sont clarifiées par cette réponse.

Phyro
la source
2
Honnêtement, quand tout est réduit, DevOps vise à sensibiliser les développeurs de logiciels et à leur rendre compte de la gestion de la configuration des logiciels. Lorsque vous faites cela, vous obtenez une approche entièrement différente de la SCM que ce qui était traditionnellement fait - une plus axée sur l'intégration continue et la livraison continue, et une avec (généralement) moins d'êtres humains dans le mélange. DevOps peut être (et est souvent) considéré comme Lean appliqué à SCM, tout comme Agile peut être considéré comme Lean appliqué au développement logiciel.
Calphool
4

Il serait difficile de trouver une définition solide pour DevOps. C'est plus une idée qu'un travail à faire. Et c'est une idée trop nouvelle pour que tout le monde s'entende exactement sur ce que cela signifie. Néanmoins, voici mon point de vue.

DevOps n'est vraiment qu'un nouveau terme pour la gestion de la configuration, mais il a été choisi pour montrer que le rôle n'est pas un rôle individuel, c'est une collaboration entre l'équipe de développement et l'équipe d'exploitation.

Historiquement, la gestion de la configuration était effectuée uniquement par l'équipe de développement, puis confiée aux opérations qui verraient tout cela avec une profonde suspicion. Ce qui est assez juste, pour être honnête. Ils en sont responsables. Ils sont les premiers à être appelés à 4h du matin quand ça tourne mal. Ils devraient vraiment participer à son développement.

pdr
la source
1

C'est la simple clarification de la question: DevOps est un terme utilisé pour décrire la coordination ou la relation entre le développement (développement des codes de programme dans l'environnement de développement) et les opérations (assurant une disponibilité maximale de l'environnement de production).

La gestion de la configuration logicielle est un moyen de réaliser cette coordination. SCM impliquait des outils et des techniques pour gérer l'automatisation du processus de passage du développement à la production (opérations)

Pour résumer, SCM connecte Dev et Ops.

La connexion entre le développement et les opérations est SCM

Kindson The Genius
la source
-1

Je vois que DEVOPs est à la fin de l'exécution opérationnelle - les scripts d'automatisation du déploiement, les mises en place de l'environnement, ce genre de chose. SCM, d'autre part, concerne l'intégrité des produits et la gestion efficace et la traçabilité des modifications apportées aux produits. J'ai toujours considéré ALM comme faisant partie de SCM - après tout, comment diable pouvez-vous gérer les modifications apportées à un produit si vous n'avez aucune idée des pilotes du changement ou qui les a effectués? Les cadres de déploiement peuvent tomber des deux côtés - et quel côté dépendra invariablement des besoins réglementaires de l'organisation pour laquelle vous travaillez - après tout - voulez-vous qu'un développeur puisse faire un hack rapide qui signifie que votre appareil de dialyse ne fonctionne correctement que 99,99% du temps, ou avez-vous besoin de cette situation pour vous permettre de pirater le code de votre site Web parce que vos développeurs ont des adresses IP codées en dur?

Jack
la source
4
cela ressemble plus à une diatribe qu'à une réponse à la question posée
gnat
Deer Hunter, A Rant, oui bien sûr, mais pertinent? 100%. Faites-moi confiance à ce sujet - jusqu'à ce que l'industrie se développe et arrête les gadgets, les marches de la mort ne se poursuivront pas seulement, elles empireront. C'est une promesse.
Jack
Les déclamations sont bien, mais stackexchange n'est pas l'endroit pour eux.
matt freake