Close

Was ist ein DevOps Engineer?

Ein DevOps Engineer benötigt Fähigkeiten, die sich sowohl auf die Entwicklung als auch auf den Betrieb erstrecken. Gleichzeitig muss auch soziale Kompetenz vorhanden sein, um Brücken zwischen isolierten Teams zu schlagen.

Profilbild von Tom Hall
Tom Hall

DevOps-Fan und -Anwender


Wenn ein Unternehmen in Silostrukturen verwurzelt ist, in denen Entwicklung und Betrieb getrennt arbeiten, führt die Implementierung von DevOps häufig zu einer organisatorischen Umgestaltung. Nur mit den richtigen Mitarbeitern, der richtigen Kultur und den richtigen Tools kann DevOps erfolgreich umgesetzt werden. Laut der Atlassian-Umfrage zu DevOps-Trends 2020 sind mangelhafte Fähigkeiten der Mitarbeiter eine der häufigsten Hürden bei der Implementierung von DevOps.

Eine der Schlüsselrollen bei der Implementierung einer DevOps-Umstrukturierung ist der DevOps Engineer. Diese Person muss über vielseitige Fähigkeiten verfügen, die sowohl die Entwicklung als auch den Betrieb umfassen, aber auch die soziale Kompetenz zur Überbrückung der Kluft zwischen isolierten Teams darf nicht fehlen.

Was ist ein DevOps Engineer?


Ein DevOps Engineer ist ein IT-Generalist, der über weitreichende Kenntnisse in Entwicklung und Betrieb verfügen sollte, einschließlich Programmierung, Infrastrukturmanagement, Systemadministration und DevOps-Toolketten. DevOps Engineers benötigen auch eine große soziale Kompetenz, da sie über Unternehmenssilos hinweg arbeiten, um ein kollaborativeres Umfeld zu schaffen.

DevOps Engineers benötigen ein umfassendes Verständnis der gängigen Systemarchitektur, Bereitstellung und Verwaltung, müssen aber auch Erfahrung mit den traditionellen Entwickler-Toolsets und -praktiken wie Quellcodeverwaltung, Codeüberprüfungen, Schreiben von Komponententests und Agile-Prinzipien haben.

Rollen und Zuständigkeiten


Die Rolle eines DevOps Engineer variiert von Unternehmen zu Unternehmen, beinhaltet jedoch immer eine Kombination aus Release-Engineering, Infrastrukturbereitstellung und -verwaltung, Systemadministration, Sicherheit und DevOps-Interessenvertretung.

Teamorganisation-Symbol
Lösung anzeigen

DevOps-Tools für das gesamte Team

Buch-Symbol
Trainingskurs

Grundlagen von Atlassian DevOps

Das Release-Engineering umfasst die Arbeit, die für Erstellung und Deployment von Anwendungscode erforderlich ist. Die genauen Tools und Prozesse sind von vielen Variablen abhängig, z. B. in welcher Sprache der Code geschrieben ist, wie viel der Pipeline automatisiert wurde und ob sich die Produktionsinfrastruktur vor Ort oder in der Cloud befindet. Release-Engineering kann die Auswahl, Bereitstellung und Wartung von CI/CD-Tools oder das Schreiben und Verwalten maßgeschneiderter Build-/Deploy-Skripte beinhalten.

Die Bereitstellung der Infrastruktur und die Systemadministration umfassen das Deployment und die Wartung der Server, Speicher- und Netzwerkressourcen, die zum Hosten von Anwendungen erforderlich sind. Für Unternehmen mit lokalen Ressourcen kann dies die Verwaltung physischer Server, Speichergeräte, Switches und Virtualisierungssoftware in einem Rechenzentrum umfassen. In einem hybriden oder vollständig cloudbasierten Unternehmen umfasst dies normalerweise die Bereitstellung und Verwaltung virtueller Instanzen derselben Komponenten.

Das Werben für DevOps wird oft unterbewertet oder völlig übersehen, ist aber wohl die wichtigste Rolle eines DevOps Engineer. Die Umstellung auf eine DevOps-Kultur kann für die Mitglieder des Entwicklerteams störend und verwirrend sein. Als DevOps-Fachexperte ist es Sache des DevOps Engineer, Aufklärungsarbeit bezüglich DevOps im gesamten Unternehmen zu leisten.

Kenntnisse von DevOps Engineers


Die technischen Fähigkeiten eines DevOps Engineer variieren je nach Teamstruktur, Technologien und verwendeten Toolsets. Dennoch sind starke Kommunikations- und Kooperationsfähigkeiten unerlässlich. Für einen DevOps Engineer ist es darüber hinaus wichtig, alle Komponenten einer Delivery-Pipeline genau zu verstehen und die Vor- und Nachteile der verfügbaren Tools und Services zu kennen.

Kommunikation und Zusammenarbeit

Ein DevOps Engineer muss in der Lage sein, effektiv mit Teams, Managern und Kunden zu kommunizieren und zusammenzuarbeiten. Diese sogenannten Soft-Skills werden oft übersehen und unterschätzt, aber der Erfolg von DevOps hängt stark von der Qualität und Quantität des Feedbacks über den gesamten Wertstrom ab.

