Pourquoi DevOps est-il nécessaire et qui sont les spécialistes DevOps ?

Lorsqu'une application ne fonctionne pas, la dernière chose que vous souhaitez entendre de la part de vos collègues est la phrase « le problème est de votre côté ». En conséquence, les utilisateurs souffrent – ​​et peu importe quelle partie de l’équipe est responsable de la panne. La culture DevOps a émergé précisément pour rassembler le développement et le support autour d’une responsabilité partagée du produit final.

Quelles pratiques sont incluses dans le concept DevOps et pourquoi sont-elles nécessaires ? Que font les ingénieurs DevOps et que devraient-ils être capables de faire ? Les experts de l'EPAM répondent à ces questions et à d'autres : Kirill Sergeev, ingénieur système et évangéliste DevOps, et Igor Boyko, ingénieur système principal et coordinateur de l'une des équipes DevOps de l'entreprise.

Pourquoi DevOps est-il nécessaire et qui sont les spécialistes DevOps ?

Pourquoi DevOps est-il nécessaire ?

Auparavant, il existait une barrière entre les développeurs et le support (ce qu'on appelle les opérations). Cela semble paradoxal, mais ils avaient des objectifs et des KPI différents, même s’ils faisaient la même chose. L'objectif du développement était de mettre en œuvre les exigences commerciales le plus rapidement possible et de les ajouter à un produit fonctionnel. Le support était chargé de garantir que l'application fonctionnait de manière stable – et tout changement mettait la stabilité en danger. Il existe un conflit d’intérêts – DevOps semble l’avoir résolu.

Qu’est-ce que DevOps ?

C’est une bonne question – et controversée : le monde n’est pas encore définitivement d’accord sur ce point. L'EPAM estime que DevOps combine des technologies, des processus et une culture d'interaction au sein d'une équipe. Cette association vise à fournir en permanence de la valeur aux utilisateurs finaux.

Kirill Sergueïev: « Les développeurs écrivent le code, les testeurs l'examinent et les administrateurs déploient le produit final en production. Pendant longtemps, ces parties de l’équipe ont été quelque peu dispersées, puis l’idée est née de les fédérer autour d’une démarche commune. C’est ainsi qu’apparaissent les pratiques DevOps.

Le jour est venu où les développeurs et les ingénieurs système se sont intéressés mutuellement au travail de chacun. La barrière entre production et soutien a commencé à disparaître. C’est ainsi qu’est né le DevOps, qui inclut les pratiques, la culture et l’interaction en équipe.

Pourquoi DevOps est-il nécessaire et qui sont les spécialistes DevOps ?

Quelle est l’essence de la culture DevOps ?

Le fait est que la responsabilité du résultat final incombe à chaque membre de l'équipe. La chose la plus intéressante et la plus difficile dans la philosophie DevOps est de comprendre qu'une personne spécifique n'est pas seulement responsable de sa propre étape de travail, mais est responsable du fonctionnement de l'ensemble du produit. Le problème n'est du côté de personne, il est partagé et chaque membre de l'équipe contribue à le résoudre.

La chose la plus importante dans une culture DevOps est de résoudre le problème, et pas seulement d’appliquer les pratiques DevOps. De plus, ces pratiques ne sont pas mises en œuvre « du côté de quelqu’un », mais dans l’ensemble du produit. Un projet n'a pas besoin d'un ingénieur DevOps en soi - il a besoin d'une solution à un problème, et le rôle d'un ingénieur DevOps peut être réparti entre plusieurs membres de l'équipe avec des spécialisations différentes.

Quels sont les types de pratiques DevOps ?

Les pratiques DevOps couvrent toutes les étapes du cycle de vie des logiciels.

Igor Boïko: « Le cas idéal est celui où nous commençons à utiliser les pratiques DevOps dès le lancement du projet. En collaboration avec les architectes, nous planifions le type de paysage architectural que l'application aura, où elle sera située et comment la mettre à l'échelle, et choisissons une plate-forme. De nos jours, l'architecture des microservices est à la mode - pour cela nous choisissons un système d'orchestration : il faut pouvoir gérer chaque élément de l'application séparément et le mettre à jour indépendamment des autres. Une autre pratique est « l’infrastructure en tant que code ». C'est le nom d'une approche dans laquelle l'infrastructure du projet est créée et gérée à l'aide de code, plutôt que via une interaction directe avec les serveurs.

Passons ensuite à la phase de développement. L'une des pratiques les plus importantes ici est la création de CI/CD : vous devez aider les développeurs à intégrer les modifications dans le produit rapidement, par petites portions, plus souvent et sans douleur. CI/CD couvre la révision du code, le téléchargement du maître dans la base de code et le déploiement de l'application dans des environnements de test et de production.

Aux étapes CI/CD, le code passe par des portes de qualité. Avec leur aide, ils vérifient que le code qui sort du poste de travail du développeur répond aux critères de qualité spécifiés. Les tests unitaires et d’interface utilisateur sont ajoutés ici. Pour un déploiement de produit rapide, simple et ciblé, vous pouvez choisir le type de déploiement approprié.

Les praticiens DevOps ont également leur place au stade du support du produit fini. Ils sont utilisés pour la surveillance, le feedback, la sécurité et l’introduction de changements. DevOps examine toutes ces tâches dans une perspective d'amélioration continue. Nous minimisons les opérations répétitives et les automatisons. Cela inclut également les migrations, l’expansion des applications et le support des performances.

Quels sont les avantages des pratiques DevOps ?

Si nous écrivions un manuel sur les pratiques DevOps modernes, il y aurait trois points sur la première page : l'automatisation, l'accélération des versions et un retour rapide des utilisateurs.

Kirill Sergueïev: « La première chose est l’automatisation. Nous pouvons automatiser toutes les interactions au sein de l'équipe : écrire le code - le déployer - le vérifier - l'installer - recueillir les commentaires - revenir au début. Tout cela est automatique.

La seconde consiste à accélérer la sortie et même à simplifier le développement. Il est toujours important pour le client que le produit entre sur le marché le plus rapidement possible et commence à apporter des avantages plus tôt que les analogues des concurrents. Le processus de livraison des produits peut être amélioré à l'infini : réduire les délais, ajouter des marques de contrôle supplémentaires, améliorer le suivi.

Troisièmement, l’accélération des commentaires des utilisateurs. S’il a des commentaires, nous pouvons immédiatement procéder à des ajustements et mettre à jour l’application immédiatement.

Pourquoi DevOps est-il nécessaire et qui sont les spécialistes DevOps ?

Quel est le lien entre les concepts d'« ingénieur système », d'« ingénieur build » et d'« ingénieur DevOps » ?

Ils se chevauchent, mais appartiennent à des domaines légèrement différents.

Ingénieur systèmes à l'EPAM est un poste. Ils se déclinent en différents niveaux : du junior au spécialiste en chef.

Un ingénieur en construction est davantage un rôle qui peut être joué sur un projet. C’est désormais ainsi que s’appellent les personnes responsables du CI/CD.

Un ingénieur DevOps est un spécialiste qui met en œuvre les pratiques DevOps sur un projet.

Si nous résumons tout, nous obtenons quelque chose comme ceci : une personne occupant le poste d'ingénieur système joue le rôle d'ingénieur de build sur un projet et y participe à la mise en œuvre des pratiques DevOps.

Que fait exactement un ingénieur DevOps ?

Les ingénieurs DevOps rassemblent tous les éléments qui composent un projet. Ils connaissent les spécificités du travail des programmeurs, des testeurs, des administrateurs système et contribuent à simplifier leur travail. Ils comprennent les besoins et les exigences de l'entreprise, son rôle dans le processus de développement - et construisent le processus en tenant compte des intérêts du client.

Nous avons beaucoup parlé d'automatisation - c'est ce dont les ingénieurs DevOps s'occupent avant tout. Il s’agit d’un point très vaste qui inclut, entre autres, la préparation de l’environnement.

Kirill Sergueïev: « Avant d'implémenter les mises à jour dans le produit, elles doivent être testées dans un environnement tiers. Il est préparé par des ingénieurs DevOps. Ils inculquent une culture DevOps au projet dans son ensemble : ils introduisent des pratiques DevOps à toutes les couches de leurs projets. Ces trois principes : automatisation, simplification, accélération, ils les amènent partout où ils peuvent atteindre.

Que doit savoir un ingénieur DevOps ?

Dans l'ensemble, il doit avoir des connaissances dans différents domaines : programmation, travail avec les systèmes d'exploitation, les bases de données, les systèmes d'assemblage et de configuration. Ceux-ci sont complétés par la capacité de travailler avec des systèmes d’infrastructure, d’orchestration et de surveillance cloud.

1. Langages de programmation

Les ingénieurs DevOps connaissent plusieurs langages de base pour l'automatisation et peuvent, par exemple, dire à un programmeur : « Et si vous installiez le code non pas à la main, mais en utilisant notre script, qui automatise tout ? Nous préparerons un fichier de configuration pour cela, il sera pratique pour vous et nous de le lire, et nous pourrons le modifier à tout moment. Nous verrons également qui, quand et pourquoi y apporte des modifications.

Un ingénieur DevOps peut apprendre un ou plusieurs de ces langages : Python, Groovy, Bash, Powershell, Ruby, Go. Il n'est pas nécessaire de les connaître à un niveau approfondi - les bases de la syntaxe, les principes de la POO et la capacité d'écrire des scripts simples pour l'automatisation suffisent.

2. Systèmes d'exploitation

Un ingénieur DevOps doit comprendre sur quel serveur le produit sera installé, dans quel environnement il fonctionnera et avec quels services il interagira. Vous pouvez choisir de vous spécialiser dans Windows ou dans la famille Linux.

3. Systèmes de contrôle de version

Sans connaissance d'un système de contrôle de version, un ingénieur DevOps n'est nulle part. Git est actuellement l’un des systèmes les plus populaires.

4. Fournisseurs de cloud

AWS, Google, Azure - surtout si nous parlons de la direction Windows.

Kirill Sergueïev: « Les fournisseurs de cloud nous mettent à disposition des serveurs virtuels qui s'intègrent parfaitement dans le CI/CD.

L'installation de dix serveurs physiques nécessite une centaine d'opérations manuelles. Chaque serveur doit être lancé manuellement, installé et configuré le système d'exploitation requis, installé notre application sur ces dix serveurs, puis tout revérifié dix fois. Les services cloud remplacent cette procédure par dix lignes de code, et un bon ingénieur DevOps devrait être capable de les utiliser. Cela permet d'économiser du temps, des efforts et de l'argent, tant pour le client que pour l'entreprise.

5. Systèmes d'orchestration : Docker et Kubernetes

Kirill Sergueïev: « Les serveurs virtuels sont divisés en conteneurs, dans chacun desquels nous pouvons installer notre application. Lorsqu'il y a beaucoup de conteneurs, il faut les gérer : allumer un, éteindre un autre, faire des sauvegardes quelque part. Cela devient assez complexe et nécessite un système d'orchestration.

Auparavant, chaque application était gérée par un serveur distinct : toute modification de son fonctionnement pouvait affecter la fonctionnalité de l'application. Grâce aux conteneurs, les applications sont isolées et s'exécutent séparément, chacune sur sa propre machine virtuelle. Si une panne survient, inutile de perdre du temps à en chercher la cause. Il est plus facile de détruire l’ancien conteneur et d’en ajouter un nouveau.

6. Systèmes de configuration : Chef, Ansible, Puppet

Lorsque vous devez entretenir toute une flotte de serveurs, vous devez effectuer de nombreuses opérations du même type. C’est long et difficile, et le travail manuel augmente également les risques d’erreur. C'est là que les systèmes de configuration viennent à la rescousse. Avec leur aide, ils créent un script facile à lire pour les programmeurs, les ingénieurs DevOps et les administrateurs système. Ce script permet d'effectuer automatiquement les mêmes opérations sur les serveurs. Cela réduit les opérations manuelles (et donc les erreurs).

Quel type de carrière un ingénieur DevOps peut-il bâtir ?

Vous pouvez vous développer à la fois horizontalement et verticalement.

Igor Boïko: « Du point de vue du développement horizontal, les ingénieurs DevOps ont désormais les perspectives les plus larges. Tout est en constante évolution et vous pouvez développer des compétences dans des domaines variés : des systèmes de contrôle de version à la surveillance, de la gestion de la configuration aux bases de données.

Vous pouvez devenir architecte système si un employé souhaite comprendre le fonctionnement d'une application à toutes les étapes de son cycle de vie, du développement au support.

Comment devenir ingénieur DevOps ?

  1. Lisez le projet Phoenix et le manuel DevOps. Ce sont les véritables piliers de la philosophie DevOps, le premier étant une œuvre de fiction.
  2. Apprenez les technologies de la liste ci-dessus : seul ou via des cours en ligne.
  3. Rejoignez-nous en tant qu'ingénieur DevOps pour un projet open source.
  4. Pratiquez et proposez des pratiques DevOps sur vos projets personnels et professionnels.

Source: habr.com

Ajouter un commentaire