20 häufig gestellte Fragen und Antworten zu DevOps-Interviews [2022]

Häufig gestellte Fragen in DevOps-Vorstellungsgesprächen und passende Antworten

DevOps hat sich zu einer sehr gefragten Methode für die Entwicklung und Bereitstellung von Anwendungen entwickelt, was zu einem wachsenden Bedarf an DevOps-Fachleuten führt.

Dieser Artikel befasst sich mit einigen der am häufigsten gestellten Fragen in DevOps-Vorstellungsgesprächen und gibt entsprechende Antworten. Diese Fragen können eine wertvolle Grundlage für die Vorbereitung auf ein Vorstellungsgespräch sein. Personalvermittler können sie auch im Einstellungsprozess nutzen.

Was bedeutet DevOps für Sie?

DevOps ist ein Ansatz, der darauf abzielt, die Effizienz und Zusammenarbeit während des gesamten Softwareentwicklungszyklus zu verbessern. Der DevOps-Prozess wird oft als fortlaufende Schleife dargestellt, die die Phasen Planung, Programmierung, Erstellung, Test, Freigabe, Bereitstellung, Betrieb und Überwachung umfasst.

DevOps beeinflusst den gesamten Anwendungslebenszyklus in seinen Planungs-, Entwicklungs-, Bereitstellungs- und Betriebsphasen. Jede Phase ist mit den anderen verbunden, und die Phasen sind nicht auf bestimmte Rollen beschränkt. In einer echten DevOps-Kultur ist jede Rolle in gewissem Maße in alle Phasen involviert.

Warum ist DevOps von Bedeutung?

Teams, die einen DevOps-Ansatz verfolgen, können Projekte in der Regel schneller abschließen. Dies liegt daran, dass Kommunikationsbarrieren abgebaut werden, was eine rasche Implementierung von Verbesserungen und notwendigen Änderungen ermöglicht. Der DevOps-Ansatz fördert die Zusammenarbeit zwischen Entwicklungs- und Betriebsteams, wobei die Ziele besser aufeinander abgestimmt werden. Einige Vorteile sind:

  • Verbesserte Kommunikation
  • Stärkere Teamarbeit und Zusammenhalt
  • Effizientere Zusammenarbeit
  • Schnellere Bereitstellung von qualitativ hochwertigen Produkten
  • Geringere Komplexität und schnellere Problemlösung
  • Bessere Skalierbarkeit und Flexibilität zur Integration von neuem Code
  • Stabilere Betriebsumgebungen
  • Höherer Automatisierungsgrad
  • Kostenreduzierung und optimierte Ressourcennutzung
  • Erhöhte Sicherheit durch integrierte und automatisierte Tools

Welche täglichen Aufgaben fallen in den DevOps-Bereich?

Zu den täglichen Aufgaben, die Sie erwähnen könnten, gehören:

  • Sicherstellung der kontinuierlichen Integration und Bereitstellung
  • Zuweisung und Kommunikation von Aufgaben
  • Entwicklung und Organisation von Testprotokollen
  • Überwachung und Sammlung von Infrastruktur- und Anwendungsmetriken
  • Analyse der in jeder Entwicklungsphase erzielten Ergebnisse
  • Reduzierung der Fehlerrate und der Wiederherstellungszeit im Fehlerfall
  • Verkürzung der Lieferzeiten

Wie unterstützt DevOps Entwickler?

Mit der Einführung von DevOps müssen Entwickler nicht mehr auf das Feedback des Betriebsteams warten, um Fehler in ihrem Code zu beheben. Sie können Probleme nun schneller beheben, da sie kontinuierliches Feedback zu ihrem Code erhalten.

Was versteht man unter Versionskontrolle?

Die Versionskontrolle ist eine Methode zur Verfolgung von Änderungen an Dateien oder Dateigruppen über einen Zeitraum, sodass bestimmte Versionen später wiederhergestellt werden können. Ein Versionskontrolltool ermöglicht die einfache Verfolgung des Fortschritts der Entwicklungsarbeit und die Speicherung verschiedener Versionen des Quellcodes, um bei Bedarf zu früheren Ständen zurückzukehren. Ein gängiges Tool in dieser Phase der Softwareentwicklung ist Git.

Was bedeutet CI/CD und welche Vorteile bietet es?

Kontinuierliche Integration (CI)

