Le guide d'entretien ultime de l'ingénieur DevOps - Que demander et se préparer





J'ai commencé le réseautage à l'école et je travaille pour de l'argent depuis plus de 16 ans. J'ai trouvé un emploi dans de nombreux endroits, dans de grandes et petites entreprises, puis j'ai ouvert ma propre entreprise et embauché régulièrement des gens moi-même. Au fil des années et de l'expérience, moi et beaucoup d'autres développons une intuition d'entrevue.



C'est quand il n'y a pas d'algorithme clair. Vous parlez simplement à une personne et vous comprenez quelque chose par vous-même. Vous demandez ce que le candidat a fait dans le poste précédent, vous vous accrochez au sujet - et maintenant vous ne discutez que de sujets d'ingénierie, à peu près au même niveau qu'avec des collègues. Si la conversation se déroule bien et que la personne l'aime, tout va bien.



Une telle intuition peut difficilement être apprise des livres et des textes, elle vient d'elle-même avec l'expérience. Avec elle, des phrases telles que "Je ne me soucie pas autant des connaissances spécifiques que des perspectives générales, de la capacité de rechercher des informations, de savoir si nous allons travailler ensemble", etc.



Mais parfois, pour ne pas perdre votre emprise, vous devez toujours vous rappeler quelles connaissances un ingénieur devrait avoir et quelles questions vous pouvez évaluer le plus objectivement la personne que vous voyez pour la première fois de votre vie.




Tout d'abord, je passe rapidement en revue tous les CV



En parcourant les réponses, je fais attention aux mots-clés et aux lieux de travail. J'ai toujours lu la lettre d'accompagnement - beaucoup de candidats sont éliminés à ce stade. Je publie une offre d'emploi pour trouver un ingénieur DevOps et je reçois une réponse d'un développeur python, d'un développeur golang ou d'un coursier actuel qui est "très intéressé et aimerait essayer".



Des CV passent, qui indiquent l'expérience de travail dans les structures étatiques, quelque chose dans l'esprit «d'administrateur de la première catégorie à la Banque centrale de la Fédération de Russie». Toutes ces histoires verbeuses sur «l'administration des systèmes d'information», je les coupe aussitôt sans hésitation. Plus la description de l'emploi passé est officieuse et bureaucratique, plus il y a de chances qu'un tel candidat n'ait rien vu de sa vie, à l'exception de Windows et des sauvegardes utilisant une interface graphique.



Dans une sélection rapide de CV, la règle aide: plus je rencontre de technologies, mieux c'est. Si le CV d'une personne indique MySQL, Linux, Postgres, Apache, etc., il y a des chances. La personne a au moins entendu parler de la technologie et, qui sait, a peut-être même travaillé avec elle-même. Mais soyons honnêtes, vous pouvez écrire n'importe quoi sur votre CV.



Lors de l'entretien, la première chose que je fais est de vérifier la base de données



Quand je deviendrai un vieil homme frêle et que je serai obstinément battu, je commencerai à frapper avec un bâton sur le dos de tous ceux qui ne connaissent pas le net! C'est un must pour tout ingénieur. Nous vivons dans un monde où tout se passe en réseau. Même dans un secteur public fermé, il existe un contour local. Et il y a un développeur qui écrit un service proxy ou compose un service qui fonctionne avec une API, et ne comprend rien à l'API.



Je n'ai pas besoin de connaissances particulières, je ne demande pas de configurer MPLS à ma place. Mais qu'est-ce qu'un masque de sous-réseau, qu'est-ce qu'une adresse IP - au 21e siècle, tous les informaticiens devraient le savoir. Je n'ai aucune idée de ce qui se passe dans la tête d'une personne qui ne comprend pas ce qu'est 127.0.0.1. Il est assis sur une machine locale, il a un service fonctionnant sur une machine virtuelle. Le service a un point de terminaison 127.0.0.1, une connexion à la base de données. Par ignorance, notre héros baise la même chose. En conséquence: "Je ne peux pas me connecter à la base." Bien sûr, bon sang, ça ne se connecte pas!



Si une personne a un certificat CCNA, d'accord, même si elle ne l'a pas passé, ne l'a pas reçu physiquement, mais préparée - ce fait me suffit.




Par exemple, voici un casse-tête CCNA standard pour comprendre le fonctionnement des réseaux



Il y a deux commutateurs de réseaux différents, il y a un routeur entre eux. L'ordinateur A veut envoyer des données à l'ordinateur B.



Que se passe-t-il à ce moment?
: «, , , . , , MAC- , . , , . , ».






Ensuite, je demande à toutes les couches du modèle OSI



