Profil eines DevOps Engineer – Rollen, Fähigkeiten & Gehalt

Alles Wissenswerte rund um DevOps Engineer – Berufsbild, Qualifikationen, Aufgabenfelder und Rolle in einem Cloud-nativen Softwareentwicklungsteam

CloudUPDATED ON Juni 2, 2022

John Adam K&C head of marketing

Author

What is a DevOps engineer and their role in a software development team plus job opportunities and salaries

DevOps Engineer sind heute ein fester Bestandteil in Softwareentwicklungsteams, die Cloud-native Anwendungen erstellen. Da es sich aber bei DevOps noch um ein recht neues Mainstream-Softwareentwicklungs-Modell bzw. -Methodik handelt, herrscht immer noch Verwirrung, wenn es um die Rolle eines DevOps Engineer geht.

Im Folgenden gehen wir daher auf die häufigsten Fragen rund um die Rolle eines DevOps Engineer ein:

  • Was ist DevOps?
  • Was macht ein DevOps Engineer als Teil eines Softwareentwicklungsteams?
  • Welche Kenntnisse und Fähigkeiten haben DevOps Engineer?
  • Wie wird man zum DevOps Engineer?
  • Wie steht es um Gehalt und Berufsaussichten?

Können wir Sie bei Ihrem nächsten Entwicklungsprojekt unterstützen?

DevOps-Teams und Beratung

Was ist DevOps?

Red Hat (jetzt Teil von IBM), der weltweit führende Anbieter von Open-Source-Lösungen für Unternehmen und Spezialist für DevOps-Automation-Tools, hat DevOps wie folgt definiert:

„Das DevOps-Konzept umfasst die Aspekte Unternehmenskultur, Automatisierung und Plattformdesign und hat das Ziel, den geschäftlichen Mehrwert und die Reaktionsfähigkeit durch die schnelle Bereitstellung hochwertiger Services zu steigern. DevOps bedeutet, Legacy-Apps mit neueren Cloud-nativen Apps und Infrastrukturen zu verknüpfen.“

In der Praxis ist DevOps eine Organisationskultur, die am häufigsten, aber nicht ausschließlich als Cloud-native Softwareentwicklungs-Methodik verwendet wird. Die zentrale Säule des DevOps-Modells ist die Verschmelzung traditioneller Softwareentwicklungs- und Operations-Teams zu einer einzigen Einheit mit demselben Ziel und gemeinsamer Verantwortung.

In einem traditionellen Softwareentwicklungsprozess erstellt und testet das Entwicklungsteam eine Anwendung in einer Umgebung und übergibt sie anschließend an das Operations-Team, um die Anwendung in der Produktionsumgebung zu betreiben und zu warten. Derselbe Prozess wird mit jeder neuen Iteration der Software wiederholt.

Die Schwäche dieses Prozesses, die von der DevOps-Methodik gelöst wird, besteht darin, dass Software in verschiedenen Umgebungen nicht immer wie erwartet funktioniert. Dies gilt insbesondere für neue Iterationen, wenn beispielsweise Features aus dem Staging-Umfeld der Produktionsumgebung hinzugefügt werden. Das Hinzufügen neuer Funktionen für vorhandene Software führt häufig zu Fehlern oder Bugs in bereits vorhandenen Teilen der Software. Je komplexer die Software, desto größer ist auch das Risiko.

Die Aktualisierung von traditionellen Anwendungen, die auf einem Computer oder einem mobilen Gerät ausgeführt werden, beinhaltet eine Benachrichtigung an die Benutzer, um die neueste Version der Software herunterzuladen und zu installieren. Das bedeutet, dass die Herausgeber der jeweiligen Anwendung neue Iterationen nicht öfter als alle paar Monate freigeben.

Cloud-native Software ist hier anders. Benutzer laden keine Anwendung herunter, die auf der Hardware des Computers ausgeführt wird. Stattdessen wird die Software auf den Servern einer Cloud-Computing-Plattform ausgeführt und über einen Browser aufgerufen.