CI kombiniert Werkzeuge und Praktiken, die eine einfache Bereitstellung qualitativ hochwertiger und schneller Software ermöglichen. Dadurch werden Engpässe beseitigt und technische Probleme in den Einführungsphasen vermieden.

Kontinuierliche Lieferung (CD)

Dieser Ansatz automatisiert die Bereitstellung von Codeänderungen und stellt sicher, dass der Code in der Produktionsumgebung schnell aktualisiert werden kann und Anwendungen ordnungsgemäß funktionieren.

Kontinuierliche Bereitstellung (CD)

Im Gegensatz zur kontinuierlichen Lieferung besteht das Ziel dieser Praxis darin, dass keine manuelle Intervention bei der Bereitstellung von Software in der Produktion erforderlich ist. Die Veröffentlichung von neuem oder geändertem Code für die Produktion erfolgt automatisch.

CI/CD implementiert DevOps während des gesamten Anwendungslebenszyklus. Diese Praktiken tragen zur Steigerung der Produktivität in den verschiedenen Phasen des Softwareentwicklungsprozesses bei, indem sie diesen rationalisieren und automatisieren.

Was ist kontinuierliche Überwachung?

Kontinuierliche Überwachung ist eine DevOps-Praxis, die das Überwachen, Warnen und die Einleitung von Maßnahmen für Code und Infrastruktur umfasst. Dadurch werden Probleme, die während der Implementierung auftreten können, schnell erkannt und identifiziert, was die Zeit für die Problemlösung reduziert.

Warum ist kontinuierliches Testen wichtig?

Kontinuierliches Testen bedeutet die frühzeitige, schrittweise und angemessene Automatisierung von Tests in der Entwicklungspipeline. Es ist wichtig, da es die Qualität des Codes sicherstellt. Fehler werden frühzeitig erkannt und das Feedback zum Code erfolgt schneller.

Erläutern Sie einige Arten von Tests, die in DevOps verwendet werden.

Unit-Tests

Sie testen einen bestimmten Codeabschnitt isoliert. Unit-Tests sollten keine Verbindung zur Datenbank herstellen, das Dateisystem verwenden, mit externen Systemen kommunizieren oder mit Systemkomponenten interagieren. Dadurch können sie schnell ausgeführt werden, und Sie erhalten schnelles Feedback, wenn Änderungen die vorhandene Funktionalität beeinträchtigt haben.

Komponententests

Sie testen größere Funktionsgruppen, um solche Probleme zu identifizieren. Sie sind im Allgemeinen langsamer, erfordern eine komplexere Konfiguration und mehr E/A-Verbindungen zu einer Datenbank, einem Dateisystem oder anderen Systemen.

Bereitstellungstests

Solche Tests überprüfen, ob die Bereitstellung funktioniert hat, mit anderen Worten, dass Ihre Anwendung korrekt installiert und konfiguriert ist, auf alle benötigten Dienste zugreifen kann und reagiert.

Zusätzlich gibt es noch Exploitation- und Usability-Tests. Weitere Informationen zu Tests finden Sie im Artikel über Arten von Anwendungstests.

Was ist eine Microservices-Architektur und wie unterscheidet sie sich von einer traditionellen Architektur?

Die traditionelle Methode zum Schreiben von Software ist monolithisch. Dies bedeutet, dass alle Funktionen einer Anwendung in einem einzigen Block zusammengefasst sind. Im Falle von Fehlern oder wenn Aktualisierungen erforderlich sind, wird der gesamte Code, der das Produkt steuert, analysiert.

Dies führt zu Stillständen oder sogar Abstürzen und stellt ein großes Risiko für die Code-Integrität dar. Für die Kunden bedeutet das Verluste und Ärger.

In einer Microservices-Architektur stellen die Funktionen einer Anwendung jeweils einen unabhängig entwickelten und integrierten Service dar. Die Komponenten sind getrennt, arbeiten aber zusammen, um die korrelierten Aufgaben zu erledigen.

So läuft jeder unabhängige Dienst, ohne die anderen zu stören, was auch im Fehlerfall gilt. Wenn eine Funktion ausfällt, kann sie angepasst werden, ohne die Funktionalität der gesamten Anwendung zu beeinträchtigen.

Microservices machen DevOps noch agiler und effizienter, beschleunigen die End-to-End-Entwicklung und machen Anwendungen noch skalierbarer.

Was bedeutet Infrastruktur als Code?

Infrastruktur als Code ist ein Ansatz zur Definition der Computer- und Netzwerkinfrastruktur, der Quellcodeverwaltungstechniken verwendet und als Softwaresystem behandelt wird.