Quelqu'un at-il entendu parler du protocole Spanning Tree? À propos du protocole racine, à propos de la couche IP? Ok, comment ça marche? Comprend-il comment se déroule le routage? Eh bien, en vrac: tables de routage, protocole de routage dynamique, couche de transport TCP. Et ainsi de suite.



Je veux entendre la différence entre TCP et UDP. Un bon spécialiste me répondra pourquoi les systèmes critiques (par exemple, Domain Name System) utilisent le protocole sans garantie de livraison de messages (UDP).



La réponse est simple - c'est plus rapide de cette façon. Lors de l'organisation d'une session TCP, vous pouvez y envoyer un paquet UDP 3 fois et le recevoir en retour. Et pas de frais généraux.



Je pose des questions sur le DNS



Quels sont les types d'enregistrement? Mon interlocuteur sait-il ce qu'est un enregistrement MX, comment fonctionne SPF ou comment fonctionne DKIM.



Oui, ces connaissances peuvent ne pas être utiles dans le travail. Mais il est important pour moi de savoir si une personne comprend l'essence de la technologie, si elle était intéressée à lire à ce sujet. Il a donc ajouté quelques enregistrements au DNS et recherché sur Google ce qu'est un enregistrement SPF, ou n'est-ce pas?



Le protocole HTTP est utilisé absolument partout maintenant, et je pose la question



Je commence par poser les questions standard sur les différences entre les versions 1.0, 1.1 et la version deux de http. Je suis intéressé par ce que sont les en-têtes et pourquoi ils sont nécessaires. Comment le serveur Web comprend-il qu'il a reçu une demande pour un hôte virtuel spécifique, et pas pour un autre? Et je pose toujours quelques questions sur Nginx.



Ensuite, je passe en douceur mon attention au protocole TLS



Comment fonctionne SSL \ TLS? Un ingénieur doit comprendre cela au moins à un niveau de base - il existe une autorité de certification racine, il a signé le certificat et le certificat est utilisé quelque part.



Dans TLS, je suis généralement intéressé par le processus d'établissement d'une connexion. Pourquoi avons-nous besoin de clés privées et publiques et comment interagissent-elles? Si une personne tâtonne, alors je pose une question piège: est-il possible d'avoir plusieurs certificats différents sur un IP-shnik?



Réponse sous le spoiler
, TLS-, HTTP-, - , HTTP-, . Nginx , , . TLS-, , TLS-. . , IP- SSL.



Passer à Linux et BASH



Vous devez tout savoir sur Unix, tous les systèmes de type Unix. Vous devez être capable de travailler avec Shell et Bash, connaître les commandes de base. ls, mkdir, etc.



Eh bien, si le candidat peut écrire un peu en BASH, cela signifie qu'il a essayé d'automatiser d'une manière ou d'une autre cette histoire.



Sous Linux, je vais demander comment remplacer les lignes d'un fichier par d'autres lignes. Ou comment analyser certains access.log dans Nginx en utilisant BASH. Pour qu'une personne parle de awk, de chat, de tri, de tout ce qui aide à travailler rapidement.



Il y a des fichiers texte partout, vous devez les utiliser correctement. Si le candidat propose de les copier dans Excel et d'y faire quelque chose, je me sentirai embarrassé.



Ensuite, vous devez comprendre comment les choses se passent avec la virtualisation.



Virtualisation conventionnelle, virtualisation via l'hyperviseur. Si un candidat commence à parler de paravirtualisation, cela signifie qu'il sait quelque chose.



Ma question principale est la suivante: quelle est la différence entre la virtualisation de conteneurs et la virtualisation normale de l'hyperviseur? C'est bien si une personne compare ce qui est mieux, ce qui est pire, là où il convient de l'utiliser.



Passer aux conteneurs



Découvrez si la personne à qui vous parlez a travaillé avec Docker? A-t-il compilé des images, écrit des fichiers Docker, utilisé Docker compose, déployé avec. Pourquoi ces conteneurs sont-ils vraiment nécessaires et comment fonctionnent-ils? Notre candidat a-t-il évoqué le système d'orchestration de conteneurs Swarm ou Kubernetes? Vous pouvez poser tout un bloc de questions, mais l'essentiel est de comprendre si la personne a fait le travail de ses propres mains avec des conteneurs ou non?



Demander le déploiement CI / CD



Je suis intéressé par une énorme liste de choses: comment met-il en place le déploiement automatique, comment met-il en place l'intégration continue? Comment ses applications sont assemblées, utilise-t-il des systèmes d'analyse de code (PVS-Studio, SonarQube). Comment il écrit les tests, ou comment il intègre les tests écrits par les développeurs.



