Im Projekt bin ich eingesetzt als DevOps-Engineer. In den vergangenen Jahren wurde die Umstellung der Anwendung und der Infrastruktur komplett auf Containertechnologien auf Basis von Kubernetes durchgeführt. Dazu wurde ein entsprechender Kubernetes-Cluster von uns erstellt. Die bisher auf virtualisierten Systemen betriebenen Testsysteme sind nun komplett über Helm und K8s in eine containerisierte Landschaft überführt worden. Zur Umsetzung wurde nicht Docker, sonder der komplette RedHat-Stack aus BuildAH, Skopeo und Podman eingesetzt. Über Helm wurde auch eine entsprechende Schnittstelle für die Entwickler und Tester zum Zugriff auf den K8s-Cluster und die dort laufenden Systeme geschaffen. Zur Realisierung von CI-/CD-Pipelines kommt Tekton und Tekton Triggers zum Einsatz. Unterstützende Software in diesem Bereich wird von mir in der Sprache Go entwickelt.
Aktuell findet die Überführung der Systeme von unserem selbst betriebene Kubernetes-Cluster in eine gehostete Openshift-Umgebung statt.
Das Projekt dauert aktuell noch an.
Meine Tätigkeit im Projekt bestand überwiegend in der Weiterentwicklung bestehender Deploymentprozesse auf der Basis von Ansible. Bestandteil der Deployments waren alle Systeme, von der Entwicklung bis zur Produktion. Über entsprechende Ansible-Playbooks waren hier die unterschiedlichen Szenarien realisiert.
Die Server der Anwendung für die Entwicklung wurden per Vagrant als virtuelle Systeme bereit gestellt. Hierzu gehörten Webserver, Applikationsserver und Datenbanken, jeweils redundant als Hochverfügbarkeitslösung. Die Pflege und Weiterentwicklung der Vagrant-Infrastruktur (Skript,
Boxes) war auch Bestandteil meiner Tätigkeit.
Im Bereich des Monitorings von Systemen war eine meiner Aufgaben die Konfiguration des Überwachungswerkzeuges Centreon (Nagios). Über entsprechende Templatemechanismen für Hosts und Services wurden für die Server der Anwendung das Monitoring realisiert. Weiterhin wurde von mir eine angepasste Variante eines NRPE-HTTP-Plugins in Python entwickelt.
Eine der Hauptaufgaben im Projekt bestand in der Bereitstellung der notwendigen Infrastruktur für Continuous Integration für unterschiedliche Entwicklungsteams. Dabei war mein
Verantwortungsbereich die Installation und Administration von Jira, Hudson und SonarQube. Jira und Hudson waren per SSO an das vorhandene Active Directory angebunden. Die Anbindung wurde über in Java implementierte Plugins realisiert. Die Entwicklung und Pflege dieser Plugins gehörte dabei ebenfalls zu meinen Aufgaben.
Um den vielen unterschiedlichen Anforderungen der Entwicklerteams innerhalb des Systemhauses gerecht zu werden, mussten sehr viele administrative und konfigurative Probleme gelöst werden. Dies betraf hauptsächlich Jira, wo z.B. die Konfiguration von Workflows oder Schemata für Felder
und Bildschirmmasken zum Tagesgeschäft gehörten. Weiterhin war eine permanente Unterstützung der Teams notwendig in der Einrichtung und Konfiguration von Hudson-Jobs, beim Deployment der Artefakte zum Nexus-Server oder in der Konfiguration der Darstellung der Code-Metriken in SonarQube.
Die Linux-Systeme (SLES), die zur Bereitstellung der Infrastruktur genutzt wurden, wurden über Ansible konfiguriert. Die initiale Einführung von Ansible sowie die weitere Entwicklung wurden von mir durchgeführt.
Um einen einheitlichen Build-Prozess für künftige Projekte einzuführen, bestand eine weitere Hauptaufgabe für mich darin, ein Java-API zu entwickeln, das in der Lage war, auf alle Maven-
Projekte innerhalb eines Teams Aktionen auszuführen. So war es mit dem API möglich, zum Beispiel Tags oder Branches mit einem einzigen Kommando über alle Maven-Projekte zu erstellen. Das API war dazu in der Lage, mit unterscheidlichen SCM-Systemen (Git, Subversion) umzugehen. Um einen
einfachen Zugriff auf das Java-API zu erhalten, war die Entwicklung eines Maven-Plugins, das einen abstrakteren Zugriff auf das API ermöglichte, ebenfalls Bestandteil des Projektes.
Die vom Kunden entwickelte Softwarelösung beinhaltete mehrere Webshops, die über verschiedeneSchnittstellen an Backendsysteme (Datenbanken, Administrationswerkzeuge, Data Mining, etc.) sowie an externe Systeme (Banken, Schufa) angeschlossen waren. Das Gesamtprodukt bestand aus
mehr als 30 einzelnen Komponenten. In regelmäßigen Abständen mussten im Rahmen von Aktualisierungen Teile der Komponenten in neuen Versionen auf die Systeme gespielt werden. Ebenso mussten Datenbankaktualisierungen automatisch ausgeführt werden. Hierzu war ein koordiniertes Vorgehen notwendig, im den Abhängigkeiten der Komponenten untereinander ausreichend Rechnung zu tragen. Meine Hauptaufgabe im Projekt bestand in der kompletten Neuimplementierung dieses Werkzeuges, das die Prozesse des Deployments und Updates weitestgehend automatisiert. Hierzu
wurde, nach hinreichender Analyse und Design, ein Ansatz gewählt, der auch die spätere automatische Ausführung mittels Hudson und Jenkins gestattete. Die Implementierung erfolgte in
Java. Das System (Komponenten, Anwendungen und deren Versionen, Server, Schnittstellen) wurde hierzu komplett in einem XML-Modell abgebildet, das jeweils eine komplette Umgebung für den Betrieb beschrieb. Durch diesen Ansatz konnten sowohl Entwickler- und Testsysteme als auch das Produktivsystem selbst abgebildet werden. Neben diesem geschilderten größten Teilaspekt des gesamten Projektes wurden von mir noch
folgende Systeme etabliert, bzw. es erfolgte eine Mitarbeit bei der Etablierung:
Neben der beschriebenen Tätigkeiten gehörte zu meinen Aufgaben auch die Mitarbeit im Tagesgeschäft, wie Fehleranalyse auf Testsystemen, Bereitstellung und Wartung der CI-Systeme sowie Unterstützung von QA und Entwicklung in verschiedenen Bereichen.
Die aus ca. 120 Modulen bestehende Software (2 Produkte) wird permanent im Rahmen vonContinuous Integration automatisch gebaut und bezüglich der definierten Qualitätskriterien überwacht. Hierfür existiert eine umfangreiche virtuelle Serverfarm (VMWare ESX), mit deren Hilfe die einzelnen Codelinien verwaltet, gebaut und installiert werden. Ebenfalls wird in diesem Rahmen die Abarbeitung automatischer Webservice-Tests durchgeführt.
Die Haupttätigkeit bestand darin, die dazu notwendige Infrastruktur (sowohl Soft- als auch Hardware) permanent zu überwachen, zu verbessern und an neue Gegebenheiten (Module, Unit- Tests, Branches, Deployment-Szenarien, etc.) anzupassen. Die Build- und Deployserver werden
ausschliesslich unter Linux betrieben. Die Wartung und Aktualisierung der Systeme geschieht zum überwiegenden Teil automatisch durch Cfengine sowie über eigens entwickelten Werkzeuge – in der Hauptsache Maven-Plugins – die, gesteuerte über eine zentrale Konfiguration, die Aktualisierung
der Systeme durchführen. Die Überwachung der Server erfolgt durch Nagios.
Neben dem täglichen Betrieb wurde die Migration eines Produktes (ca. 66 Module) von Maven 1 auf Maven 2 durchgeführt. Hierzu wurden alle bestehenden Funktionalitäten, wie Ausführen von SQLSkripts im Rahmen der Unit-Test oder Erstellen von Multiartefakten, die bisher mit Maven 1, Jelly
und ggf. weiteren Hilfswerkzeugen durchgeführt wurden, komplett mit Standard-Maven 2- Funktionalitäten sowie durch die Neuentwicklung von Maven 2-Plugins nachgebildet. Weiterhin
wurde das Erstellen des Assemblies (WAR-Datei, bestehend aus allen Modulen) ebenfalls auf Maven 2-Technologien umgestellt. Im Rahmen der Migration wurde ebenfalls evaluiert, welche
Schritte notwendig wären, eine spätere Migration auf Maven 3 durchzuführen.
Ebenso gehörte die Unterstützung der Entwickler und Architekten bzgl. Entwicklungswerkzeugen (Maven, Ant, Subversion) und Entwicklungsumgebungen (Eclipse, Eclipse-Plugins) zum täglichen Aufgabenbereich.
Zum Betrieb der fachlichen Geschäftsabwicklung waren im Projekt eine große Menge an Softwaresystemen (> 25) vorhanden, die über eine serviceorientierte Architektur verbunden waren. Diese SOA wurde technisch mit Seebeyond, eInsight und MQ-Series, teilweise auch mit Java CAPS,
realisiert. Die Hauptaufgabe des Projektes bestand darin, das Deployment für Seebeyond und eInsight durchzuführen; dies sowohl für Test-, Integrations- und Produktivsysteme. Die Zulieferung der Softwareversionen erfolgte durch externe Dienstleister. Vor dem Deployment der Software erfolgte das Konfigurationsmanagement, das sicherstellte, dass alle Lieferungen und Release- Stände reproduzierbar verwaltet wurden. Für diese Aufgabe wurde SynergyCM eingesetzt.
Im Kontext des Deployments waren oft Shellprogrammierungen mit der ksh und der bash notwendig. Dabei wurden in der Regel Skripte erstellt oder verbessert, die der Automatisierung des
Deployments oder der Unterstützung bei der Fehlersuche dienten. Im Rahmen kleinerer Projekte wurden, neben dem Deployment, durch mich die Wartung und Erweiterung bestehender J2EEAnwendungen durchgeführt.
Im Rahmen des Tagesgeschäftes waren für die Entwicklerteams der Software-Produktionsumgebung beim Kunden entsprechende Systeme zur Verfügung zu stellen. Dies waren insbesondere Jira, Hudson und SonarQube. Über eine vorhandene behördeninterne technische Schnittstelle wurden die Systeme Jira und SonarQube über eigene Plugins per SSO an Active Directory angebunden. So wurde es ermöglicht, den Login mit den schon vorhandenen Benutzerdaten zu realisieren. Weiterhin erfolgte eine Anbindung von SonarQube an JDeveloper (Oracle) um die dort erzeugten Metriken in SonarQube zur Verfügung zu stellen. Dies wurde ebenfalls per Plugin implementiert.
Die erwähnten Plugins wurden alle in Java implementiert und waren Bestandteil einer Softwareplattform, die von mir ständig weiter entwickelt und gepflegt wurde. Die Durchführung von Releases und die Bereitstellung versionierter Artefakte gehörten ebenfalls zum Aufgabenbereich.
Um individuellen Anforderungen einzelner Teams zu entsprechen, waren auch umfangreiche administrative und konfigurative Tätigkeiten erforderlich. Hier insbesondere im Bereich Jira, wo oft Anpassungen im Bereich der Abläufe, Bildschirmmasken und Felder notwendig waren.
Im Bereich Continuous Integration war die Unterstützung der Projekte beim Einrichten und Pflegen von Build-Jobs zum Bauen der Softwareartefakte auch regelmäßiger Bestandteil meiner Tätigkeit. Hier insbesondere auch die Konfiguration von Maven- und Ant-Projekten zur Generierung der notwendigen Codemetriken für SonarQube.
Die in unserer Abteilung eingesetzten Linux-Server, sowie die darauf laufenden Systeme (Jira, etc.) wurden im Rahmen des Konfigurationsmanagements per Ansible gepflegt. Die initiale Einführung von Ansible und die weitere Pflege der Konfigurationen wurden von mir durchgeführt.
Die vom Kunden entwickelte Softwarelösung beinhaltete mehrere Webshops, die über verschiedene Schnittstellen an Backendsysteme (Datenbanken, Administrationswerkzeuge, Data Mining, etc.) sowie an externe Systeme (Banken, Schufa) angeschlossen waren. Das Gesamtprodukt bestand aus mehr als 30 einzelnen Komponenten. In regelmäßigen Abständen mussten im Rahmen von Aktualisierungen Teile der Komponenten in neuen Versionen auf die Systeme gespielt werden. Ebenso mussten Datenbankaktualisierungen automatisch ausgeführt werden. Hierzu war ein koordiniertes Vorgehen notwendig, um den Abhängigkeiten der Komponenten untereinander ausreichend Rechnung zu tragen.
Meine Hauptaufgabe im Projekt bestand in der kompletten Neuimplementierung dieses Werkzeuges, das die Prozesse des Deployments und Updates weitestgehend automatisiert. Hierzu wurde, nach hinreichender Analyse und Design, ein Ansatz gewählt, der auch die spätere automatische Ausführung mittels Hudson und Jenkins gestattete. Die Implementierung erfolgte in Java. Das System (Komponenten, Anwendungen und deren Versionen, Server, Schnittstellen) wurde hierzu komplett in einem XML-Modell abgebildet, das jeweils eine komplette Umgebung für den Betrieb beschrieb. Durch diesen Ansatz konnten sowohl Entwickler- und Testsysteme als auch das Produktivsystem selbst abgebildet werden.
Neben diesem geschilderten größten Teilaspekt des gesamten Projektes wurden von mir noch folgende Systeme etabliert, bzw. es erfolgte eine Mitarbeit bei der Etablierung:
Einrichtung der gesamten Infrastruktur für das Konfigurationsmanagement basierend auf Puppet. Hierüber wurde die Neueinrichtung und Wartung aller Test-, QA- und CI-Hardware respektive Virtualisierung realisiert.
Einrichtung der komplette Überwachung der Test-, QA- und CI-Infrastruktur mittels Icinga.
Mitarbeit bei der Einrichtung eines Hochverfügbarkeistclusters. Über den Cluster wurden die Repositories für Maven und Subversion bereit gestellt. (RHEL 6, Linux HA)
Erstellen eines Archivierungsservices der es erlaubt, ein bestehendes Maven-Repository bzgl. seiner Artefakte und den Programmversionen, die diese Artefakte verwenden, zu analysieren und nicht mehr benötigte Artefakte zu archivieren. (Java, Maven-Plugin)
Implementierung eines Werkzeugs zur automatischen Erstellung und Änderung von CI-Jobs auf Jenkins und Hudson. Die Jobkonfiguration wurde dabei mittels Velocity-Templates bereit gehalten, durch entsprechende Variablenersetzung angepasst und per HTTP auf die CI-Systeme ausgerollt. (Java, Velocity, Maven-Plugin)
Implementierung verschiedener weiterer Werkzeuge zur Automatisierung unterschiedlicher Aufgaben im Bereich des Tagesgeschäfts mit Java.
Neben der beschriebenen Tätigkeiten gehörte zu meinen Aufgaben auch die Mitarbeit im Tagesgeschäft, wie Fehleranalyse auf Testsystemen, Bereitstellung und Wartung der CI-Systeme sowie Unterstützung von QA und Entwicklung in verschiedenen Bereichen.
C, Java, JNI, JDBC, JSP, Debian Linux, vim, make
Java 2 Standard Edition V. 1.3, Oracle-SQL, Servlets, Applets,
Refaktorisierung, Entwicklungsmuster der OOP, Apache Webserver,
Tomcat Servlet Engine, Java-Script, GUI Entwicklung mit Swing,
HTML
SuSE Linux, Vim, Netbeans, Ant, CVS
Java 2 Standard Edition V. 1.3, UML, Oracle-SQL, Servlets, Applets,
Refaktorisierung, Software-Metriken, Entwicklungsmuster der OOP,
Vorgehensmodelle in der objektorientierten Softwareentwicklung,
GUI Entwicklung mit Swing, HTML
SuSE Linux, Vim, Forte (Netbeans), Xfig (f. Diagramme)
Java 2 Standard Edition V. 1.3, UML, XML, MS-SQL, Java Webstart,
GUI Entwicklung mit AWT, CVS
SuSE Linux, Vim, Ant, Forte (Netbeans), Xfig (f. Diagramme)
Kurzübersicht Technologien: Red Hat Enterprise Linux, Solaris, Maven 2, Maven 3, Subversion, Hudson, Java, Continuous Integration, Eclipse, Shellscript (bash), Ant, Velocity, XMLBeans, Puppet, Oracle, Apache HTTPD, Tomcat
DevOps Engineer
Buildmanagement
Releasemanagement
Continuous Integration
Configuration Management
Schwerpunkte und Qualifikationen
Referenzen auf Anfrage
Im Projekt bin ich eingesetzt als DevOps-Engineer. In den vergangenen Jahren wurde die Umstellung der Anwendung und der Infrastruktur komplett auf Containertechnologien auf Basis von Kubernetes durchgeführt. Dazu wurde ein entsprechender Kubernetes-Cluster von uns erstellt. Die bisher auf virtualisierten Systemen betriebenen Testsysteme sind nun komplett über Helm und K8s in eine containerisierte Landschaft überführt worden. Zur Umsetzung wurde nicht Docker, sonder der komplette RedHat-Stack aus BuildAH, Skopeo und Podman eingesetzt. Über Helm wurde auch eine entsprechende Schnittstelle für die Entwickler und Tester zum Zugriff auf den K8s-Cluster und die dort laufenden Systeme geschaffen. Zur Realisierung von CI-/CD-Pipelines kommt Tekton und Tekton Triggers zum Einsatz. Unterstützende Software in diesem Bereich wird von mir in der Sprache Go entwickelt.
Aktuell findet die Überführung der Systeme von unserem selbst betriebene Kubernetes-Cluster in eine gehostete Openshift-Umgebung statt.
Das Projekt dauert aktuell noch an.
Meine Tätigkeit im Projekt bestand überwiegend in der Weiterentwicklung bestehender Deploymentprozesse auf der Basis von Ansible. Bestandteil der Deployments waren alle Systeme, von der Entwicklung bis zur Produktion. Über entsprechende Ansible-Playbooks waren hier die unterschiedlichen Szenarien realisiert.
Die Server der Anwendung für die Entwicklung wurden per Vagrant als virtuelle Systeme bereit gestellt. Hierzu gehörten Webserver, Applikationsserver und Datenbanken, jeweils redundant als Hochverfügbarkeitslösung. Die Pflege und Weiterentwicklung der Vagrant-Infrastruktur (Skript,
Boxes) war auch Bestandteil meiner Tätigkeit.
Im Bereich des Monitorings von Systemen war eine meiner Aufgaben die Konfiguration des Überwachungswerkzeuges Centreon (Nagios). Über entsprechende Templatemechanismen für Hosts und Services wurden für die Server der Anwendung das Monitoring realisiert. Weiterhin wurde von mir eine angepasste Variante eines NRPE-HTTP-Plugins in Python entwickelt.
Eine der Hauptaufgaben im Projekt bestand in der Bereitstellung der notwendigen Infrastruktur für Continuous Integration für unterschiedliche Entwicklungsteams. Dabei war mein
Verantwortungsbereich die Installation und Administration von Jira, Hudson und SonarQube. Jira und Hudson waren per SSO an das vorhandene Active Directory angebunden. Die Anbindung wurde über in Java implementierte Plugins realisiert. Die Entwicklung und Pflege dieser Plugins gehörte dabei ebenfalls zu meinen Aufgaben.
Um den vielen unterschiedlichen Anforderungen der Entwicklerteams innerhalb des Systemhauses gerecht zu werden, mussten sehr viele administrative und konfigurative Probleme gelöst werden. Dies betraf hauptsächlich Jira, wo z.B. die Konfiguration von Workflows oder Schemata für Felder
und Bildschirmmasken zum Tagesgeschäft gehörten. Weiterhin war eine permanente Unterstützung der Teams notwendig in der Einrichtung und Konfiguration von Hudson-Jobs, beim Deployment der Artefakte zum Nexus-Server oder in der Konfiguration der Darstellung der Code-Metriken in SonarQube.
Die Linux-Systeme (SLES), die zur Bereitstellung der Infrastruktur genutzt wurden, wurden über Ansible konfiguriert. Die initiale Einführung von Ansible sowie die weitere Entwicklung wurden von mir durchgeführt.
Um einen einheitlichen Build-Prozess für künftige Projekte einzuführen, bestand eine weitere Hauptaufgabe für mich darin, ein Java-API zu entwickeln, das in der Lage war, auf alle Maven-
Projekte innerhalb eines Teams Aktionen auszuführen. So war es mit dem API möglich, zum Beispiel Tags oder Branches mit einem einzigen Kommando über alle Maven-Projekte zu erstellen. Das API war dazu in der Lage, mit unterscheidlichen SCM-Systemen (Git, Subversion) umzugehen. Um einen
einfachen Zugriff auf das Java-API zu erhalten, war die Entwicklung eines Maven-Plugins, das einen abstrakteren Zugriff auf das API ermöglichte, ebenfalls Bestandteil des Projektes.
Die vom Kunden entwickelte Softwarelösung beinhaltete mehrere Webshops, die über verschiedeneSchnittstellen an Backendsysteme (Datenbanken, Administrationswerkzeuge, Data Mining, etc.) sowie an externe Systeme (Banken, Schufa) angeschlossen waren. Das Gesamtprodukt bestand aus
mehr als 30 einzelnen Komponenten. In regelmäßigen Abständen mussten im Rahmen von Aktualisierungen Teile der Komponenten in neuen Versionen auf die Systeme gespielt werden. Ebenso mussten Datenbankaktualisierungen automatisch ausgeführt werden. Hierzu war ein koordiniertes Vorgehen notwendig, im den Abhängigkeiten der Komponenten untereinander ausreichend Rechnung zu tragen. Meine Hauptaufgabe im Projekt bestand in der kompletten Neuimplementierung dieses Werkzeuges, das die Prozesse des Deployments und Updates weitestgehend automatisiert. Hierzu
wurde, nach hinreichender Analyse und Design, ein Ansatz gewählt, der auch die spätere automatische Ausführung mittels Hudson und Jenkins gestattete. Die Implementierung erfolgte in
Java. Das System (Komponenten, Anwendungen und deren Versionen, Server, Schnittstellen) wurde hierzu komplett in einem XML-Modell abgebildet, das jeweils eine komplette Umgebung für den Betrieb beschrieb. Durch diesen Ansatz konnten sowohl Entwickler- und Testsysteme als auch das Produktivsystem selbst abgebildet werden. Neben diesem geschilderten größten Teilaspekt des gesamten Projektes wurden von mir noch
folgende Systeme etabliert, bzw. es erfolgte eine Mitarbeit bei der Etablierung:
Neben der beschriebenen Tätigkeiten gehörte zu meinen Aufgaben auch die Mitarbeit im Tagesgeschäft, wie Fehleranalyse auf Testsystemen, Bereitstellung und Wartung der CI-Systeme sowie Unterstützung von QA und Entwicklung in verschiedenen Bereichen.
Die aus ca. 120 Modulen bestehende Software (2 Produkte) wird permanent im Rahmen vonContinuous Integration automatisch gebaut und bezüglich der definierten Qualitätskriterien überwacht. Hierfür existiert eine umfangreiche virtuelle Serverfarm (VMWare ESX), mit deren Hilfe die einzelnen Codelinien verwaltet, gebaut und installiert werden. Ebenfalls wird in diesem Rahmen die Abarbeitung automatischer Webservice-Tests durchgeführt.
Die Haupttätigkeit bestand darin, die dazu notwendige Infrastruktur (sowohl Soft- als auch Hardware) permanent zu überwachen, zu verbessern und an neue Gegebenheiten (Module, Unit- Tests, Branches, Deployment-Szenarien, etc.) anzupassen. Die Build- und Deployserver werden
ausschliesslich unter Linux betrieben. Die Wartung und Aktualisierung der Systeme geschieht zum überwiegenden Teil automatisch durch Cfengine sowie über eigens entwickelten Werkzeuge – in der Hauptsache Maven-Plugins – die, gesteuerte über eine zentrale Konfiguration, die Aktualisierung
der Systeme durchführen. Die Überwachung der Server erfolgt durch Nagios.
Neben dem täglichen Betrieb wurde die Migration eines Produktes (ca. 66 Module) von Maven 1 auf Maven 2 durchgeführt. Hierzu wurden alle bestehenden Funktionalitäten, wie Ausführen von SQLSkripts im Rahmen der Unit-Test oder Erstellen von Multiartefakten, die bisher mit Maven 1, Jelly
und ggf. weiteren Hilfswerkzeugen durchgeführt wurden, komplett mit Standard-Maven 2- Funktionalitäten sowie durch die Neuentwicklung von Maven 2-Plugins nachgebildet. Weiterhin
wurde das Erstellen des Assemblies (WAR-Datei, bestehend aus allen Modulen) ebenfalls auf Maven 2-Technologien umgestellt. Im Rahmen der Migration wurde ebenfalls evaluiert, welche
Schritte notwendig wären, eine spätere Migration auf Maven 3 durchzuführen.
Ebenso gehörte die Unterstützung der Entwickler und Architekten bzgl. Entwicklungswerkzeugen (Maven, Ant, Subversion) und Entwicklungsumgebungen (Eclipse, Eclipse-Plugins) zum täglichen Aufgabenbereich.
Zum Betrieb der fachlichen Geschäftsabwicklung waren im Projekt eine große Menge an Softwaresystemen (> 25) vorhanden, die über eine serviceorientierte Architektur verbunden waren. Diese SOA wurde technisch mit Seebeyond, eInsight und MQ-Series, teilweise auch mit Java CAPS,
realisiert. Die Hauptaufgabe des Projektes bestand darin, das Deployment für Seebeyond und eInsight durchzuführen; dies sowohl für Test-, Integrations- und Produktivsysteme. Die Zulieferung der Softwareversionen erfolgte durch externe Dienstleister. Vor dem Deployment der Software erfolgte das Konfigurationsmanagement, das sicherstellte, dass alle Lieferungen und Release- Stände reproduzierbar verwaltet wurden. Für diese Aufgabe wurde SynergyCM eingesetzt.
Im Kontext des Deployments waren oft Shellprogrammierungen mit der ksh und der bash notwendig. Dabei wurden in der Regel Skripte erstellt oder verbessert, die der Automatisierung des
Deployments oder der Unterstützung bei der Fehlersuche dienten. Im Rahmen kleinerer Projekte wurden, neben dem Deployment, durch mich die Wartung und Erweiterung bestehender J2EEAnwendungen durchgeführt.
Im Rahmen des Tagesgeschäftes waren für die Entwicklerteams der Software-Produktionsumgebung beim Kunden entsprechende Systeme zur Verfügung zu stellen. Dies waren insbesondere Jira, Hudson und SonarQube. Über eine vorhandene behördeninterne technische Schnittstelle wurden die Systeme Jira und SonarQube über eigene Plugins per SSO an Active Directory angebunden. So wurde es ermöglicht, den Login mit den schon vorhandenen Benutzerdaten zu realisieren. Weiterhin erfolgte eine Anbindung von SonarQube an JDeveloper (Oracle) um die dort erzeugten Metriken in SonarQube zur Verfügung zu stellen. Dies wurde ebenfalls per Plugin implementiert.
Die erwähnten Plugins wurden alle in Java implementiert und waren Bestandteil einer Softwareplattform, die von mir ständig weiter entwickelt und gepflegt wurde. Die Durchführung von Releases und die Bereitstellung versionierter Artefakte gehörten ebenfalls zum Aufgabenbereich.
Um individuellen Anforderungen einzelner Teams zu entsprechen, waren auch umfangreiche administrative und konfigurative Tätigkeiten erforderlich. Hier insbesondere im Bereich Jira, wo oft Anpassungen im Bereich der Abläufe, Bildschirmmasken und Felder notwendig waren.
Im Bereich Continuous Integration war die Unterstützung der Projekte beim Einrichten und Pflegen von Build-Jobs zum Bauen der Softwareartefakte auch regelmäßiger Bestandteil meiner Tätigkeit. Hier insbesondere auch die Konfiguration von Maven- und Ant-Projekten zur Generierung der notwendigen Codemetriken für SonarQube.
Die in unserer Abteilung eingesetzten Linux-Server, sowie die darauf laufenden Systeme (Jira, etc.) wurden im Rahmen des Konfigurationsmanagements per Ansible gepflegt. Die initiale Einführung von Ansible und die weitere Pflege der Konfigurationen wurden von mir durchgeführt.
Die vom Kunden entwickelte Softwarelösung beinhaltete mehrere Webshops, die über verschiedene Schnittstellen an Backendsysteme (Datenbanken, Administrationswerkzeuge, Data Mining, etc.) sowie an externe Systeme (Banken, Schufa) angeschlossen waren. Das Gesamtprodukt bestand aus mehr als 30 einzelnen Komponenten. In regelmäßigen Abständen mussten im Rahmen von Aktualisierungen Teile der Komponenten in neuen Versionen auf die Systeme gespielt werden. Ebenso mussten Datenbankaktualisierungen automatisch ausgeführt werden. Hierzu war ein koordiniertes Vorgehen notwendig, um den Abhängigkeiten der Komponenten untereinander ausreichend Rechnung zu tragen.
Meine Hauptaufgabe im Projekt bestand in der kompletten Neuimplementierung dieses Werkzeuges, das die Prozesse des Deployments und Updates weitestgehend automatisiert. Hierzu wurde, nach hinreichender Analyse und Design, ein Ansatz gewählt, der auch die spätere automatische Ausführung mittels Hudson und Jenkins gestattete. Die Implementierung erfolgte in Java. Das System (Komponenten, Anwendungen und deren Versionen, Server, Schnittstellen) wurde hierzu komplett in einem XML-Modell abgebildet, das jeweils eine komplette Umgebung für den Betrieb beschrieb. Durch diesen Ansatz konnten sowohl Entwickler- und Testsysteme als auch das Produktivsystem selbst abgebildet werden.
Neben diesem geschilderten größten Teilaspekt des gesamten Projektes wurden von mir noch folgende Systeme etabliert, bzw. es erfolgte eine Mitarbeit bei der Etablierung:
Einrichtung der gesamten Infrastruktur für das Konfigurationsmanagement basierend auf Puppet. Hierüber wurde die Neueinrichtung und Wartung aller Test-, QA- und CI-Hardware respektive Virtualisierung realisiert.
Einrichtung der komplette Überwachung der Test-, QA- und CI-Infrastruktur mittels Icinga.
Mitarbeit bei der Einrichtung eines Hochverfügbarkeistclusters. Über den Cluster wurden die Repositories für Maven und Subversion bereit gestellt. (RHEL 6, Linux HA)
Erstellen eines Archivierungsservices der es erlaubt, ein bestehendes Maven-Repository bzgl. seiner Artefakte und den Programmversionen, die diese Artefakte verwenden, zu analysieren und nicht mehr benötigte Artefakte zu archivieren. (Java, Maven-Plugin)
Implementierung eines Werkzeugs zur automatischen Erstellung und Änderung von CI-Jobs auf Jenkins und Hudson. Die Jobkonfiguration wurde dabei mittels Velocity-Templates bereit gehalten, durch entsprechende Variablenersetzung angepasst und per HTTP auf die CI-Systeme ausgerollt. (Java, Velocity, Maven-Plugin)
Implementierung verschiedener weiterer Werkzeuge zur Automatisierung unterschiedlicher Aufgaben im Bereich des Tagesgeschäfts mit Java.
Neben der beschriebenen Tätigkeiten gehörte zu meinen Aufgaben auch die Mitarbeit im Tagesgeschäft, wie Fehleranalyse auf Testsystemen, Bereitstellung und Wartung der CI-Systeme sowie Unterstützung von QA und Entwicklung in verschiedenen Bereichen.
C, Java, JNI, JDBC, JSP, Debian Linux, vim, make
Java 2 Standard Edition V. 1.3, Oracle-SQL, Servlets, Applets,
Refaktorisierung, Entwicklungsmuster der OOP, Apache Webserver,
Tomcat Servlet Engine, Java-Script, GUI Entwicklung mit Swing,
HTML
SuSE Linux, Vim, Netbeans, Ant, CVS
Java 2 Standard Edition V. 1.3, UML, Oracle-SQL, Servlets, Applets,
Refaktorisierung, Software-Metriken, Entwicklungsmuster der OOP,
Vorgehensmodelle in der objektorientierten Softwareentwicklung,
GUI Entwicklung mit Swing, HTML
SuSE Linux, Vim, Forte (Netbeans), Xfig (f. Diagramme)
Java 2 Standard Edition V. 1.3, UML, XML, MS-SQL, Java Webstart,
GUI Entwicklung mit AWT, CVS
SuSE Linux, Vim, Ant, Forte (Netbeans), Xfig (f. Diagramme)
Kurzübersicht Technologien: Red Hat Enterprise Linux, Solaris, Maven 2, Maven 3, Subversion, Hudson, Java, Continuous Integration, Eclipse, Shellscript (bash), Ant, Velocity, XMLBeans, Puppet, Oracle, Apache HTTPD, Tomcat
DevOps Engineer
Buildmanagement
Releasemanagement
Continuous Integration
Configuration Management
Schwerpunkte und Qualifikationen
Referenzen auf Anfrage
Direktester geht's nicht! Ganz einfach Freelancer finden und direkt Kontakt aufnehmen.
"[...] Der Consultant ist von Beginn der Idee der Betriebsdatenerfassung mit in das Projekt eingebunden gewesen. [...] Die komplette Installation der Betriebsdatenerfassung, sowie der Serverinstallation (Linux-Server) wurde durch den Consultant selbst vorgenommen. Der Consultant stand uns während des Probelaufes der Betriebsdatenerfassung (ca. 2 Wochen) bei eventuellen Rückfragen sofort zur Verfügung, um eventuelle Probleme zu beseitigen. Seit 01.02.04 läuft das Programm nicht mehr in der Testphase sondern im 'harten Alltag' und funktioniert problemlos. Über eine Erweiterung des Programmes wird in unserem Hause noch nachgedacht. Dies geschieht wieder in Verbindung mit dem Consultant, dessen gute Leistungen wir zu schätzen wissen. Hiermit möchte ich mich für die gute Zusammenarbeit bedanken."
— Projekt Betriebsdatenerfassung, 12/03 - 02/04
Referenz durch Sys.-admin., RSG Regel- und Steuergeräte GmbH (16 MA) v. 03.03.04
"Die Zusammenarbeit mit dem Softwareentwickler war sehr effizient. Hervorzuheben ist vor allem die professionelle Projektabwicklung vom Lastenheft bis zur Applikation und die gute Zusammenarbeit mit unseren internen Kunden."
— Projekt Java/Intranet-Entwicklung, 01/01 - 02/03
Referenz durch Teamleiter ZF Informatik vom 10.07.03
"Der Consultant war für uns in folgenden Projekten tätig:
Projektbeschreibung:
- Projekt Prozess- und Aufgabenverfolgungssystem
- Projekt Qualitätsdatenbank
- Projekt Zu- und Abgangskontrolle Werkschutz
Eingesetzte Tools, Kenntnisse, Methoden etc.:
- Java-Technologien
- Intranet- / Internet technologien
Die Zusammenarbeit mit dem Consultant in den og. Projekten war sowohl in fachlicher als auch menschlicher Sicht hervorragend."— Projekt Drei Java-/Intranet-Projekte von 01/01 - 02/03
Referenz durch Teamleiter in der ZF Informatik Sparte Engineering vom 03.07.03
"Der Consultant ist ein aufgeschlossener, pflichtbewußter, engagierter und zuverlässiger Trainer mit sehr hoher Fachkompetenz."
— Projekt dreitägiger Java-Grundkurs im März 2003
Referenz durch Leiterin Personalentwicklung mittelst. Unternehmen vom 03.07.03