Das bedeutet, dass die Herausgeber von Cloud-nativer-Software neue Funktionen und andere Updates sowie Verbesserungen in der Live-Umgebung kontinuierlich freigeben können. Benutzer profitieren, sobald sie ihren Browser aktualisieren und Software kann durch die kontinuierlichen Updates schnell verbessert werden.

Für die kontinuierliche Freigabe muss jedoch das Entwicklungsteam sicher sein, dass die in der Entwicklungsumgebung abgeschlossenen Tests auch in der Live-Umgebung gültig sind, ohne dass es zu Fehlern oder Bugs kommt, die das Benutzererlebnis beeinträchtigen. Das bedeutet, dass die Entwicklungsumgebung mit der Produktionsumgebung identisch sein muss.

Das wiederum vermindert den ursprünglichen Unterschied zwischen Entwicklung und Operations, wobei das Endziel darin besteht, das Endprodukt sowie die Prozesse zu optimieren.

DevOps ist mit dem dominierenden agilen Entwicklungsmodell kompatibel und leitet viele seiner Eigenschaften aus dieser breit aufgestellten Methodik ab.

Was ist ein DevOps Engineer und was sind die Aufgabenfelder im Softwareentwicklungsteam?

Die Rolle eines DevOps Engineer kann zwischen Teamstrukturen und Projekten variieren, beinhaltet jedoch immer die Integration von DevOps-Prozessen, -Werkzeugen und -Methoden im gesamten Lebenszyklus. DevOps Engineer sind typischerweise für das Freigabe-Engineering, die Bereitstellung und Wartung der Infrastruktur, Systemverwaltung und Sicherheit verantwortlich.

Die Rolle legt in der Regel einen Schwerpunkt auf Automatisierung, da DevOps Engineer das CI/CD-Tooling verwalten oder automatisierte Testsuiten entwickeln und warten.

DevOps Engineer können aus der Entwicklung oder Operations kommen, was auch Einfluss auf die Rolle im jeweiligen Softwareentwicklungsteam hat.

Ein DevOps Engineer mit einem Entwicklerhintergrund kann sich durch das Erlernen von Fähigkeiten, die traditionell mit Operations verbunden werden, einen Vorteil verschaffen. Ein DevOps Engineer mit einem Operations-Hintergrund konzentriert sich normalerweise auf die Bereitstellung und Wartung von automatisierten CI/CD-Pipelines.

Der Beitrag eines DevOps Engineer zum Release-Engineering beinhaltet die Auswahl, Einrichtung und Wartung des CI/CD-Toolings oder das Schreiben und die Wartung von Build-/Deploy-Skripts.

Im Rahmen der Infrastrukturbereitstellung und Sysadmin könnte die Rolle eines DevOps Engineer Serverbereitstellung und Wartung sowie Speicher- und Netzwerkressourcen beinhalten. Die Angaben variieren je nachdem, ob die Infrastruktur vor Ort (on premise), in der Cloud oder aus einem hybriden Setup besteht.

In einer On-Premise-Umgebung liegt die Verantwortung eines DevOps Engineer in der Regel in der Bereitstellung und Wartung von physischen Servern, Speichereinrichtungen und der Virtualisierungssoftware für das Datenzentrum.

In einer Cloud- oder Hybrid-Umgebung, die eine On-Premise- und Cloud-Infrastruktur kombiniert, wird ein DevOps Engineer in der Regel virtuelle Instanzen von Komponenten bereitstellen und verwalten.

Die Rolle eines Senior-DevOps Engineer beinhaltet auch häufig die Förderung der DevOps-Kultur im Softwareentwicklungsteam, im Lebenszyklus und manchmal sogar auf organisatorischer Ebene.

K&C – WIR KREIEREN EINZIGARTIGE TECH-LÖSUNGEN SEIT ÜBER 20 JAHREN. WIR VERSCHAFFEN IHNEN IHREN WETTBEWERBSVORTEIL!

Schreiben Sie uns eine Nachricht, um Ihre individuellen Bedürfnisse oder das nächste Projekt zu besprechen.

Welche Kenntnisse und Fähigkeiten sollten DevOps Engineer mitbringen?

