Rapport DORA 2019: comment améliorer les performances de DevOps



Il y a quelques années, de nombreuses organisations considéraient DevOps comme une expérience prometteuse, plutôt que comme une approche de base du développement de logiciels. Désormais, DevOps est un ensemble éprouvé et puissant de pratiques et d'outils de développement et de déploiement qui accélèrent les lancements de nouveaux produits et augmentent la productivité. Plus important encore, l'effet DevOps vise la croissance globale de l'entreprise et augmente sa rentabilité.

L'équipe Mail.ru Cloud Solutions a traduit le plus intéressant du rapport Accelerate State of DevOps 2019 , compilé par des experts de DevOps Research & Assessment (DORA). L'étude a impliqué 31 000 professionnels du monde entier. Voyons ce qui a changé dans l'industrie en 2019 et comment une entreprise peut augmenter l'efficacité de la livraison de logiciels.

Impact de l'industrie et de la taille de l'entreprise sur DevOps


L'étude n'a pas identifié de lien entre les performances de DevOps et l'industrie de l'organisation, à l'exception du commerce de détail, où les performances étaient légèrement meilleures. Cela est notamment dû au fait que les détaillants doivent réagir rapidement aux fluctuations de la demande et des besoins des clients. Selon l'étude, toute entreprise, y compris le secteur financier et le secteur public, peut atteindre un niveau élevé de DevOps.

Les indicateurs de performance DevOps dans les entreprises de plus de 5 000 employés étaient inférieurs à ceux des entreprises de moins de 5 000 employés. Cela est probablement dû au fait que dans les grandes organisations, des processus plus importants, un contrôle plus strict, une architecture plus compliquée des systèmes informatiques, ce qui entraîne des retards dans le processus de développement et de déploiement du code. Dans le même temps, les experts estiment que la taille de l'entreprise n'entrave pas le succès de la création de DevOps, mais dans certains cas, cela peut nécessiter plus d'efforts.

Comment évaluer le niveau de DevOps dans une entreprise


Les experts ont comparé les processus DevOps à une référence, en divisant les participants à l'enquête en quatre groupes avec les meilleurs, bons, moyens et faibles indicateurs.

Quatre métriques clés pour évaluer l'efficacité de DevOps ont été prises pour le rapport: le temps nécessaire pour terminer les modifications pendant le développement du logiciel, la fréquence de déploiement, la fréquence des échecs et le temps de récupération.

Quatre niveaux de DevOps - évaluez l'emplacement de votre entreprise:

Mesure d'évaluation des performances de livraison de logiciels pour les principaux services et applications de l'entreprise
Les meilleures équipes
Bonnes équipes
Équipes moyennes
Équipes à faible score
Fréquence de déploiement
Fréquence à laquelle une entreprise déploie du code en production ou le diffuse aux utilisateurs finaux.
Sur demande, plusieurs déploiements par jour
Une fois par jour à une fois par semaine
De une fois par semaine à une fois par mois
Une fois par mois / plusieurs mois
Modifier le délai de livraison
Combien de temps faut-il pour passer d'un test à un logiciel qui fonctionne correctement en production.
En moins d'une journée
D'un jour à une semaine
D'une semaine à un mois
Mois à six mois
Temps de récupération du service
Combien de temps faut-il pour restaurer un service après un incident ou un bug affectant les utilisateurs.
Moins d'une heure
Pendant la journée
Dans une semaine
De semaine en mois
Modifier le taux d'échec
Quel pourcentage de mises à jour ou de nouvelles versions entraîne un mauvais service et doit être corrigé.
0-15%
0-15%
0-15%
46-60%

L'étude a révélé la tendance suivante: le nombre d'équipes avec un niveau élevé d'indicateurs a presque triplé, passant de 7% de l'ensemble des répondants en 2018 à 20% en 2019.


Répartition des équipes de développement par niveau de performance.

Par rapport aux équipes du groupe à faible performance, les équipes DevOps à haute performance:

  1. A déployé 208 fois plus de déploiements de code.
  2. 106 fois moins de temps passé à déployer du code.
  3. 7 fois moins susceptibles de rencontrer des échecs.
  4. 2.604 fois plus rapide pour restaurer le logiciel après des échecs.