Systemadministration

Ein DevOps Engineer hat Erfahrung mit der Systemadministration, wie der Bereitstellung und Verwaltung von Servern, dem Deployment von Datenbanken, der Sicherheitsüberwachung, dem System-Patching und der Verwaltung interner und externer Netzwerkkonnektivität.

Erfahrung mit DevOps-Tools

Da die Verwendung der richtigen Tools für DevOps-Verfahren unerlässlich ist, muss der DevOps Engineer eine Vielzahl von Tools kennen und anwenden können. Diese Tools erstrecken sich über den DevOps-Lebenszyklus von der Infrastruktur und der Entwicklung bis hin zur Überwachung und dem Betrieb eines Produkts oder eines Service.

Konfigurationsmanagement

Von DevOps Engineers wird oft erwartet, dass sie Erfahrung mit einem oder mehreren Konfigurationsmanagementtools wie Chef, Puppet oder Ansible haben. Viele Unternehmen setzen diese oder ähnliche Tools ein, um Systemverwaltungsaufgaben wie das Deployment neuer Systeme oder die Implementierung von Sicherheitspatches auf bereits laufenden Systemen zu automatisieren.

Container und Container-Orchestrierung

Bei der Containerisierung, einer von Docker verbreiteten Technologie, werden der Code für die Anwendung und ihre Laufzeitumgebung im selben Image gebündelt. Dadurch ist der Einsatz herkömmlicher Tools für die Konfigurationsverwaltung weniger notwendig. Gleichzeitig bringt die Verwaltung von Containern ihre eigenen Herausforderungen mit sich und Erfahrung mit sogenannten Container-Orchestratoren (z. B. Docker Swarm oder Kubernetes) wird für den DevOps Engineer zu einer notwendigen Fähigkeit.

Continuous Integration und Continuous Deployment

Continuous Integration und Continuous Delivery (CI/CD) sind wesentliche Praktiken eines DevOps-Ansatzes für die Softwareentwicklung und werden durch eine Vielzahl verfügbarer Tools ermöglicht. Die grundlegendste Funktion eines CI/CD-Tools oder eines Toolsets besteht darin, den Prozess des Erstellens, Testens und Bereitstellens von Software zu automatisieren.

DevOps Engineers benötigen normalerweise Erfahrung mit Konfiguration und Deployment eines oder mehrerer CI/CD-Tools und müssen eng mit dem Rest der Entwicklungsabteilung zusammenarbeiten, um sicherzustellen, dass diese Tools effektiv eingesetzt werden.

Systemarchitektur und -bereitstellung

Ein DevOps Engineer sollte in der Lage sein, Computerökosysteme lokal oder in der Cloud zu erstellen, bereitzustellen und zu verwalten. Es ist wichtig, Infrastructure as Code (IaC) zu verstehen, einen IT-Managementprozess, der Best Practices von der DevOps-Softwareentwicklung bis zur Verwaltung von Cloud-Infrastrukturressourcen anwendet. Ein DevOps Engineer sollte wissen, wie die Systeminfrastruktur in der Cloud mit Amazon Web Services (AWS), AWS CloudFormation oder Terraform modelliert wird.

Kenntnisse in Programmierung und Scripting

Viele traditionelle Systemadministratoren haben Erfahrung mit dem Schreiben von Shell-Skripten, um repetitive Aufgaben zu automatisieren. Die Kenntnisse eines DevOps Engineer sollten über das Schreiben von Automatisierungsskripten hinausgehen und fortgeschrittene Softwareentwicklungspraktiken und die Implementierung agiler Entwicklungspraktiken wie Codeüberprüfungen und Quellcodeverwaltung umfassen.

Kompetenzen im Zusammenarbeitsmanagement

Teamübergreifende Zusammenarbeit ist unabhängig von der spezifischen Unternehmensstruktur ein grundlegender Bestandteil einer effektiven DevOps-Strategie. Unabhängig davon, ob es sich bei dem Entwicklerteam um eine Gruppe handelt, die nur nach Rollen unterteilt ist, oder ob es separate Teams für Feature-Entwicklung, Qualitätssicherung, DevOps usw. gibt, sollte der DevOps Engineer im gesamten Unternehmen als Coach und Mitarbeiter mit vielen verschiedenen Personen zusammenarbeiten.

Zum Beispiel ist einer der wertvollsten Gewinne aus einer DevOps-Investition die Möglichkeit, Entwicklern schnelleres Feedback zu geben. Ein DevOps Engineer muss häufig mit der Qualitätssicherung zusammenarbeiten (unabhängig davon, ob es sich um manuelle Tester oder Entwickler, die Testautomatisierungen schreiben, handelt), um die Geschwindigkeit, Effizienz und Resultate von Testmethoden zu optimieren.

Gleichzeitig benötigen Entwickler möglicherweise Unterstützung von DevOps Engineers, wenn sie daran arbeiten, den Prozess der Erstellung und Bereitstellung von Anwendungscode zu verbessern.

Das DevOps-Team: weitere Rollen und Zuständigkeiten


DevOps Evangelist

