Wie man die wichtigsten DevOps-Fähigkeiten überprüft

Veröffentlicht: Zuletzt aktualisiert:
DevOps-Fähigkeiten-Screening

Es gibt nur wenige Dinge in der Programmierung, die so ungenau sind wie DevOps. Der Name selbst ist sogar umstritten mit SysOps und SRE - ebenfalls beliebte Bezeichnungen für diesen Bereich. Nicht nur das, es gibt kein Standard-Paket von DevOps-Fähigkeiten.

Die Rolle liegt irgendwo zwischen der eines Softwareentwicklers und eines Betriebsingenieurs, so dass das Screening sehr spezifisch auf die genauen Fähigkeiten abgestimmt ist, die der Arbeitgeber sucht. Wie prüft man also DevOps-Fähigkeiten? Um eine bessere Vorstellung zu bekommen, ist es wichtig, ganz am Anfang zu beginnen.

Was ist DevOps?

Der Zyklus der DevOps-Fähigkeiten

Quelle: Irma Kornilowa

Ein DevOps-Ingenieur wurde geschaffen, um die agile Softwareentwicklung zu unterstützen, und ist irgendwo zwischen einem traditionellen Softwareentwickler und einem Betriebsingenieur angesiedelt. Als Ernest Müller definiert es,


Ernset Mueller spricht über DevOps-Fähigkeiten

DevOps ist die Praxis, dass Betriebs- und Entwicklungsingenieure gemeinsam am gesamten Service-Lebenszyklus teilnehmen, vom Design über den Entwicklungsprozess bis hin zum Produktionssupport.

Quelle: der agile Administrator

Bildquelle: der agile Administrator


Früher erstellten die Entwickler ein Produkt und übergaben es dem Betrieb, damit dieser es einsetzt. Wenn etwas schief ging, erstellte der Betrieb ein Support-Ticket und schickte es an die Entwickler zurück, die eine Korrektur erstellten und sie dann an den Betrieb zurückschickten. Dies war ein sehr isolierter Ansatz, der ebenso langsam wie starr war.

DevOps stellt diesen Ansatz in Frage, indem es das Entwicklungsteam und das Betriebsteam zusammenbringt, um Anwendungen kontinuierlich zu erstellen, bereitzustellen, zu warten und zu verbessern. Und das bringt große Vorteile mit sich. Die Bericht zum Stand von DevOps 2019 die von DevOps Research and Assessment veröffentlicht wurde, ergab, dass die Leistungsträger (die DevOps eingeführt haben)

  • 208 Mal häufigere Code-Implementierungen
  • 106 Mal schnellere Durchlaufzeit vom Commit bis zum Deployment
  • 2604 Mal schnellere mittlere Zeit zur Wiederherstellung nach einem Ausfall
  • 7 um ein Vielfaches geringere Fehlerquote bei Änderungen (die Wahrscheinlichkeit, dass Änderungen fehlschlagen, ist 1/7 so hoch)

Dies alles im Vergleich zu Unternehmen, die DevOps nicht einsetzen.

Auf welche DevOps-Fähigkeiten sollte ein Personalverantwortlicher achten?

Im Gegensatz zu anderen Software-Engineering-Positionen, die ein definiertes Skill-Set und einen definierten Fokus haben, ist DevOps etwas schwieriger festzulegen. Wie Mike Dilworth hervorhebt:


Mike Dilworth spricht über DevOps-Fähigkeiten

DevOps ist eine Kultur, nicht eine Rolle! Das ganze Unternehmen muss DevOps betreiben, damit es funktioniert.

Quelle: Irma Kornilowa

Bildquelle: AngelList


Mit anderen Worten: Sie müssen sowohl bereichsspezifisches technisches Fachwissen als auch die Fähigkeit zur Unterstützung und zum Gedeihen in der agilen Kultur, in der DevOps arbeitet, bei der Einstellung berücksichtigen. Folglich muss ein DevOps-Ingenieur über eine Kombination dieser Fähigkeiten verfügen.

Kollaboration/Soft Skills