De plus, les équipes DevOps avec des scores élevés sont deux fois plus susceptibles d'atteindre ou de dépasser leurs mesures de performance organisationnelles que les équipes avec des scores faibles.

De nombreux experts pensent qu'il est impossible d'obtenir une augmentation de tous les indicateurs en même temps, nous devons faire des compromis. Ainsi, certaines personnes pensent que l'augmentation de la vitesse de déploiement des versions peut nuire à la fiabilité du processus de livraison de logiciels et de la fourniture de services. Cependant, des études ont montré que la vitesse et la stabilité des résultats ne s'excluent pas mutuellement.

Dans la croissance du nombre d'équipes DevOps, je ne vois rien de surprenant, c'est logique: la philosophie DevOps est désormais populaire, et le nombre de startups augmente.

Mais, à mon avis, les experts ont choisi des paramètres pas tout à fait corrects pour évaluer l'efficacité de DevOps.

L'évaluer par la vitesse de déploiement du code est au moins étrange. Cela ne s'applique qu'aux start-ups, où le paramètre clé sera la vitesse à laquelle le produit est mis sur le marché, et souvent le produit est affiché sous forme brute. Dans de telles circonstances, les mécanismes qui accélèrent le développement et la livraison de la production sont essentiels. Mais pour un logiciel bien établi, comme financier ou médical, le paramètre de la fréquence des pannes peut ne pas exister - les pannes peuvent être inacceptables.

De même, avec le temps de récupération d'un service: pour tout service développé, il doit être calculé en quelques secondes, et pour de nombreux services un simple est inacceptable, pour cela ils ont inventé des technologies de roulement sans couture (par exemple, vert / bleu).

De plus, ne vous concentrez pas sur le nombre de déploiements de code - cela dépend des besoins et des compétences de l'équipe de développement. Si le déploiement implique l'ajout de nouvelles fonctionnalités, c'est une chose, et si la correction des erreurs commises lors des déploiements précédents est complètement différente.

Denis Romanenko, expert indépendant Mail.ru Cloud Solutions

Comment améliorer les processus DevOps


Le rapport présente deux domaines qui aideront à améliorer DevOps: l'amélioration de l'efficacité du développement et de la livraison de logiciels et l'amélioration de la productivité.


Chacune des directions comprend ses propres composants, ce qui vous permet d'atteindre l'objectif souhaité.

Selon le rapport, la clé de la transformation numérique est la culture d'entreprise. Les équipes DevOps hautement efficaces ont besoin d'une culture de confiance et de sécurité psychologique, d'une compréhension des résultats de travail et d'objectifs clairs. Un tel environnement permet aux membres de l'équipe de prendre des décisions éclairées, d'exprimer leurs opinions et d'être plus créatifs.

Les technologies cloud, la livraison continue, les tests de reprise après sinistre et la gestion des changements contribueront également à améliorer l'efficacité du développement et de la livraison des logiciels. La productivité du travail peut être améliorée en investissant dans des outils faciles à utiliser, en réduisant la dette technique, c'est-à-dire en réduisant le pourcentage de code inefficace et de technologies obsolètes, en organisant une base de connaissances d'entreprise et l'accès à des solutions externes.

Je pense que la méthodologie et l'idéologie de DevOps est précisément que ces processus ne dépendent pas de conditions externes, comme un cloud ou votre propre matériel. Le cloud lui-même n'est rien de plus qu'un outil, quelque part il aidera, quelque part il gênera ou ne sera pas en demande.

Denis Romanenko, expert indépendant Mail.ru Cloud Solutions

Ci-dessous, nous allons examiner certains des composants de l'amélioration de l'efficacité des commandes DevOps.

La technologie cloud contribue au succès de DevOps


En 2019, de plus en plus d'organisations choisissent des solutions cloud qui augmentent considérablement la productivité des équipes DevOps.


Quelles infrastructures utilisent les commandes DevOps.