Dies ist ein DevOps-Experte, der DevOps-Praktiken im gesamten Unternehmen fördert und weiterentwickelt. Der DevOps Evangelist hat in der Regel einen starken technischen Hintergrund, aber der Schwerpunkt der Rolle liegt auf zwischenmenschlicher Kommunikation und Prozessoptimierung.

Release Manager/Change Advisory Board

In Unternehmen, die nicht auf DevOps umgestiegen sind oder sich noch in einem frühen Stadium befinden, gibt es möglicherweise ein separates Team namens Change Advisory Board (CAB) oder einen einzelnen Release Manager.

Der Zweck solcher Rollen besteht darin, sicherzustellen, dass jede neue Anwendungssoftware, die in der Produktionsumgebung veröffentlicht wird, den Qualitäts- und Sicherheitsstandards entspricht und über die entsprechenden Managementgenehmigungen verfügt.

Diese Rollen waren besonders wichtig, als Software-Releases riskanter waren. Sie sind jedoch weniger wichtig (wenn nicht sogar überflüssig), wenn Strategien wie automatisiertes Testen und Dark Launch angewendet werden.

Automatisierungsexperte

Von jedem DevOps Engineer wird erwartet, dass er über Fachwissen in der Automatisierung verfügt. Es ist in Unternehmen jedoch nicht ungewöhnlich, dass eine separate Rolle für einen Automatisierungsexperten oder Automatisierungsingenieur vorhanden ist. Dies kann jemand sein, dessen Schwerpunkt auf der Verwaltung der CI/CD-Tools oder der Entwicklung und Wartung automatisierter Test-Suites liegt.

Softwareentwickler

In den meisten Fällen wird der Titel Softwareentwickler an Mitarbeiter vergeben, die Front-End-, Back-End-Anwendungscode oder beides schreiben. Dies sind die vor dem Aufkommen von Agile herkömmlich als Programmierer bezeichneten Mitarbeiter.

Qualitätssicherung

Das Team der Qualitätssicherung (QS) ist dafür verantwortlich, Fehler in der Software zu finden. QS-Mitarbeiter konzentrierten sich in der Vergangenheit darauf, neuen Anwendungscode manuell zu testen, um sicherzustellen, dass er einem nicht sofort um die Ohren fliegt (Smoke-Tests), bestehende Funktionen unterbricht (Regressionstests) oder mit anderen neuen Funktionen in Konflikt gerät (Integrationstests).

Unternehmen ergänzen oder ersetzen zunehmend manuelle Tester durch einen Software Development Engineer in Test (SDET). Der SDET konzentriert sich darauf, neuen Anwendungscode vor dem Release in die Produktion zu testen. Anstatt Software jedoch manuell zu testen, schreibt er in der Regel Testautomatisierungscode.

Sicherheitstechniker

Unternehmen, in denen Sicherheits- und Compliance-Angelegenheiten nicht vollständig in ihre Planungs- und Entwicklungsprozesse integriert wurden, gibt es meist eine Person oder ein Team, die/das für die Sicherheit verantwortlich ist. Dies erweist sich oft als Nachteil, da die Sicherheit nicht von Beginn an im Zentrum steht. In diesem Fall ist es viel schwieriger, Software abzusichern, nachdem sie designt, programmiert und bereitgestellt wurde, als sie bereits mit Blick auf die Sicherheit zu entwickeln.

Rollenübergreifende Fähigkeiten


DevOps ist eine Praktik, die einen kulturellen Wandel, neue Managementprinzipien und den Einsatz von Technologietools erfordert. Der DevOps Engineer steht im Mittelpunkt einer DevOps-Transformation und muss über ein breites Spektrum an Fähigkeiten verfügen, um diesen Wandel zu ermöglichen. Doch die meisten Unternehmen benötigen mehr als nur einen DevOps Engineer: Um DevOps zu implementieren und den Lebenszyklus der Softwareentwicklung zu verbessern, ist eine Mischung aus Generalisten und Spezialisten, die eng miteinander zusammenarbeiten, erforderlich. Ein DevOps Engineer hilft dabei, Silos abzubauen, um die Zusammenarbeit zwischen verschiedenen Experten und über Toolketten hinweg zu erleichtern. Nur so lässt sich das Versprechen von DevOps vollständig in die Tat umsetzen.

Tom Hall
Tom Hall

Tom Hall ist ein DevOps-Befürworter und -Anwender, begeisterter Leser und Amateurpianist.
In den letzten 20 Jahren hat er u. a. Zertifikate von Novell, EMC, VMware und AWS erhalten. Im Jahr 2016 half er bei der Organisation der DevOpsDays in Atlanta und in den folgenden Jahren in Austin, Texas.


Diesen Artikel teilen
Nächstes Thema

Lesenswert

Füge diese Ressourcen deinen Lesezeichen hinzu, um mehr über DevOps-Teams und fortlaufende Updates zu DevOps bei Atlassian zu erfahren.

Abbildung: DevOps

DevOps-Community

Abbildung: DevOps

Simulations-Workshop

Abbildung: Karte

Kostenlos loslegen

Melde dich für unseren DevOps-Newsletter an

Thank you for signing up