Ein DevOps-Ingenieur ist in erster Linie ein Mitglied eines Teams. Es ist keine Rolle, die dazu ermutigt, als Individuum hervorzustechen. Stattdessen unterstützt sie die Zusammenarbeit bei der ständigen Iteration und Verbesserung eines Produkts. Wie Alan Zucker, Leiter von Project Management Essentials, es ausdrückt,


Alan Zucker spricht über DevOps-Fähigkeiten

Großartige DevOps-Ingenieure beginnen damit, die Mitarbeiter, die Kultur und die Art und Weise, wie die Organisation läuft, zu verstehen (...) Sie entwickeln dann eine Strategie, die sich auf die Vereinfachung der gesamten Betriebsumgebung konzentriert, um das Ziel der kontinuierlichen Bereitstellung zu erreichen.

Quelle: TechRepublic

Bildquelle: VerlinktIn


Kenntnisse über Werkzeuge und Technologien

Es gibt viele Tools und Technologien, die von einem DevOps-Ingenieur verwendet werden können. Und sie sind oft unerlässlich für die Aufrechterhaltung der Kernkonzepte von DevOps. Es ist wichtig zu sehen, ob Ihr Kandidat die von Ihnen verwendeten Technologien kennt und in der Lage ist, bei Bedarf neue Technologien zu erlernen.

Konfigurationsmanagement

Das bedeutet, viele Systeme mit Automatisierungswerkzeugen konfigurieren zu können.

Ein DevOps-Ingenieur muss in der Lage sein, Tools und Skripte zu verwenden, um die App bereitstellen und warten zu können, während er alle Probleme löst, die auf dem Weg auftauchen. Je nach den Besonderheiten der Position können auch Fähigkeiten im Bereich Sicherheitsmanagement-Tests wichtig sein, nach denen gesucht wird.

Während Konfigurationsmanagement-Tools nur ein Teil des Werkzeugkastens sind, auf den ein DevOps-Ingenieur zurückgreift, ist dies ein Bereich, der leicht getestet werden kann und dabei viel über den Kandidaten verrät.

Screening-Methoden für DevOps-Fähigkeiten

Da die DevOps-Fähigkeiten so stark variieren, wird die Kombination aus mehreren verschiedenen Bildschirmmethoden die besten Ergebnisse erzielen.

Überprüfen Sie die Lebensläufe Ihrer Kandidaten auf DevOps-Fähigkeiten

Ein CV- oder Lebenslauf-Screening ist wahrscheinlich das erste, was die meisten Recruiter tun, um den Kandidatenpool einzugrenzen. Wir haben ein kleines Glossar vorbereitet, um Recruitern zu helfen, zu verstehen, wonach sie suchen.

DevOps-Fähigkeiten-Glossar für Personalverantwortliche im technischen Bereich:

Methodiken Agil, DevOps, Kontinuierliche Lieferung, Kontinuierliche Integration, Microservices, Testgetriebene Entwicklung (TDD), Infrastructure as Code
Skripting-Sprachen Bash, Python, Ruby, Perl, PHP
Infrastruktur-Automatisierung Puppet, Chef, Ansible, Terraform
Quellcode-Verwaltung Git, Mercurial, Subversion
Cloud-Dienste AWS, Azure, Google Cloud, OpenStack
Orchestrierung Kubernetes, Nomad
Behälter Dockarbeiter
Projektleitung Jira, Trello, Asana
Kontinuierliche Integration und kontinuierliche Lieferung Jenkins, Jenkins-X, Tekton, Travis CI, CircleCI, Azure, DevOps
Prüfung TestComplete, TestingWhiz, Serverspec, Testinfra, InSpec, Consumer Driven Contracts
Überwachung Prometheus, Nagios, Icinga, Zabbix, Splunk, ELK Stack, CloudWatch, Open Telemetry

Sobald der Lebenslauf-Bildschirm fertig ist, gibt es zwei Hauptfähigkeiten, die mit einer automatisierten Testplattform getestet werden können.

Egal, ob Sie ein Ingenieur sind, der Code bereitstellt, oder ein Operator, der ihn am Laufen hält, die Fähigkeit, Ihren Server zu konfigurieren, ist eine wesentliche Fähigkeit. Aber diese Fähigkeit kann in zwei Teile aufgeteilt werden. Der erste ist das Konfigurationsmanagement, während der zweite die Anwendung dieser Fähigkeit bei der Konfiguration eines Rechners ist. Und wie Sie gleich sehen werden, erfordern beide Fähigkeiten unterschiedliche Tools, um sie effektiv zu testen.