DORA a constaté que 80% des répondants hébergent des applications ou des services de base sur une plate-forme cloud . Néanmoins, seulement 29% des répondants ont mis en œuvre les cinq principales caractéristiques du cloud computing à l'Institut national des normes et de la technologie - il s'agit de la norme la plus importante pour évaluer la valeur du cloud dans le cadre de DevOps.

Fonctionnalité
Pourcentage utilisé
Gîtes sur demande
Les consommateurs peuvent fournir automatiquement des ressources informatiques
si nécessaire, sans la participation du prestataire.
57%
(+ 11% depuis 2018)
Large accès au réseau
Les capacités du cloud sont disponibles sur plusieurs plateformes,
tels que les téléphones portables, les tablettes, les ordinateurs portables et les postes de travail.
60%
(+ 14% depuis 2018)
Pool de ressources
Les ressources des fournisseurs sont combinées dans un modèle à locataires multiples, où les ressources physiques et virtuelles sont attribuées dynamiquement à la demande.
58%
(+ 15% depuis 2018)
Évolutivité et élasticité
Les ressources sont échelonnées horizontalement ou verticalement à la demande, elles sont pratiquement illimitées et peuvent être émises en n'importe quelle quantité à tout moment.
58%
(+135 depuis 2018)
La transparence
Les systèmes cloud contrôlent, optimisent et rendent compte automatiquement de l'utilisation des ressources en fonction du type de service: stockage et traitement des données, volume de trafic,
Comptes d'utilisateurs actifs
62%
(+ 14% depuis 2018)

Platform as a Service (PaaS) s'oriente de plus en plus vers un modèle de déploiement centré sur les conteneurs. Les plates-formes cloud simplifient le déploiement de logiciels, les équipes n'ont donc qu'à se soucier de l'exécution du code d'application lui-même. La mise à l'échelle, la planification des ressources, l'administration et la maintenance des infrastructures vont également du côté des prestataires.

Pour les fournisseurs de cloud, la norme universelle est la fourniture d'une variété de services: réseaux de machines virtuelles, contrôle d'identité et d'accès (IAM), stockage et bases de données, apprentissage automatique, Internet des objets (IoT), solutions de conteneurs, solutions de sécurité et autres.

Les clients des fournisseurs de cloud ne paient que pour les ressources qu'ils utilisent, ce qui garantit la transparence des coûts, contrairement aux centres de données traditionnels, où les informations sur les coûts de développement sont difficiles, voire impossibles à obtenir. Les répondants des entreprises qui répondent aux caractéristiques du cloud énumérées ci-dessus sont 2,6 fois plus précis pour estimer le coût du travail logiciel, 2 fois plus souvent comprendre quelles applications consomment plus de ressources et 1,65 fois plus souvent dans le budget alloué à l'informatique.

Parfois, il s'avère plus rentable d'embaucher un spécialiste compétent et de prendre les capacités allouées dans le centre de données que de payer pour le cloud. La meilleure option dépend du profil et de la taille de l'entreprise, de la disponibilité de son propre personnel informatique et de son expertise. Par exemple, le cloud est pratique à utiliser au démarrage d'une entreprise ou si l'entreprise n'a pas son propre service informatique. Lors de la mise à l'échelle, il peut être plus rentable de contenir tout ou partie de l'infrastructure sur site.

Denis Romanenko, expert indépendant Mail.ru Cloud Solutions

Pratiques techniques DevOps


De nombreuses organisations souhaitant implémenter DevOps recherchent un ensemble d'instructions ou de meilleures pratiques. Cependant, il n'y a pas d'entreprises identiques, par conséquent, les pratiques à choisir dépendent de l'état actuel de l'entreprise et de ses objectifs.

En même temps, il existe des orientations générales qui contribuent à améliorer l'efficacité de DevOps: certaines d'entre elles sont développées au niveau de l'équipe, d'autres nécessitent des efforts au niveau de l'organisation.

Quelles sont les directions de croissance des équipes DevOps en 2019:

Niveau organisation
  • architecture à couplage lâche
  • mise en œuvre des changements
  • support de code
Niveau équipe
  • intégration continue
  • automatisation des tests
  • automatisation du déploiement
  • surveillance
  • pipeline de développement