Fait-il une sorte de test d'intégration sur ces assemblys? Que se passe-t-il ensuite avec ce qu'il a collecté? S'ajoute-t-il en quelque sorte à des artfects ou est-il emballé dans des conteneurs de docker, poussé vers le registre? Laissez-le vous dire quels systèmes il a utilisés pour mettre en place le processus CI / CD. Il peut s'agir de GitLab CI, Circle CI et de certaines solutions cloud. Peut-être que Jenkins, eh bien, vous ne devriez pas oublier les scripts auto-écrits dans PowerShell.



Dites-moi comment une personne se déploie et je comprendrai tout. Il peut être déployé à l'aide de Helm dans Kubernetes, Ansible, des scripts ou quelque chose d'autre auto-écrit.



À propos du système de gestion de la configuration



Nous parlons Ansible le plus souvent. Parce que la plupart des gens le connaissent. Alors, pourquoi avons-nous besoin de rôles, comment chiffrer et stocker des données secrètes, comment télécharger des mots de passe dans un référentiel Git? Et des trucs comme ça.



En savoir plus sur la capacité d'écrire du code



Il est important de comprendre le développement afin de comprendre comment les services interagissent, pourquoi vous avez besoin d'API, de protocoles d'authentification, d'autorisation. C'est bien si le candidat a écrit quelque chose lui-même. Même les scripts basiques en Python ou Shell me suffisent. Ce qui compte, ce n'est pas le code, mais les tâches que la personne voulait résoudre, ce qu'elle voulait accomplir.



Le codage est nécessaire pour prendre en charge l'infrastructure, écrire des scripts locaux pour les sauvegardes, la surveillance personnalisée, pour extraire calmement les métriques. Il arrive souvent au travail qu'il n'y ait tout simplement pas de solution standard pour certaines tâches.



Les questions finales de l'entretien concernent le stockage de la base de données



SQL, NoSQL - quelles sont les différences, avec quoi avez-vous travaillé? Plus souvent, je rencontre des personnes ayant une expérience PostgreSQL, moins souvent - MySQL. Je pose des questions sur les index, si un candidat peut configurer une réplique, s'il peut configurer une réplication logique entre des tables ou simplement des données. Et que va-t-il surveiller dans ce cas? Comment accélérer la base?






Au fait, c'est une bonne question. Disons que la base est maintenant assise et repose sur le disque. Et rien ne peut être fait avec cela - personne d'autre n'achètera le serveur. Comment le faire fonctionner plus rapidement maintenant?



Juste...
: fsync, , . Linux , , . , , . , . . . , .





Pour résumer -



  • réseaux
  • Niveau API
  • couche de transport TCP \ UDP
  • Protocoles DNS et HTTP
  • Linux
  • virtualisation de conteneurs et d'hyperviseurs
  • CI / CD
  • système de gestion de la configuration
  • conteneurs
  • Base de données


Tout cela vous permet de faire une image complète d'une personne.



La chose la plus critique sur ma liste est la connaissance de base. Si vous ne connaissez pas la base, il est temps de terminer votre mission de sécurité sociale.



Si une personne ne peut pas me répondre en quoi consiste un masque de sous-réseau, ou ne comprend pas pourquoi les en-têtes sont nécessaires dans HTTP, dans la plupart des cas, un tel candidat obtient le moins le plus gros de mon cahier. N'êtes-vous pas curieux de savoir comment fonctionnent toutes ces choses à la souris?



Il est très difficile de travailler avec des gens qui ne font que répéter mécaniquement ce qu'ils ont appris, au lieu de comprendre comment tout fonctionne. Un débutant qui ne connaît pas Docker peut facilement le comprendre s'il comprend ce que sont HTTP, TLS et les réseaux.



Mais enfin, le point le plus important - cette liste entière n'est pas nécessaire pour la suivre dans une véritable interview. Vous devez parcourir cette liste vous-même avant d'embaucher des personnes.



Et si tout fonctionne bien, appelez le candidat pour un entretien et posez-lui une seule question: quel a été le plus gros échec que vous ayez fait au travail, comment l'avez-vous résolu et quelles conclusions avez-vous tirées de vos erreurs.



Quand une personne a quelque chose à dire, une telle séance de sécurité sociale passera comme une conversation amicale entre deux ingénieurs avec de la bière.



Eh bien, par tradition, je vous invite à rejoindre notre communauté dans le panier - là nous discutons régulièrement de tous ces sujets et bien d'autres qui seront utiles à la fois lors de l'entretien et au travail.



All Articles