DevOps devient de plus en plus un moyen populaire de créer et de déployer des applications, ce qui s'est traduit par une demande croissante de professionnels DevOps. 

Cet article couvrira certaines des questions d'entretien DevOps les plus fréquemment posées et leurs réponses. L'utilisation de ces questions comme base d'étude peut augmenter vos chances d'être embauché, ou si vous êtes un recruteur, elles peuvent vous aider dans le processus d'embauche.

Foire aux questions et réponses des entretiens DevOps

What is DevOps for you?

DevOps est une approche visant à améliorer le travail tout au long du cycle de vie du développement logiciel. Le processus DevOps est décrit comme une boucle infinie, comprenant les étapes de planification, de codage, de construction, de test, de publication, de déploiement, d'exploitation et de surveillance.

DevOps influence le cycle de vie de l'application tout au long de ses phases de planification, de développement, de livraison et d'exploitation. Chaque phase dépend des autres, et les phases ne sont pas spécifiques à un rôle. Dans une véritable culture DevOps, chaque rôle est impliqué dans chaque phase à un certain degré.

Why is DevOps important?

Les équipes qui adoptent une approche DevOps ont tendance à réaliser leurs projets plus rapidement. De cette façon, les erreurs de communication sont évitées, facilitant la mise en œuvre rapide des améliorations et autres changements nécessaires. L'approche DevOps encourage une plus grande collaboration entre les équipes de développement et d'exploitation, où les objectifs de chacun sont plus alignés. Vous pouvez résumer certains des avantages comme suit :

  • Communication améliorée
  • Travail d'équipe et cohésion
  • Collaboration améliorée
  • Livraison plus rapide de produits de qualité
  • Complexité réduite et résolution rapide des problèmes
  • Plus grande évolutivité et flexibilité pour ajouter du nouveau code
  • Environnements d'exploitation plus stables
  • Une plus grande automatisation
  • Réduction des coûts et utilisation des ressources
  • Sécurité grâce à des outils intégrés et automatisés

What are the daily tasks of DevOps?

 Certaines des tâches quotidiennes que vous pourriez mentionner sont :

  • Assurer une intégration et un déploiement continus
  • Attribuer et communiquer les tâches à effectuer
  • Concevoir et commander des protocoles de test
  • Surveillance et collecte des métriques d'infrastructure et d'application
  • Analyse des résultats obtenus à chaque phase de développement
  • Réduire le taux d'erreur et le temps de récupération en cas d'erreur
  • Réduire le délai de livraison

How does DevOps help developers?

Lorsqu'une méthodologie DevOps est mise en œuvre, les développeurs n'ont plus besoin d'attendre les commentaires de l'équipe des opérations pour corriger les bogues dans leur code. Mais maintenant, ils peuvent résoudre ces problèmes plus rapidement car ils ont un retour d'information continu sur leur code.

What is version control?

Le contrôle de version est une pratique qui nous permet de suivre les modifications que nous apportons à un fichier ou à un ensemble de fichiers au fil du temps afin que des versions spécifiques puissent être récupérées ultérieurement. UN outil de contrôle de version nous permet de suivre facilement l'avancement de votre travail de développement et d'enregistrer différentes versions du code source pour revenir à la précédente au fur et à mesure des besoins. L'un des outils les plus utilisés à ce stade du développement logiciel est Git.

What is CI/CD, and what are its benefits?

Intégration continue (CI) 

CI combine des outils et des pratiques qui facilitent la livraison rapide de logiciels de haute qualité. De cette façon, les goulots d'étranglement sont éliminés et les problèmes techniques sont évités dans les phases de lancement.

Livraison continue (CD)

Cette pratique automatise la livraison des modifications de code, garantissant que le code peut être rapidement complété en production et que les applications fonctionnent correctement.

Déploiement continu (CD)

Contrairement à la livraison continue, l'objectif de cette pratique est qu'il n'y ait aucune intervention humaine lors du déploiement du logiciel en production. La publication de code nouveau ou modifié en production est automatisée.

CI / CD implémente DevOps tout au long du cycle de vie de l'application. Ces pratiques contribuent à améliorer la productivité dans les différentes phases du processus de développement logiciel en les rationalisant et en les automatisant.

What is Continous Monitoring

La surveillance continue est une pratique DevOps qui implique de surveiller, d'alerter et d'agir à la fois sur le code et l'infrastructure. Ainsi, ce problème pouvant survenir lors de la mise en œuvre est rapidement détecté et identifié, ce qui réduit le temps de résolution des problèmes.

Why is continuous testing important?

Les tests continus automatisent les tests tôt, progressivement et de manière appropriée dans le pipeline de développement. Elle est essentielle car elle permet de s'assurer de la qualité du code. Les erreurs sont détectées tôt et le retour de code est effectué plus rapidement.