Au niveau de l'équipe et de l'organisation
  • utilisation des services cloud
  • test de reprise après sinistre

L'étude a confirmé l'impact positif d'une architecture faiblement couplée sur les performances de DevOps.

Une architecture faiblement couplée permet aux équipes de tester, déployer et modifier des systèmes de manière indépendante à la demande, indépendamment des autres équipes, sans assistance, ressources et approbation supplémentaires, avec moins de commentaires. Cela vous permet de travailler plus efficacement, mais nécessite un haut niveau d'organisation et de gestion.

Cette approche n'est possible que pour les startups et avec quelques réserves. D'autres sociétés peuvent avoir une situation différente. Un bon exemple: banque / fintech. Seules les solutions propriétaires peuvent y être utilisées, mais les pratiques DevOps seront appliquées.

Denis Romanenko, expert indépendant Mail.ru Cloud Solutions

Les équipes DevOps performantes automatisent tout


L'intégration et la livraison continues (CI / CD) vous permettent d'apporter des services et des applications au prod à moindre coût et sans risque, ainsi que de maintenir les versions conformément aux objectifs de l'organisation.

Un CI / CD réussi signifie également que les équipes peuvent mettre en œuvre des modifications de la production à la demande, elles peuvent immédiatement voir les commentaires sur la qualité du déploiement, elles peuvent être rapidement élaborées et le prochain cycle de déploiement peut être amélioré.

Le rapport montre que les équipes DevOps performantes investissent dans un large éventail de processus, de pratiques et d'outils de support:

  • 92% utilisent des outils d'assemblage automatisés;
  • 87% utilisent des tests unitaires automatisés;
  • 57% étendent l'automatisation aux tests d'acceptation;
  • 72% automatisent le déploiement dans des environnements de test, 69% font de même pour le déploiement en production;
  • 69% intègrent des chatbots dans le processus de déploiement;
  • 57% s'intègrent aux outils de surveillance.

Il est important de choisir les bons outils et la bonne technologie.


Lors de la construction de systèmes complexes et de la gestion d'infrastructures essentielles à l'entreprise, il est important de choisir les technologies suivantes:

  • qui sont faciles à utiliser lors de la première connexion et en fonctionnement constant;
  • qui aident à atteindre vos objectifs.

Le rapport a examiné les outils utilisés pour déployer des logiciels via CI / CD et les outils d'automatisation des tests - ce sont les technologies qui sous-tendent DevOps.

Quelles technologies utilisent les commandes DevOps:

La technologie
Équipes à faible score
Équipes moyennes
Bonnes équipes
Équipes à score élevé
Combinaison de produits exclusifs, open source et commerciaux
30%
34%
32%
33%
Solutions en boîte principalement open source et hautement personnalisées
17%
8%
7%
10%
Principalement des solutions open source et basées sur des boîtes avec peu de réglages
14%
21%
18%
20%
Solutions commerciales en boîte principale
8%
12%
8%
4%
Développement interne et solutions propriétaires pour l'entreprise
20%
6%
5%
6%
Tout d'abord, l'open source avec une forte personnalisation
6%
7%
5%
12%
Première source ouverte avec quelques ajustements
5%
12%
24%
15%

La commodité des outils affecte considérablement la capacité de l'équipe à maximiser la valeur de la pile technologique sélectionnée: les ingénieurs dotés de technologies faciles à utiliser sont 1,5 fois plus susceptibles d'appartenir à des équipes à taux élevé.

À mon avis, ce tableau donne le sentiment que pour être une équipe DevOps réussie, vous devez suivre le mod et non la tâche technique.

Un spécialiste compétent sélectionne les outils pour la tâche et non l'inverse. Pour résoudre tout problème, il existe toujours plusieurs outils et approches. Un outil spécifique est déterminé par: les spécificités de la tâche; dans quelle mesure le personnel est familier avec cet outil (quelle est la taille du seuil d'entrée si l'outil est nouveau); composante financière, le cas échéant.

Denis Romanenko, expert indépendant Mail.ru Cloud Solutions

Reprise après sinistre


