NicoElNino - stock.adobe.com
10 Fähigkeiten eines DevOps-Ingenieurs für Ihren Lebenslauf
DevOps spielt in der IT eine wichtige Rolle. Da sich die Praktiken der App-Entwicklung und -Bereitstellung ändern, suchen Unternehmen nach ITlern mit Erfahrung und Fähigkeiten.
Der DevOps-Ingenieur entwickelt sich schnell zu einer wichtigen Rolle für führende Unternehmen. Da es keinen klaren Aufstiegspfad zu dieser Position gibt, müssen IT-Abteilungen bei Neueinstellungen oder erfahrenen Mitarbeitern die richtige Kombination von DevOps-Ingenieurfähigkeiten ermitteln.
Eine Karriere als DevOps-Ingenieur könnte für Sie interessant sein, wenn Sie sowohl über technische Fähigkeiten in verschiedenen Plattformen als auch über Soft Skills wie effektive und zeitnahe Kommunikation verfügen.
In einer DevOps-Umgebung wird jemand mit spezifischen Fähigkeiten benötigt – einschließlich eines ganzheitlichen Wissens über Zusammenarbeit und Geschäftspraktiken – um traditionelle Silos zu beseitigen, Best Practices in sich schnell entwickelnde Softwareprojekte aufrechtzuerhalten und voranzutreiben und die besten Geschäftsergebnisse für die Produkte des Unternehmens zu erzielen. Das hat zum Berufsbild des DevOps-Ingenieur geführt.
Die Rolle des DevOps-Ingenieurs heute
Die aktuellen Stellenausschreibungen für DevOps-Ingenieure umfassen eine Vielzahl von Aufgaben in den Kompetenzbereichen Entwicklung, Infrastruktur, Projektmanagement und Business.
Zu den Entwicklerfähigkeiten gehören das Verstehen von Projektanforderungen, das Schreiben, Überprüfen und Validieren von Code, das Beheben von Fehlern, die Verwaltung von CI/CD-Tools und Pipelines, die Durchführung von Ursachenanalysen, die Fehlerbehebung und das Störungsmanagement. Zu den Fähigkeiten im Bereich Infrastruktur gehören die Implementierung von Tools und Infrastruktur, die Entwicklung automatisierter Prozesse und die Entwicklung von Sicherheitsmaßnahmen durch Schwachstellenanalyse und Risikomanagementverfahren.
Zu den Projektmanagementfähigkeiten gehören die Planung von Teamstrukturen und -aktivitäten, die Definition von Prozessen, die Überwachung von Benutzererfahrungsmetriken und KPIs sowie die Überwachung von Projektlebenszyklen. Zu den betriebswirtschaftlichen Fähigkeiten gehören die Verwaltung interner und externer Interessengruppen, die Kommunikation mit dem Team und den Kunden, die Betreuung von Teammitgliedern und die Verwaltung von Fortschrittsberichten.
Die Ausbildung und Erfahrung
Derzeit gibt es keinen formalen Weg für einen DevOps-Ingenieur. In Stellenausschreibungen für DevOps-Ingenieure wird zwar manchmal eine bestimmte Ausbildung verlangt, aber der Schlüssel sind immer praktische Kenntnisse und praktische Erfahrungen. In einer Stellenausschreibung werden beispielsweise mehr als neun Jahre Gesamterfahrung mit fünf bis sechs Jahren einschlägiger Berufserfahrung verlangt. In einer anderen Stellenausschreibung werden ein Bachelor-Abschluss in einer beliebigen technischen Disziplin sowie drei Jahre Berufserfahrung gefordert.
In Anbetracht der hohen Anforderungen an einen DevOps-Ingenieur ist es sinnvoll, dass angewandtes Wissen und einschlägige Erfahrung eher ein entscheidender Faktor sind als eine formale Ausbildung. Folglich wachsen DevOps-Ingenieure oft mit praktischer Erfahrung in diese Rolle hinein. Sie beginnen in der Regel als IT-Profis mit einem starken Interesse an der Programmierung oder als Entwickler, die sich mit dem Testen und der Bereitstellung von Code beschäftigen.
10 Fähigkeiten eines DevOps-Ingenieurs, die den Lebenslauf aufwerten
Die Liste der erforderlichen Fähigkeiten eines DevOps-Ingenieurs ist lang und es sind noch mehr erforderlich, um diese Rolle zu meistern. Auch wenn die spezifischen Anforderungen von Unternehmen zu Unternehmen variieren, finden Sie hier zehn allgemeine Fähigkeiten, die Arbeitgeber bei DevOps-Ingenieuren suchen – von hochtechnischen Fähigkeiten bis hin zu sozialen Kompetenzen.
1. Vertrautheit mit Plattformen
Die IT basiert in der Regel auf der Idee eines Stacks, das heißt einer Kombination aus den vorherrschenden Betriebssystemen, Diensten und zugehörigen Tools zur Entwicklung, Bereitstellung und Unterstützung von Anwendungen. Häufig gibt es Überschneidungen oder Querverbindungen zwischen den Stacks. Erfahrene DevOps-Ingenieure verfügen über fundierte Kenntnisse in der Verwaltung des Stacks, den das Unternehmen derzeit verwendet oder zu verwenden plant. Drei wichtige Plattformen sind Microsoft Windows Server, Linux-Server-Distributionen und eine Cloud-Struktur.
Der Microsoft Stack umfasst in der Regel Betriebssysteme wie Windows Server 2019 und Windows Server 2022, Verwaltungsplattformen wie System Center und seine verschiedenen Iterationen, einschließlich Operations Manager für die Überwachung und Benachrichtigung auf System- und Dienstebene, sowie unterstützende Anwendungen wie MySQL, PostgreSQL oder Mongo für eine Datenbank oder SharePoint und Teams für die Zusammenarbeit. Darüber hinaus gibt es Tools zum Entwickeln, Testen und Bereitstellen von Code sowie zum Konfigurieren und Verwalten der bestehenden Infrastruktur, die als Host für Bereitstellungen dient.
Ein Linux Stack basiert auf dem Open-Source-Betriebssystem-Kernel und kann mehrere gängige Linux-Distributionen wie Ubuntu, Debian und Fedora umfassen. Er umfasst auch viele andere Open-Source-Tools wie Ansible, Chef und Puppet sowie Open Source Frameworks – OpenStack, OpenNebula und Apache CloudStack – die die Erstellung einer Private Cloud unterstützen. Gute Kenntnisse von VM-Plattformen wie VMware vSphere oder Linux KVM sowie von Container-Plattformen wie Docker, OpenVZ und Cloud Foundry sind ebenfalls unerlässlich. Open Source Stacks haben in den letzten Jahren an Aufmerksamkeit gewonnen, da die Zahl der VMs und Container immer weiter zunimmt.
Zu den Public-Cloud-Optionen gehören Microsoft Azure, sowie Google Compute Platform und AWS,. Die Entscheidung für eine Public- oder Hybrid-Cloud-Infrastruktur erfordert Kenntnisse über die gewählten Cloud-Dienste, die Verwaltungsoptionen und die Kostenstruktur.
2. Programmier- und Skriptsprachen
Bei DevOps-Praktiken geht es darum, Code schnell durch die Entwicklung und in die Produktion zu bringen. Während das Schreiben von Low-Level-Code in der Regel den Entwicklungsteams überlassen wird, müssen DevOps-Ingenieure den Quellcode verstehen, Skripte entwickeln und sich mit Integrationen befassen, beispielsweise damit die Codeversion mit der MySQL-Datenbank kommunizieren kann, um Implementierungen auf der Betriebsseite durchzuführen. DevOps-Ingenieure sollten über Kenntnisse in PHP, Python, Perl, Ruby und anderen Programmiersprachen wie Java und C++ verfügen. DevOps-Ingenieure profitieren auch von Kenntnissen in Tools zur Verwaltung der kontinuierlichen Integration wie Jenkins, Apache Maven und Apache Ant.
3. Konfigurationsmanagement, Versionsmanagement und Infrastructure as Code
Geschwindigkeit und Dynamik sind die Markenzeichen von DevOps. Der Code ändert sich ständig. Um die sich ständig ändernden Benutzeranforderungen zu bewerten, die richtigen Komponenten zusammenzustellen und eine Softwareversion zu erstellen, die in der gewünschten Infrastruktur – ob lokal oder in der Cloud – ordnungsgemäß ausgeführt werden kann, sind solide Fähigkeiten in den Bereichen Zusammenarbeit und Versionsmanagement erforderlich.
DevOps-Ingenieure arbeiten mit Tools wie Git, GitHub, Perforce und Apache Subversion zur Repository-Steuerung. Um den sich ständig ändernden Code besser bereitstellen zu können, setzen viele DevOps-Ingenieure auf ein Konfigurationsmanagement, das fast immer automatisiert ist, um das Tempo der Versionsfreigabe zu beschleunigen. Tools wie Puppet, Chef und Vagrant bieten diese Funktionen, ebenso wie die nativen Tools der Cloud-Anbieter, wie AWS CodePipeline oder CodeDeploy. Sie nutzen auch Infrastructure as Code (IaC), um programmatisch Infrastruktur aus Code wie Skripten zu erstellen. Zu den typischen Tools für IaC gehören AWS CloudFormation, Ansible, Chef Software, Puppet, SaltStack und Terraform.
4. Provisionierung und Bereitstellung
DevOps-Ingenieure leiten nicht nur den Code durch die Entwicklung. Sie bilden auch die Brücke, die erforderlich ist, um diese Veröffentlichungen auf der Betriebsseite zu erleichtern. Das bedeutet, dass sie über Kenntnisse im Bereich der IT-Hardware und -Infrastruktur verfügen müssen, von Servern und Storage bis hin zu Netzwerken und Betriebssystemen.
Da DevOps-Ingenieure den gesamten IT-Stack kennen, können sie die Bereitstellung und den Einsatz jeder Version im lokalen Rechenzentrum oder in der Public Cloud. Dieses Know-how erstreckt sich in der Regel auch auf die Erstellung und Wartung zuverlässiger und hochverfügbarer Dienste, wie zum Beispiel belastbare Cloud-Infrastrukturen.
Der Bedarf an Fähigkeiten auf der Betriebsseite nimmt zu. Bei DevOps haben die Projektteams Autonomie bei der Entwicklung und Bereitstellung von Geschäftsanwendungen. Da sich die Bereitstellungsziele weiterentwickeln und sich auf Dinge wie hybride und Multi-Cloud-Umgebungen ausweisen, müssen DevOps-Fähigkeiten diese zusätzlichen Umgebungen in ihr Bereitstellungsportfolio aufnehmen. Da DevOps für die Bereitstellung eines großen Teils der Anwendungen verantwortlich ist, besteht auch ein größerer Bedarf, diese Anwendungen im Laufe der Zeit zu überwachen und zu verwalten.
5. Sicherheit
DevOps-Ingenieure spielen eine immer wichtigere Rolle bei der Unternehmenssicherheit, sowohl bei der Entwicklung als auch beim Betrieb. Auf der Entwicklungsseite müssen DevOps-Teams sicheren Code erstellen, potenzielle Sicherheitsrisiken in Open-Source-Software im Auge behalten, Schwachstellentests in der CI/CD-Pipeline durchführen und vieles mehr. Auf der Betriebsseite muss ein DevOps-Ingenieur Sicherheitspraktiken wie die Verschlüsselung von Daten implementieren, die sich sowohl im Ruhezustand als auch während des Betriebs befinden können. Diese Verantwortung überschneidet sich zunehmend mit formelleren Sicherheitsaufgaben, wie der Verwaltung von Antimalware- oder Intrusion-Protection-Plattformen.
6. Verfolgung und Bewertung der Release-Leistung
Ein DevOps-Ingenieur ist der ultimative Berater – jemand, der die Leistung von Programmversionen objektiv bewerten, erforderliche Anpassungen an bereitgestellten Ressourcen und Plattformen vornehmen und verschiedene Tools zur Messung der Workload-Leistung verwenden kann. Darüber hinaus müssen DevOps-Ingenieure Log-Ergebnisse analysieren, relevante Leistungsindikatoren ableiten und diese Inhalte dann mit dem gesamten Personal und den Projektbeteiligten teilen, um zukünftige Software-Iterationen zu verbessern. Tools wie Nagios, Zabbix, Sensu, Amazon CloudWatch, Splunk und New Relic können die Anwendungsleistung lokal und auf Public-Cloud-Plattformen überwachen. Andere Tools und Plattformen sind Datadog, AppDynamcis, Stackify, SolarWinds und Dynatrace.
Das Leistungsmanagement kann sich auch auf die Problemverfolgung und den Helpdesk-Support erstrecken, um Tickets zu priorisieren und komplexe Probleme zu untersuchen. Angesichts der zunehmenden Big Data Analytics und KI könnte das Performance-Management zunehmend Analytik- und KI-Tools einsetzen, um komplexe Anwendungsprobleme zu identifizieren, prädiktive Analysen durchzuführen und zukünftige Trends im Anwendungsverhalten zu erkennen. DevOps-Teams können sich dafür entscheiden, mit Data-Science- und Analyseteams zusammenzuarbeiten, um solche Bemühungen zu unterstützen, anstatt zu versuchen, diese zusätzlichen Big-Data-Fähigkeiten als DevOps-Funktion zu beherrschen.
7. Netzwerkoptimierung
Moderne Unternehmens-Workloads sind auf Netzwerkressourcen und Sicherheit angewiesen. Fast alle Unternehmens-Workloads verwenden eine netzwerkorientierte Client/Server-Architektur. Aber auch auf Webportale und andere Anwendungen wird über ein Netzwerk zugegriffen. Das macht Netzwerke zu einem zentralen Bestandteil jedes DevOps-Workload-Bereitstellungs- und -Verwaltungsprozesses.
Folglich sollten DevOps-Ingenieure über umfassende Kenntnisse der Netzwerkarchitekturen und -schnittstellen sowie über die Anforderungen an die Bandbreite und Latenz von Workloads verfügen. Zu den Netzwerkkenntnissen gehört auch eine starke Betonung der Sicherheit, einschließlich des Einsatzes und der Verwaltung von VPNs und der Verwendung von Software-definierten Netzwerken für Container-zentrierte Aufgaben, wie zum Beispiel Mikrosegmentierung zur Implementierung logischer Subnetze und Netzwerkorganisation.
8. Troubleshooting
DevOps-Ingenieure sind routinemäßig in den täglichen Betrieb eingebunden. Von diesen hochrangigen Fachleuten wird in der Regel erwartet, dass sie dem Helpdesk und anderen Mitarbeitern umfangreiche Unterstützung bei der Problemlösung bieten, insbesondere im Zusammenhang mit bestimmten DevOps-Workloads in der Bereitstellungs-Pipeline. Das kann Remote-Bereitstellungs- und -Supportaufgaben umfassen, wie beispielsweise die Bereitstellung, Verwaltung und Fehlerbehebung von Workloads, die an entfernten oder gehosteten Standorten ausgeführt werden. Die Fehlerbehebung kann sich auch auf traditionellere Teile der Unternehmensinfrastruktur erstrecken, wie die Behebung von Server-, Storage- und Netzwerkproblemen.
9. Integration
Bei Aufbau moderner Softwareplattformen geht es manchmal mehr um die Integration verschiedener Plattformen und Dienste als um das Schreiben von Low-Level-Code. Zum Beispiel erstellt heute niemand mehr Messaging- oder Datenbankfunktionen. Der Code wird in bestehende Plattformen wie Microsoft Exchange, Redis, Datenbanksysteme oder zahllose andere Drittanbieter- oder Open-Source-Geschäftsanwendungen integriert, die gemeinsame APIs verwenden.
Diese Plattformen sind in der Regel Teil des Unternehmens-Stacks, aber DevOps-Ingenieure sollten wissen, wie man sie nutzt. Wenn das Unternehmen beispielsweise ein Softwareprodukt mit einem SQL-Backend verknüpft, sollte ein DevOps-Ingenieur über die Fähigkeit verfügen, die Datenbank einzurichten und komplexe SQL-Abfragen durchzuführen. Das Ziel von DevOps-Ingenieuren ist es, eine ganzheitliche Sicht auf Ressourcen und Dienste zu schaffen und dafür zu sorgen, dass diese Assets erfolgreich zusammenarbeiten. Das kann in komplexen modernen Unternehmensumgebungen ein besonders schwieriges Ziel sein.
10. Kommunikation und Teammanagement
Die Fähigkeiten eines DevOps-Ingenieurs sind nicht nur technischer Natur. Jemand in dieser Rolle muss ein erfahrener Kommunikator und fähige Führungskraft sein – jemand, der verschiedene Fachleute auf produktive Weise zusammenbringen kann, um eine schnelle kontinuierliche Entwicklung zu gewährleisten, die die besten Geschäftsergebnisse erzielt.
Da so viele Menschen und konkurrierende Interessen in den DevOps-Prozess involviert sind, gibt es unzählige technische und fachliche Probleme, die im Laufe der Zeit unweigerlich auftreten werden. Dazu gehören zwischenmenschliche Konflikte, wechselnde Rollen und Zuständigkeiten innerhalb der Organisation und fehlerhafte Geschäftsprozesse. Ein DevOps-Ingenieur muss diese Situation einschätzen und nach konstruktiven Lösungen suchen, mit denen die Ziele erreicht und die Beteiligten zufrieden gestellt werden können. Wenn beispielsweise ein Release-Zyklus durch ineffiziente manuelle Schritte verzögert wird, kann ein DevOps-Ingenieur einen technischen und geschäftlichen Grund für eine Investition in die Automatisierung liefern.