Explain a few types of tests used in DevOps?

Tests unitaires

Ils testent un morceau de code spécifique de manière isolée. Les tests unitaires ne doivent pas être connectés à la base de données, utiliser le système de fichiers, communiquer avec des systèmes externes ou interagir avec les composants du système. Cela leur permet de s'exécuter rapidement et vous obtenez un retour rapide si les modifications ont interrompu les fonctionnalités existantes. 

Tests de composants

Ils testent de grands groupes de fonctionnalités afin de pouvoir identifier des problèmes comme ceux-ci. Ils sont généralement plus lents, nécessitant une configuration plus complexe et davantage d'E/S se connectant à une base de données, un système de fichiers ou d'autres systèmes. 

Essais de déploiement

Ces tests vérifient que le déploiement a fonctionné, en d'autres termes, que votre application est correctement installée, configurée, peut accéder à tous les services dont elle a besoin et répond.

En dehors de ceux-ci, il existe également des tests d'exploitation et d'utilisabilité. Pour en savoir plus sur les tests, consultez l'article sur types de tests d'applications.

What is microservices architecture, and how is it different from traditional architecture?

La méthode traditionnelle d'écriture de logiciels est monolithique. Cela signifie que toutes les fonctions d'une application sont regroupées dans un seul bloc. En cas d'erreur ou de nécessité de mise à jour, le code qui régit l'ensemble du produit est analysé.

Il génère des arrêts voire des plantages et représente un grand danger pour la conservation du code. Pour les clients, cela signifie des pertes et des maux de tête.

Dans une architecture de microservices, les fonctions d'une application représentent un service développé et intégré indépendamment. Les composants sont séparés mais fonctionnent ensemble pour effectuer les tâches corrélées.

De cette façon, chaque service indépendant fonctionne sans interférer avec les autres, ce qui s'applique également en cas de panne. Si une fonction échoue, il est possible de l'ajuster sans compromettre le fonctionnement de l'ensemble de l'application.

Les microservices arrivent pour rendre DevOps encore plus agile et efficace, accélérant le développement de bout en bout et rendant les applications encore plus évolutives.

Qu'est-ce que l'infrastructure en tant que code ?

L'infrastructure en tant que code est l'approche de définition de l'infrastructure informatique et réseau, qui utilise des techniques de gestion de code source et est traitée comme n'importe quel système logiciel.

Ce code peut être conservé dans le contrôle de source pour permettre l'audibilité et la construction reproductible, sous réserve de pratiques de test et de la discipline complète de la livraison continue.

L'infrastructure comme code repose sur quelques pratiques :

  • Utiliser les fichiers de définition
  • Systèmes et processus auto-documentés
  • Version tous les éléments
  • Tester en permanence les systèmes et les processus
  • De petits changements au lieu de lots
  • Maintenir les services disponibles en permanence

What is Build Automation, and what are some build automation tools?

Les outils d'automatisation de construction spécifient comment le logiciel doit être construit (quelles étapes doivent être effectuées et dans quel ordre) et quelles dépendances sont requises (quels autres logiciels doivent être présents pour que la construction réussisse).

Certains outils sont mieux adaptés aux projets dans des langages de programmation spécifiques, tels que Maven et Apache's Ant, qui, bien que la technologie puisse être utilisée avec d'autres langages, sont principalement utilisés dans les projets Java. D'autres, comme Hudson ou Jenkins, peuvent être utilisés plus largement avec divers projets.

What is a DevOps Pipeline?

Le pipeline DevOps est un processus qui comprend plusieurs étapes avant de publier un nouveau logiciel. Il peut être appliqué à toutes les phases du projet, de l'intégration et des tests à la livraison et au déploiement. En général, il passe par les étapes et équipes suivantes :

  • Product Vision : définit les fonctionnalités du produit ;
  • Dev Team : développe de manière itérative et incrémentielle ;
  • Domaine d'intervention : met en place et maintient des environnements stables ;
  • Veille et retour d'expérience : chercher à générer de la valeur et de l'utilisation par le client.

What are the different stages of a CI/CD pipeline?

Les étapes qui composent un pipeline CI/CD sont quelques tâches groupées appelées l'étape du pipeline. En bref, ce sont :

  • Compilation : étape de compilation de l'application ;
  • Test : l'étape où le code est testé. Ici, l'automatisation permet d'économiser du temps et des efforts ;
  • Lancement : lors de l'envoi de l'application au référentiel ;
  • Déploiement : le code est déployé dans l'environnement de production ;
  • Validation et conformité : vous pouvez utiliser des outils de vérification de la sécurité des images comme Clair pour garantir la qualité de vos images en les comparant à des vulnérabilités connues (CVE).

Ce sont les étapes les plus courantes du pipeline DevOps. Cependant, chaque entreprise a ses besoins et son pipeline spécifiques.