Chaque organisation dont le travail dépend du fonctionnement du logiciel doit avoir un plan de reprise après sinistre . Le rapport montre quels types de tests de tolérance aux catastrophes sont utilisés par diverses entreprises.

Quels types d'essais les entreprises utilisent pour la reprise après sinistre

Type de test
Équipes à faible score
Équipes moyennes
Bonnes équipes
Équipes à score élevé
Moyenne
Tests qui n'affectent pas les systèmes réels
35%
26%
27%
30%
28%
Basculement de l'infrastructure (y compris le centre de données)
27%
43%
34%
38%
38%
Test d'échec d'application
25%
46%
41%
49%
43%
Simulation d'incidents avec des systèmes de test défectueux
18%
22%
23%
29%
23%
Modélisation des incidents avec des systèmes de travail défectueux
18%
11%
12%
13%
12%
Créer une automatisation et des systèmes qui perturbent
systèmes de production sur une base régulière et continue
9%
8%
7%
9%
8%

Seulement 40% des répondants effectuent des tests de reprise après sinistre chaque année en utilisant une ou plusieurs de ces méthodes. Dans le même temps, les entreprises qui effectuent des tests de reprise après sinistre ont un niveau de disponibilité de service plus élevé. Le rapport montre que les équipes DevOps à hautes performances sont 1,4 fois plus susceptibles de prendre en compte les données de test de reprise après sinistre dans les processus de développement et de déploiement de logiciels.

Il est important que les équipes DevOps aient accès aux informations


Le maintien des performances des commandes DevOps à un niveau élevé sera facilité par une recherche facile d'informations pour résoudre les problèmes. Cela est particulièrement vrai dans un environnement technologique moderne, qui se compose de systèmes complexes.

Les sources de ces informations peuvent être divisées en deux groupes:

  1. Sources internes : documentation de l'entreprise pour la création et la maintenance de code, bases de connaissances d'entreprise, référentiels, etc. Les équipes DevOps qui ont utilisé des sources de connaissances internes étaient 1,73 fois plus productives.
  2. Sources externes : moteurs de recherche et réapprovisionnement de pile. Les équipes DevOps externes étaient 1,67 fois plus productives. Les technologies externes offrent un grand avantage pour l'apprentissage et la croissance, en particulier l'utilisation des clouds publics et des outils open source.

Il est important pour les entreprises de réduire leur dette technique


La dette technique comprend du code ou des systèmes avec des bogues connus mais non corrigés; couverture de test insuffisante; code ou conception de faible qualité; artefacts non utilisés mais non supprimés; mises en œuvre que l'équipe ne peut pas soutenir efficacement; technologie dépassée; documentation incomplète ou périmée.

Les experts ont constaté que la dette technique affecte négativement les performances de DevOps. Les équipes fortement endettées étaient 1,6 fois moins productives. Les équipes avec des taux élevés étaient 1,4 fois plus susceptibles d'avoir une faible dette technique.

Principales conclusions de la recherche DevOps


  1. Le pourcentage d'équipes DevOps hautement performantes a presque triplé à 20%. Cela signifie que les entreprises comprennent la promesse de pratiques visant à améliorer le développement et la livraison de logiciels, les entreprises introduisent activement DevOps dans leurs services informatiques.
  2. La livraison rapide des applications et des services est au cœur de la technologie et de la transformation organisationnelle. La rapidité et la stabilité du déploiement des versions augmentent les profits et la satisfaction des clients.
  3. La technologie cloud reste la clé pour atteindre des équipes DevOps hautes performances. L'utilisation du cloud vous permet d'organiser la livraison des logiciels à la bonne vitesse, assure la disponibilité, l'évolutivité et la productivité de l'infrastructure.
  4. L'efficacité des équipes DevOps peut être améliorée si vous faites attention à la productivité des membres de l'équipe, fournissez une atmosphère psychologique confortable et utilisez des outils pratiques.
  5. Augmenter la vitesse de déploiement des versions avec la bonne approche n'affecte pas la stabilité des services et des applications de l'entreprise.

Source: https://habr.com/ru/post/fr483444/


All Articles