Dieser Code kann in der Quellcodeverwaltung aufbewahrt werden, um Prüfbarkeit und reproduzierbare Konstruktion zu ermöglichen, unterliegt Testverfahren und der vollständigen Disziplin der kontinuierlichen Bereitstellung.

Infrastruktur als Code basiert auf einigen Praktiken:

  • Verwendung von Definitionsdateien
  • Selbstdokumentierende Systeme und Prozesse
  • Versionierung aller Elemente
  • Kontinuierliches Testen von Systemen und Prozessen
  • Kleine Änderungen anstelle von Batches
  • Kontinuierliche Verfügbarkeit der Dienste

Build-Automatisierungstools geben an, wie die Software erstellt werden soll (welche Schritte in welcher Reihenfolge ausgeführt werden müssen) und welche Abhängigkeiten erforderlich sind (welche andere Software vorhanden sein muss, damit der Build erfolgreich ist).

Einige Tools eignen sich besser für Projekte in bestimmten Programmiersprachen, wie z. B. Maven und Apache’s Ant, die zwar mit anderen Sprachen verwendet werden können, aber hauptsächlich in Java-Projekten eingesetzt werden. Andere, wie Hudson oder Jenkins, können in verschiedenen Projekten breiter eingesetzt werden.

Was ist eine DevOps-Pipeline?

Die DevOps-Pipeline ist ein Prozess, der mehrere Schritte umfasst, bevor neue Software veröffentlicht wird. Sie kann in allen Phasen des Projekts eingesetzt werden, von der Integration und dem Testen bis hin zur Lieferung und Bereitstellung. Im Allgemeinen durchläuft sie die folgenden Phasen und Teams:

  • Produktvision: definiert die Eigenschaften des Produkts;
  • Entwicklerteam: entwickelt iterativ und inkrementell;
  • Bereitstellungsbereich: Implementiert und pflegt stabile Umgebungen;
  • Überwachung und Feedback: Versucht, Wert und Nutzen für den Kunden zu generieren.

Was sind die verschiedenen Phasen einer CI/CD-Pipeline?

Die Schritte, aus denen eine CI/CD-Pipeline besteht, sind einige zusammengefasste Aufgaben, die als Pipeline-Phase bezeichnet werden. Kurz gesagt sind es:

  • Kompilierung: Die Phase, in der die Anwendung kompiliert wird.
  • Test: Die Phase, in der der Code getestet wird. Hier spart Automatisierung Zeit und Aufwand.
  • Starten: wenn die Anwendung an das Repository gesendet wird.
  • Bereitstellung: Der Code wird in der Produktionsumgebung bereitgestellt.
  • Validierung und Compliance: Sie können Bildsicherheitsüberprüfungstools wie Clair verwenden, um die Qualität Ihrer Bilder sicherzustellen, indem Sie sie mit bekannten Schwachstellen (CVEs) vergleichen.

Dies sind die gängigsten Phasen der DevOps-Pipeline. Jedes Unternehmen hat jedoch seine spezifischen Bedürfnisse und seine eigene Pipeline.

Was bedeutet Plattformvirtualisierung und welche Vorteile hat sie?

Plattformvirtualisierung bedeutet, ein ganzes Computersystem zu simulieren, um mehrere Instanzen von Betriebssystemen gleichzeitig auf einer einzigen physischen Maschine auszuführen.

In dieser Konfiguration hat ein Virtual Machine Monitor (VMM) oder Hypervisor die vollständige Kontrolle über die Hardwareressourcen der physischen Maschine. Gastbetriebssysteme werden in virtuellen Maschinen ausgeführt, die von VMM verwaltet werden. Bei der Umgebungsvirtualisierung werden eine oder mehrere virtuelle Maschinen und die Netzwerkverbindungen zwischen ihnen simuliert.

Die Virtualisierung kann helfen, die Zeit für die Bereitstellung und die damit verbundenen Risiken auf verschiedene Weise zu reduzieren. Die Verwendung virtueller Maschinen bei der Bereitstellung ist eine große Hilfe bei der Erzielung eines effektiven Konfigurationsmanagements vertikal und horizontal über Ihre Systeme hinweg.

Insbesondere die Virtualisierung bietet folgende Vorteile:

  • Schnelle Reaktion auf sich ändernde Anforderungen
  • Konsolidierung
  • Standardisierung
  • Einfache Wartung von Baselines