What does platform virtualization mean, and what are its benefits?

La virtualisation de plate-forme consiste à simuler un système informatique complet pour exécuter plusieurs instances de systèmes d'exploitation simultanément sur une seule machine physique.

Dans cette configuration, un moniteur de machine virtuelle (VMM), ou hyperviseur, a le contrôle total des ressources matérielles de la machine physique. Les systèmes d'exploitation invités s'exécutent sur des machines virtuelles, gérées par VMM. La virtualisation d'environnement consiste à simuler une ou plusieurs machines virtuelles et les connexions réseau entre elles.

La virtualisation peut aider à réduire le temps consacré au déploiement et les risques qui y sont associés de plusieurs manières. L'utilisation de machines virtuelles dans le déploiement est d'une grande aide pour parvenir à une gestion efficace de la configuration verticalement et horizontalement sur l'ensemble de vos systèmes.

En particulier, l'utilisation de la virtualisation apporte les avantages suivants :

  • Réponse rapide aux exigences changeantes
  • Consolidation
  • Standardisation
  • Facilité de maintenance des lignes de base

What is the difference between containers and virtual machines?

Le conteneur et la machine virtuelle fonctionnent avec la virtualisation et l'isolation des environnements pour favoriser le traitement indépendamment des applications. Toujours, Conteneurs créer des environnements isolés où différentes applications peuvent s'exécuter simultanément car la division se fait au niveau des ressources disponibles, telles que la mémoire et le traitement. D'autre part, la machine virtuelle permet à une machine physique d'en héberger d'autres avec différents systèmes d'exploitation, disques durs et matériels indépendants de ceux d'origine.

What is the main difference between Docker and Kubernetes?

Docker est l'un des outils de conteneur DevOps les plus utilisés. Il se concentre sur la portabilité des applications, en les plaçant dans des conteneurs technologiques et des systèmes d'emballage et en les déplaçant sur différentes plates-formes.

Dans le même temps, Kubernetes est un outil d'orchestration de conteneurs qui peut regrouper les conteneurs par catégorisation logique. Il peut être déployé sur plusieurs ordinateurs via une distribution automatisée. 

Découvrez Kubernetes contre. Docker.

What are some Telemetry metrics in DevOps?

  • Au niveau de l'entreprise : les exemples incluent le nombre de transactions de vente, les revenus des transactions de vente, les inscriptions d'utilisateurs, le taux de désabonnement et Test A / B résultats.
  • Au niveau de l'application : les exemples incluent les temps de transaction, les temps de réponse de l'utilisateur et les échecs d'application.
  • Niveau d'infrastructure : les exemples incluent le trafic du serveur Web, la charge du processeur et l'utilisation du disque.
  • Niveau logiciel client : les exemples incluent les erreurs d'application, les pannes et les temps de transaction mesurés par l'utilisateur.
  • Niveau du pipeline de déploiement : les exemples incluent l'état du pipeline de build (rouge ou vert pour diverses suites de tests automatisés), la modification des délais de déploiement, les fréquences de déploiement, les promotions de l'environnement de test et l'état de l'environnement.

What technologies do you use to do DevOps?

Cette question vise à savoir quelles technologies vous pouvez utiliser pour implémenter la culture DevOps au sein de l'organisation. Certaines des technologies les plus courantes qu'un DevOps peut utiliser sont :

  • Développement continu : Git, SVN, Mercurial, CVS, Jira
  • Intégration continue : Jenkins, Bamboo, Hudson
  • Développement continu : Nexus, Archive, Tomcat
  • Déploiement continu : Puppet, Chef, Docker
  • Monitoring continu : Splunk, ELK Stack, Nagios continu
  • Test : Sélénium, Katalon Studio

Tell us about your experience managing DevOps projects

Les compétences DevOps ne se limitent pas à un savoir-faire technique et nécessitent des compétences humaines et managériales que l'on retrouve souvent chez les managers, les directeurs de programme et les chefs de projet. 

Il est essentiel de savoir gérer et accompagner le changement, fournir une passerelle pour faciliter le transfert des nouvelles versions de code vers les opérations, évaluer et suivre les différentes plateformes et outils pour mesurer la performance, analyser et partager les résultats pour améliorer les livraisons futures. , etc.

Abordez cette question avec méthodologie et expliquez votre parcours dans la résolution de problèmes complexes. Comment comptez-vous procéder pour améliorer le fonctionnement des infrastructures ? Comment comptez-vous collaborer avec les développeurs front, middle et back-office ? Quels outils de monitoring maîtrisez-vous ? Pensez également à partager vos expériences de résolution de conflits au sein de votre équipe.

Pour en savoir plus, vous pouvez envisager de vous inscrire à l'un de ces Cours DevOps.