Da es sich bei DevOps sowohl um einen kulturellen als auch einen Softwareentwicklungs-Ansatz handelt, der von Werkzeug- und Automatisierung gestützt wird, benötigt ein DevOps Engineer eine Mischung aus Hard- (Werkzeug und Technik) und Soft-Skills (zwischenmenschlich und Management).

Das Toolkit eines DevOps Engineer

Ein DevOps-Lebenszyklus wird von einer breiten Palette von Tools unterstützt, um die Software-Lieferung zu optimieren. DevOps Engineer müssen mit einer guten Auswahl der unten aufgeführten Werkzeuge vertraut sein, jedoch wird bei der Vielzahl an Alternativen nicht erwartet, dass sie sich mit allen auskennen.

DevOps-Tools können in die folgenden Kategorien unterteilt werden:

Versionskontrolle

GitHub, Git, GitLab, Bitbucket, GitBucket, Beanstalk, Subversion, Kallithea, Mercurial, Gogs.

Continuous Integration (CI) Server

Apache Gump, Buildbot, Bamboo, CircleCI, Draco.NET, GitLab CI, Go CD, Jenkins, Travis CI, TeamCity.

Konfigurationsmanagement

SolarWinds Server Configuration Monitor, CFEngine Configuration Tool, Puppet Configuration Tool, CHEF Configuration Tool, Ansible Configuration Tool, SALTSTACK Configuration Tool, JUJU Configuration Tool, RUDDER, Bamboo Configuration Management, TeamCity Configuration Tool, Octopus Deploy.

Bereitstellungsautomatisierung

Jenkins, ElectricFlow, Visual Studio, IBM Urban Code, AWS CodeDeploy, DeployBot, Shippable, TeamCity, Bamboo, BuildBot, CircleCI, Travis CI, Gradle, GitLab, Capistrano, CodeShip, Distelli, GoCD.

Container und Container-Orchestrierung

Kubernetes, OpenShift, Nomad, Docker Swarm, Docker Compose, MiniKube, Marathon, Cloudify, Rancher, Containership, AZK, GKE, AKS, AWS EKS.

Infrastruktur-Orchestrierung

Jenkins, Vagrant, Visual Studio IDE, Apache, Docker, Chef, Puppet, Ansible, SaltStack, Monit, Snort, JIRA Software.

Überwachung und Analyse

Nagios, Zabbix, Sensu, Prometheus, SysDig, New Relic Infrastructure, AWS CloudWatch, Google StackDriver, New Relic, AppDynamics, Compuware APM, Boundary, BigPanda, PagerDuty.

Test- und Cloud-QS-Tools

Selenium, Testsigma, IBM Rational Functional Test, Tricentis Tosca, UFT, Parasoft, TestComplete, SeaLights, Watir, Your Choice.

DevOps-Programmierkenntnisse

Die meisten Jobs, nicht nur reine Entwickler-Rollen, erfordern im Lebenszyklus der Softwareentwicklung einige Programmierkenntnisse – hierbei bilden DevOps Engineer keine Ausnahme (Projekt- und Produktmanager bilden eine Ausnahme, aber selbst hier können Programmierkenntnisse von Vorteil sein).

DevOps Engineer haben spezielle Aufgabenfelder, die Coding beinhalten, jedoch sind DevOps Engineer in der Regel keine Spezialisten in einer bestimmten Sprache oder einem Framework. Sie sollten stattdessen gute Kenntnisse in mehreren Sprachen mitbringen, wie beispielsweise Python, Rubin, PHP, Bash und Javascript. DevOps Engineer müssen oft in diesen Sprachen und in OS-Umgebungen schreiben und debuggen.

Ein DevOps Engineer entwickelt nicht den Hauptcode eines Softwareprodukts, muss aber über Coding-Fähigkeiten verfügen, um stabile, automatisierte Pipelines zu orchestrieren oder Werkzeuge zu erstellen oder anzupassen, die unterschiedliche Stufen der Pipeline automatisieren. Hierbei geht es vornehmlich um Prozess-Optimierung für das gesamte Softwareentwicklungsteam.

Testautomatisierung beinhaltet das Schreiben von Codes in verschiedenen Sprachen und sollte in den von den Entwicklern und anderen Teammitgliedern geschriebenen Codes integriert werden, die oft in unterschiedlichen Umgebungen erstellt werden.