Was ist der Unterschied zwischen Containern und virtuellen Maschinen?

Sowohl Container als auch virtuelle Maschinen arbeiten mit Virtualisierung und Isolierung von Umgebungen, um die Verarbeitung unabhängig von Anwendungen zu fördern. Container schaffen jedoch isolierte Umgebungen, in denen verschiedene Anwendungen gleichzeitig ausgeführt werden können, da die Aufteilung auf der Ebene der verfügbaren Ressourcen wie Speicher und Verarbeitung erfolgt. Andererseits ermöglicht die virtuelle Maschine einer physischen Maschine, andere mit anderen Betriebssystemen, Festplatten und Hardware unabhängig von den ursprünglichen zu beherbergen.

Was ist der Hauptunterschied zwischen Docker und Kubernetes?

Docker ist eines der am häufigsten verwendeten DevOps-Container-Tools. Es konzentriert sich auf die Portabilität von Anwendungen, indem sie in technologische Container und Verpackungssysteme platziert und über verschiedene Plattformen hinweg verschoben werden.

Gleichzeitig ist Kubernetes ein Container-Orchestrierungstool, das Container nach logischer Kategorisierung gruppieren kann. Es kann durch automatisierte Verteilung auf mehreren Computern bereitgestellt werden.

Lesen Sie mehr über Kubernetes vs. Docker.

Welche Telemetrie-Metriken gibt es in DevOps?

  • Geschäftsebene: Beispiele sind die Anzahl der Verkaufstransaktionen, Einnahmen aus Verkaufstransaktionen, Benutzeranmeldungen, Abwanderungsrate und A/B-Testergebnisse.
  • Anwendungsebene: Beispiele sind Transaktionszeiten, Reaktionszeiten von Benutzern und Anwendungsfehler.
  • Infrastrukturebene: Beispiele sind Webserver-Traffic, CPU-Auslastung und Festplattennutzung.
  • Client-Softwareebene: Beispiele sind Anwendungsfehler, Abstürze und vom Benutzer gemessene Transaktionszeiten.
  • Ebene der Bereitstellungspipeline: Beispiele sind der Status der Build-Pipeline (rot oder grün für verschiedene automatisierte Testsuiten), sich ändernde Bereitstellungsfristen, Bereitstellungshäufigkeiten, Werbeaktionen für Testumgebungen und der Umgebungsstatus.

Welche Technologien verwenden Sie für DevOps?

Diese Frage zielt darauf ab, herauszufinden, welche Technologien Sie zur Implementierung der DevOps-Kultur innerhalb der Organisation einsetzen können. Einige der gängigsten Technologien, die ein DevOps-Experte verwenden kann, sind:

  • Kontinuierliche Weiterentwicklung: Git, SVN, Mercurial, CVS, Jira
  • Kontinuierliche Integration: Jenkins, Bamboo, Hudson
  • Kontinuierliche Weiterentwicklung: Nexus, Archiv, Tomcat
  • Kontinuierliche Bereitstellung: Puppet, Chef, Docker
  • Kontinuierliche Überwachung: Splunk, ELK Stack, Nagios
  • Testen: Selenium, Katalon Studio

Erzählen Sie uns von Ihrer Erfahrung im Management von DevOps-Projekten

Bei DevOps-Fähigkeiten geht es nicht nur um technisches Fachwissen, sondern auch um menschliche und Managementfähigkeiten, die häufig bei Managern, Programm- und Projektmanagern zu finden sind.

Es ist wichtig zu wissen, wie man Änderungen verwaltet und unterstützt, ein Gateway zur Erleichterung der Übertragung neuer Codeversionen an die Betriebsseite bereitstellt, die verschiedenen Plattformen und Tools zur Leistungsmessung bewertet und überwacht sowie Ergebnisse analysiert und teilt, um zukünftige Lieferungen zu verbessern usw.

Gehen Sie methodisch an diese Frage heran und beschreiben Sie Ihren Ansatz zur Lösung komplexer Probleme. Wie wollen Sie die Funktionsweise der Infrastrukturen verbessern? Wie planen Sie die Zusammenarbeit mit Front-, Middle- und Backoffice-Entwicklern? Welche Überwachungstools beherrschen Sie? Erwägen Sie auch, Ihre Erfahrungen mit der Konfliktlösung in Ihrem Team zu teilen.

Wenn Sie mehr erfahren möchten, können Sie sich für einen der angebotenen DevOps-Kurse anmelden.