Konfigurationsmanagement DevOps-Kenntnisse erfordern die Codierung von Tests

Einer der größten Schmerzpunkte eines DevOps-Ingenieurs ist die manuelle Verwaltung verschiedener Serverkonfigurationen. Dies kann ein großer Schmerz sein, da es den Ingenieur eher zu einem Feuerwehrmann macht, als zu jemandem, der Anwendungen erstellt und bereitstellt. Daher ist eine Schlüsselfähigkeit eines großartigen DevOps-Ingenieurs die Fähigkeit, seine Effektivität durch das Schreiben von Konfigurationsmanagement-Code zu vervielfachen.

Anders formuliert von Adam Kadzban, leitender DevOps-Ingenieur bei kCura,


Adam Kadzban spricht über DevOps-Fähigkeiten

Die Zeiten manuell konfigurierter Infrastruktursysteme sind vorbei (...) Infrastruktur muss mit Code bereitgestellt und konfiguriert werden, oder Sie werden im Support untergehen.

Quelle: TechRepublic

Bildquelle: VerlinktIn


Die Wurzel dieser Einstellung ist die Tatsache, dass viele manuelle Aufgaben mit speziellen Tools wie Puppet und Chef oder sogar mit Skriptsprachen wie Python, Ruby und Bash automatisiert werden können. Es stellt sich also die Frage, wie man diese Fähigkeiten am besten testen kann?

Ein Arbeitsprobentest ist der beste Weg, um Skripting-Fähigkeiten zu überprüfen

Ein Puppet-Code ist nicht einfach ein Algorithmus. Stattdessen ist er eine Anwendung, die das System regelt. Aus diesem Grund ist ein Arbeitsproben-Test wahrscheinlich der beste Weg, um die richtigen Fähigkeiten zu testen. Wir haben die Effektivität von Arbeitsprobentests an anderer Stelle in diesem Blog und wie man sie für gewöhnliche Codierungsprobleme verwendet, aber wie können sie auf das Schreiben von Puppet-Code für das Konfigurationsmanagement angewendet werden?

Ein guter Anfang ist die Betrachtung des Prozesses, den Sie durchlaufen müssen, um einen Automatisierungscode zu schreiben. Er ist wirklich ziemlich einfach,

  1. Beschreiben Sie die Konfiguration im Code
  2. Tests dagegen ausführen

Das erste, was Ihr Kandidat tun muss, ist, die Konfiguration in Code zu beschreiben. Sagen wir also, Sie wollen, dass er ein Puppet-Modul für einen Dateiserver erstellt. Dies ist eine ziemlich einfache DevOps-Aufgabe, die sich ziemlich unkompliziert in einen Arbeitsprobentest verwandeln lässt, wie in dieser Aufgabe:

Puppet Fileserver-Aufgabe zum Testen von DevOps-FähigkeitenEs ist in Ordnung, ein vorgefertigtes Modulskelett zu haben, um Ihren Kandidaten in die richtige Richtung zu weisen und dann zu definieren, wie der Dateiserver konfiguriert werden soll. Wenn dies mit einer Plattform wie DevSkiller geschieht, können gegen den erzeugten Automatisierungscode Unit-Tests ausgeführt werden, sodass Sie die Robustheit des Codes überprüfen und etwaige Fehler finden können.

Und es ist nicht nur Puppet, das auf diese Weise getestet werden kann. Mit dem Test-Builder von DevSkiller kann Ihr technischer Leiter Skripting-Aufgaben in verschiedenen Technologien wie Chef, Bash, Python, Ruby und Go erstellen. Dieser Test wird Ihnen einen starken Hinweis darauf geben, wie gut ein DevOps Engineer seine Effizienz maximieren kann.

Wenn ein DevOps-Ingenieur Aufgaben effektiv automatisieren kann, ist er dann in der Lage, zu Aufgaben auf höherer Ebene überzugehen, wie z. B. der Implementierung neuer Funktionen. Nicht nur das, sondern sobald Sie mit dem Testen von Kodierungsfähigkeiten beginnen, können Sie zu anderen DevOps-Funktionen übergehen, wie z. B. dem Testen von Git-Steuerungen und dem Schreiben von Code als Infrastruktur.