Infrastruktur als Code

Infrastruktur als Code (IaC) ist häufig ein Kernbestandteil des DevOps-Softwareentwicklungsprozesses. Somit sollte ein DevOps Engineer ein fundiertes Wissen über IaC-Technologien wie Terraform mitbringen oder zumindest über die nötigen Kenntnisse verfügen, was eine wirksame Zusammenarbeit mit anderen DevOps-Spezialisten mit fortgeschrittenem Fachwissen ermöglicht.

So wird man DevOps Engineer

Wenn Sie an einer Karriere als DevOps Engineer interessiert sind, wie würden Sie die notwendigen Qualifikationen, Fähigkeiten und Kenntnisse erlangen?

Da DevOps Engineer fast immer eine leitende Funktion haben, sind reichhaltige Erfahrungen in Softwareentwicklungsteams erforderlich. Die meisten DevOps Engineer waren zuvor Entwickler, QAs oder in einer Operations-Rolle.

Wie in jeder anderen IT-Rolle auch, kann ein Informatikstudium mit einem Fokus auf Softwareentwicklung von Vorteil sein. In einem Umfeld, in dem sich eine große Anzahl von Entwicklern ihre Kenntnisse selbst angeeignet haben, ist ein Studium jedoch kein Muss.

Dennoch bleibt festzuhalten, dass ein Universitätsabschluss immer noch ein direkter Weg in die Industrie ist. Jedoch können auch andere Erfahrungen in der Softwareentwicklung die Tür zu DevOps öffnen.

Ein zielstrebiger Junior-Manual-Tester könnte beispielsweise die nötige Berufserfahrung, Schulungen und Qualifikationen erlangen, um anschließend eine leitende Test- oder QS-Rolle zu besetzen, die zum DevOps Engineer führt.

Insbesondere sollten Sie Kenntnisse über Cloud-Computing-Umgebungen und -Technologien wie die großen Cloud-Plattformen AWS, Microsoft Azure oder die Google Cloud Platform mitbringen sowie einige der oben aufgeführten relevanten Tools, Programmiersprachen und Frameworks kennen.

Jobs für DevOps Engineer – die Nachfrage steigt weiter an

Wie bei fast jeder Rolle in der IT- und Softwareentwicklung besteht ein Defizit an erfahrenen DevOps Engineer, sodass Stellenangebote, sowohl im Büro als auch immer mehr im Home-Office, reichlich vorhanden sind.

Im CodinGames Jahresbericht 2021 über die am meistgesuchten Rollen für Softwareentwicklungsteams steht der DevOps-Engineer an erster Stelle, noch vor Backend- und Full-Stack-Entwicklern. Das australische Job-Portal Seek.com sagt einen weiteren Anstieg der Nachfrage von 30% in den nächsten 5 Jahren voraus.

Wie viel verdient ein DevOps Engineer?

Laut Seek.com liegt das durchschnittliche Gehalt eines DevOps Engineer bei 130.000 Australischen Dollar, was 96.870 US-Dollar oder 82.500 Euro entspricht.

Glassdoor schätzt das durchschnittliche DevOps-Engineer-Gehalt für München auf rund 65.000 Euro, einschließlich 4.500 Euro Barabfindungen zusätzlich zum Grundgehalt. Das untere Ende beträgt hierbei 50.000 Euro, während Besserverdiener sogar auf 85.000 Euro kommen.

In der Ukraine, einem beliebtem IT-Outsourcing-Ziel, schätzt Glassdoor das durchschnittliche DevOps-Ingenieurgehalt auf 2.500 US-Dollar für Junior-Positionen und auf 4.000 bis 5.000 US-Dollar für Senior-Positionen.

Ein extrem umkämpfter Markt für IT-Spezialisten im Jahr 2021, insbesondere für Cloud-native und DevOps-Rollen bedeutet, dass das Gehaltsniveau  vor allem für Senior-Positionen ansteigen wird und die hier genannten Zahlen bereits niedriger sein können als die derzeitige Marktrealität.

Wann gelingt IT Outsourcing?

(und wann nicht?)