Aber das Schreiben von Automatisierungscode ist nur ein Teil des Puzzles. Früher oder später wird ein DevOps-Ingenieur tatsächlich eine Maschine konfigurieren müssen. Das ist ein Problem, denn die meisten Unternehmen fühlen sich nicht wohl dabei, wenn ein Kandidat die Kontrolle über einen ihrer Server erhält. Denken Sie doch nur an den Schaden, den er auf Ihrem System anrichten könnte. Aber was noch schlimmer wäre, ist, wenn Sie jemanden einstellen, ohne zu wissen, ob er tatsächlich einen Server konfigurieren kann, ohne dass das Schlimmste passiert.

Testen der Systemkonfiguration DevOps-Fähigkeiten mit einer virtuellen Maschine

Eine Coding-Challenge kann testen, wie ein Skript läuft, aber Sie brauchen eine tatsächliche Maschine, um zu sehen, ob ein DevOps Engineer ein System konfigurieren kann. Das liegt daran, dass Server nicht wie ein Programm sind.

Wie können Sie also testen, ob ein DevOps-Ingenieur einen Server konfigurieren kann, ohne einen Ihrer eigenen zu verwenden? Verwenden Sie eine virtuelle Maschine. Dies sind in sich geschlossene Systeme, die komplett von Ihren kritischen Systemen getrennt sind und die es Ihnen erlauben, so ziemlich alles zu tun, was Sie wollen. Und sie sind perfekte Umgebungen, in denen Sie sehen können, ob Ihr DevOps-Ingenieur all die verschiedenen Eingaben, Änderungen und Probleme bewältigen kann, mit denen er bei der Konfiguration eines Systems konfrontiert wird.

Rootskiller gibt Ihnen einen Einblick in die DevOps-Fähigkeiten Ihres Kandidatens

Rootskiller kann verwendet werden, um DevOps-Fähigkeiten zu testenIm Kern ist Rootskiller eine virtuelle Maschine. Wie jeder Computer können Sie ihm Befehle erteilen, Programme darauf konfigurieren und ihn sogar in Grund und Boden fahren, wenn Sie das wollen. Gleichzeitig reagiert er wie jedes andere System, verarbeitet Ihre Konfigurationen und reagiert auf schlecht ausgeführte Befehle und externe Daten. Wie hilft Ihnen das also beim Testen von DevOps?

Nehmen Sie eine Aufgabe wie diese:

Docker-Aufgabe zum Testen von DevOps-FähigkeitenAlle beteiligten Technologien sind gängige Technologien, die ein DevOps-Ingenieur für die kontinuierliche Bereitstellung verwenden wird. GNU/Linux ist eines der am weitesten verbreiteten serverseitigen Betriebssysteme und Docker ist ein gängiges Tool, das für Containerisierungen verwendet wird. Diese sind ein wesentlicher Bestandteil eines kontinuierlichen Deployments, einer der Hauptsäulen von DevOps.

Nach dem Starten der virtuellen Maschine konfiguriert der Kandidat also den Server gemäß den vorgelegten Anweisungen, aber das ist noch nicht alles. Nachdem die Aufgabe gelöst ist, werden Tests mit der Konfiguration durchgeführt, die der Kandidat erstellt hat. Dabei wird geprüft, ob sie funktioniert, welche Bugs vorhanden sind, ob sie die relevanten Randfälle löst und wie stabil sie ist.

Zusätzlich zur Analyse der eigentlichen Lösung wird die gesamte Sitzung für ein Bildschirmaufnahmevideo aufgezeichnet. Auf diese Weise kann ein technischer Interviewer die Entscheidungen sehen, die der Kandidat trifft, und erkennen, wie er auf neue Herausforderungen reagiert.

Während sich die Frage hier auf die Konfiguration von Docker auf einem GNU/Linux-Rechner bezieht, können Sie dies mit dem Testaufbau-Tool für viele serverseitige Technologien und Bereitstellungstechniken einrichten wie LAMP-Stapel.

Terraform-Tests zum Testen von Infrastructure as Code-Fähigkeiten

Terraform ist das Tool der Wahl für die Verwaltung von Cloud-Diensten über mehrere Plattformen hinweg. Es verwendet seine eigene domänenspezifische Sprache namens HCL, die JSON sehr ähnlich ist. Es wird häufig für die Verwaltung von Cloud-Infrastrukturen auf verschiedenen Cloud-Plattformen verwendet. Es wird von einer großen Zahl von Anbietern unterstützt und ist weit mehr als ein einfaches Cloud-Tool. Da es sich im Laufe der Jahre so großer Beliebtheit erfreut hat, ist es heute ein Standardtool für die Verwaltung von allem, was einen deklarativen Code enthält. Es wird von vielen Unternehmen eingesetzt und gilt als unverzichtbares Tool in der DevOps-Community.

Mit Terraform sind wir in der Lage, Aufgaben bereitzustellen, mit denen das praktische Wissen über verschiedene Cloud-Anbieter getestet werden kann. Wir glauben, dass diese Aufgaben besser für die aktuelle DevOps-Landschaft geeignet sind, in der das Schreiben von Terraform-Code so allgegenwärtig ist und ein tieferes Verständnis der Cloud-APIs erfordert.

Wie wir Terraform-Code testen

Wir haben die Terraform-Aufgaben so gestaltet, dass es für Entwickler einfach ist, ihre eigenen Aufgaben zu erstellen, und dass die Erfahrung für Kandidaten so reibungslos und schnell wie möglich ist. Wir verlangen von den Kandidaten nicht, dass sie ein Konto bei dem Cloud-Anbieter haben, der von einer Aufgabe genutzt wird. Wir verlangen noch nicht einmal die Installation von Terraform - alles, was ein Kandidat braucht, ist das Wissen, wie man Terraform-Code schreibt, der die in einer Aufgabe spezifizierten Anforderungen erfüllt. TalentScore führt einen Trockenlauf durch (d.h. führt den Befehl "terraform plan" aus) und wertet die Ergebnisse aus, die der Befehl liefert. Die Cloud-Ressourcen, die im eingereichten Code des Kandidaten definiert sind, werden nicht erstellt, so dass das Feedback sofort an den Kandidaten zurückgegeben wird. Dies spart eine Menge Zeit und vermeidet mögliche Probleme, die auftreten könnten, wenn die Plattform diese Ressourcen tatsächlich erstellen würde.

Um eine bessere Erfahrung mit Terraform-Aufgaben zu machen, empfehlen wir den Kandidaten, Terraform zusammen mit einer Software zur Syntaxprüfung auf ihren Arbeitsplätzen zu installieren. Wir empfehlen VS Code mit der offiziellen Terraform-Erweiterung. Sie unterstützt einen Sprachserver, der automatische Vervollständigung und integrierte Dokumentation bietet. Mit dieser Einrichtung ist die Arbeit mit Terraform-Code schnell und weniger fehleranfällig.

Was als nächstes zu tun ist

Nachdem Sie einen Lebenslauf gesichtet, die Skripting-Fähigkeiten Ihres Kandidaten getestet und gesehen haben, wie gut er ein System konfigurieren kann, holen Sie die besten Kandidaten zu einem Vorstellungsgespräch herein. Dies kann eine Kombination umfassen aus Code-Paarung und Verhaltensfragen.

Aber bevor Sie das tun, sehen Sie sich DevSkiller Um zu sehen, wie einfach es ist, DevOps-Fähigkeiten und Infrastructure as Code-Fähigkeiten automatisch zu überprüfen, sehen Sie sich bitte auch an, was Terraform testing sollte wie folgt aussehen.

Beitrag teilen

Erfahren Sie mehr über die Einstellung von Technikern

Abonnieren Sie unseren Learning Hub, um nützliche Einblicke direkt in Ihren Posteingang zu erhalten.

Kodierfähigkeiten nahtlos verifizieren & entwickeln.

Sehen Sie DevSkiller-Produkte in Aktion.

Sicherheitszertifizierungen & Konformität. Wir sorgen dafür, dass Ihre Daten sicher und geschützt sind.

DevSkiller-Logo TalentBoost-Logo TalentScore Logo