Portfolio und Projekte

Studium und Weiterbildung

Projekte

DevOps Engineer - Build und Deployment - Finanzdienstleistungen (01/2017 - heute)

Die Aufgaben umfassen:

  • die Migration von rkt-Containern zu Docker-Containern
  • die Migration von fleet-Orchestrierung zu Kubernetes
  • Aufbau und Pflege von Deployment-Pipelines für Spring-Boot basierte Software
  • Erarbeiten und Umsetzen von Continous-Delivery Pipelines
  • Erstellen von Continuous Integration Jenkins Builds
  • Inhouse-Coaching zu allen Fragen rund um Maven, Jenkins, Git
  • Aufbau, Betrieb und Pflege einer hybriden verteilten Build-Infrastruktur

Technologien/Methoden:

Linux-Container (rkt und Docker), Jenkins 2.x, Jenkins Pipeline, kubernetes / k8s, systemd, Ansible, Java, Maven, Spring Boot, Sonatype Nexus OSS, Atlassian Jira, Atlassian Bitbucket, SonarQube, Outlook Linux-Container (rkt und Docker), Jenkins 2.x, Jenkins Pipeline, Jenkins Job DSL, Groovy, CoreOS, fleet, Fedora, CentOS, systemd, Swarm, goss, etcd, Sonatype Nexus OSS, Git, SonarQube

DevOps Engineer - Build und Deployment - Finanzdienstleistungen (01/2016 - 12/2016)

Herr Herbert arbeitete als DevOps Engineer in einem IT-Migrationsprojekt. Er war mit der Migration der Build- und Deployment-Infrastruktur auf Linux-Container betraut.

Für den Infrastrukturcode wurden Continuous Integration sowie Continuous Delivery Pipelines aufgebaut um die Anwendungen mit minimaler Downtime zu aktualisieren oder im Falle eines Failovers auf andere Lokationen zu transferieren.

Dabei galt der Hauptaugenmerk den Prinzipien Configuration as Code sowie Continuous Delivery um eine Reproduzierbarkeit der Build- und Deployment-Infrastruktur jederzeit zu gewährleisten und diese Systeme mit hoher Qualität stabil zu betreiben sowie langfristige Wartbarkeit der Konfiguration zu ermöglichen.

  • Konzeption und Umsetzung einer kontinuierlichen Build- und Deployment-Umgebung für Container-basierte Services
  • Entwicklung und Umsetzung eines Konzepts für Deployment-Pipelines für Services
  • Enge Zusammenarbeit als Schnittstelle zwischen Anwendungsentwicklung und Systemadministration
  • Umzug und Anpassung von auf VMs laufenden Diensten in Linux-Container
  • Migration von Java-basierten Anwendungen auf Container
  • Migration von Docker-Containern auf rkt
  • Implementierung einer verteilten und robusten Build-Architektur
  • Erarbeitung von einheitlichen Code-Richtlinien für die Java-Anwendungsentwicklung
  • Konzeption eines Delivery-Verfahrens für Linux-Container basierte Services
  • Verbesserung der Build-Dauer durch Optimierung der Maven-Builds
  • Optimierung der bestehenden Deployment-Verfahren
  • Automatisierung von Build und Deployment

Technologien/Methoden:

Linux-Container (rkt und Docker), Jenkins 2.x, Jenkins Pipeline, Jenkins JOB DSL, Groovy, CoreOS, fleet, Fedora, CentOS, systemd, Swarm, goss, etcd, Sonatype Nexus OSS, Git, Sonarqube, Lotus Notes

DevOps Engineer - Software-Integration - Finanzdienstleistungen (05/2014 - 12/2015)

Herr Herbert arbeitete im Team Integration eines Finanzdienstleisters als DevOps-Engineer an der Weiterentwicklung der Build- und Deploymentinfrastruktur und der dort verwendeten Tools und Plugins. Er war Ansprechpartner bei Fragen rund um Jenkins sowie Maven und wirkte in verschiedenen Task-Forces mit.

  • Steuerung des Releaseprozesses über verschiedene Umgebungen
  • Durchführung von Builds und komplexen Deployments
  • Verantwortung für Releasewechsel in Produktion
  • Schnittstellen zu anderen Aufgabengebieten (Anwendungsentwicklung, Entwickler von Datenbankskripten, Serveradmins, Datenbankadministratoren, Qualitätssicherung)
  • Weiterentwicklung und Optimierung der eigenen Tools (Maven-Plugins)
  • Administration der Jenkins-basierten Automatisierungs-Umgebung
  • Koordination, Betreuung und Übernahme von Upgrades (Java, Git, Tomcat etc.)

Herr Herbert setzte eine Container-basierte Build-Umgebung mit Hilfe von Docker bzw. Rocket sowie CoreOS auf und führte verteilte Builds ein, um eine schnellere Auslieferung der im Haus entwickelten Software zu ermöglichen.

Er arbeitete ein angepasstes Continuous-Integration Modell aus, was den im Haus tätigen Software-Entwicklern ein schnelles Feedback über ihre Arbeit gibt und die bessere Integration der Komponenten in die komplexe Gesamt-Sofware gewährleistet.

Technologien/Methoden:

Jenkins, Java, Sonatype Nexus, Maven, ant, Eclipse, IntelliJ IDEA, Docker, IPv6, rkt (Rocket), Fedora, CentOS, Atlassian JIRA + Confluence + Stash/Bitbucket, SonarQube, Git, Camunda BPM

Software Engineering - Tourismus (12/2011 - 04/2014)

Als Java-Entwickler bei einem Reservierungs- und Distributionsdienstleister für die internationale Hotellerie war Herr Herbert Teil des agilen Teams.Er leitete die Entwicklung einer Hotel-Reservierungs-Software zum Einsatz in Call-Centern und war für Architektur- und Implementierungsdetails zuständig. Er war an der Planung und technischen Konzeption beteiligt und arbeitete als Teil des agilen Scrum-Teams an der Entwicklung von Frontend- und Backendsystemen.

Herr Herbert führte automatisierte Softwaretests ein und baute eine Continuous-Integration-Umgebung auf um die Softwarequalität nachhaltig zu verbessern. Er war Inhouse-Experte bei allen Fragen zu Eclipse, Maven und Jenkins und fungierte darüber hinaus als Ansprechpartner bei Fragen zum Thema Continuous-Integration und Builds.

Seine Tätigkeit umfasste:

  • Aktualisierung und Pflege bestehender Java-Softwaresysteme
  • Java-Webstart Anwendung - Rich Internet Application (Swing)
  • Webapplikationen mit JSF, Struts und JSP
  • Erstellung technischer Konzepte und Designs basierend auf fachlichen Vorgaben
  • Code-Reviews bzgl. Softwarequalität sowie PCI-Compliance
  • Planung, Aufbau und Betrieb einer Continuous-Integration Umgebung (Jenkins, Artifactory)
  • Verbesserung und Pflege der Build-Management Konfiguration sowie der Build-Skripte (Maven, ant, bash)
  • Refactoring von Legacy-Code/-Modulen um Testbarkeit und bessere Wartbarkeit zu erreichen
  • Einführung und Weiterentwicklung von automatisierten Tests (JUnit, Mockito)
  • Einführung von Qualitätsmaßen und statischer Quellcodeanalyse
  • Analyse von Java-spezifischen Problemen mit Hilfe von Betriebssystem- Mitteln
  • Release-Planung und Deployment von Java-Enterprise Anwendungen
  • Migration von Anwendungen auf Maven
  • Interaktion mit dem Produktmanagement und der Qualitätskontrolle
  • Erstellung von User Stories in Zusammenarbeit mit dem Produktmanagement
  • Analyse und Dokumentation der Softwarearchitektur
  • Durchführung interner Schulungen zu: testgetriebener Entwicklung, JUnit/Mockito, Maven, Jenkins

Technologien/Methoden:

Java SE, Java EE, JPA, Hibernate, Swing, Hessian, WebLogic, Tomcat, HTML, Velocity, Flying Saucer, iText, Jenkins/Hudson, Artifactory, Maven, ant, Eclipse, Cobertura, JUnit, Mockito, Hamcrest, PMD, Findbugs, jvisualvm, jconsole, jMeter, Betriebssystemmittel, Scrum, GIT, SVN

Forschung und Entwicklung - TU Darmstadt (04/2009 - 10/2011)

Forschungsthema: „Crosslingual Aspects in Semantic Information Retrieval“ An der TU Darmstadt arbeitete Herr Herbert am Forschungs- und Entwicklungsprojekt SIGMUND. Er koordinierte die Zusammenarbeit mit den Partnerfirmen und war maßgeblich an der Entwicklung und Planung der Software-Komponenten beteiligt. Darüber hinaus hatte er Verantwortung für die im Rahmen der Forschungs- und Entwicklungsarbeit erstellten Komponenten. Zusätzlich übernahm er Verantwortung in der IT-Administration der Arbeitsgruppe.

Im Rahmen der Forschungstätigkeit hielt er mehrere Vorträge im Bereich multilingualer Suchverfahren.

  • Forschungs- und Entwicklungsarbeit im Bereich semantischer Suchverfahren/ Information Retrieval im BMBF Forschungsprojekt SIGMUND
  • Konzeption und Implementierung von Softwarekomponenten im Apache UIMA Framework (Java, JUnit, Spring, Lucene, Groovy, Maven, Subversion)
  • Anbindung von Drittsystemen mit Webservices (SOAP, Axis2, Java)
  • Analyse der erstellten Software im Hinblick auf Funktionalität und Performanz
  • Planung, Umsetzung und Betrieb von programmatischen Schnittstellen
  • Koordination der Zusammenarbeit mit Partnerfirmen
  • Erstellung der Fachspezifikation und fachspezifischer Berichte
  • Vorträge über Forschungsergebnisse auf internationalen Konferenzen
  • Konzeption und Durchführung von Lehrveranstaltungen
  • Übung zur Vorlesung - „Natural Language Processing for the Web“
  • Programmierprojekt - „Unstructured Information Management“
  • Forschungsarbeit zu mehrsprachigen Suchverfahren auf großen Datenmengen im Intellectual Property (IP) Bereich
  • Mitarbeit im Administrationsteam am Fachgebiet (XenServer, Puppet, Linux)
  • Teilnahme an Podiumsdiskussion CLEF 2009 Intellectual Property
  • Teilnahme am Program-Committee des TIR 2011 - 8th International Workshop on Text-based Information Retrieval

Technologien/Methoden

Java, Java EE 5, Groovy, XML, Lucene, Terrier, Web services, Apache Axis, SOAP, Ubuntu Linux, Debian Linux, Subversion, Maven, Artifactory, Jenkins

Beratung/Implementierung Suchfunktion - REXVINI (08/2010 - 11/2010)

Herr Herbert arbeitete als Experte für Suchtechnologien in der Planung und Entwicklung der Suchfunktion für eine Internet-Weindatenbank.

Seine Arbeit umfasste:

  • Durchführung einer Anforderungsanalyse
  • Konzeption und Umsetzung einer Suchfunktion für eine Webapplikation (PHP, Zend Lucene, MySQL, Symfony)
  • Implementierung von UI Prototypen für die Suchmaske (HTML, CSS)

Technologien/Methoden

Symfony, PHP, HTML, CSS, Lucene, Zend, Debian Linux, MySQL, Subversion, Eclipse

Softwareentwickler - Vertragswesen (09/2007 - 05/2008)

Als Entwickler bei der Firma SealBase entwickelte Herr Herbert mehrere Module der SealBase Vertragsmanagementlösung. Seine Aufgaben waren:

  • Entwicklung, Bugfixing und Test eines Softwareprodukts für Vertragsmanagement (C#, MS SQL, Oracle, ASP.NET)
  • Implementierung von Proof-of-Concepts (ASP.NET, Oracle)

Technologien/Methoden

XHTML, CSS, JavaScript, C#, ADO.NET, ASP.NET, AJAX, Oracle XE 10g, Windows, MS SQL, SQL Developer, Subversion

Berater/Softwareentwicklung - Darmstadt (10/2005 - 03/2009)

Als Softwareentwickler war Herr Herbert für die Entwicklung und die Pflege der eines Softwareprodukts zuständig und an Planung und Umsetzung mehrerer Kundenprojekte beteiligt.

Seine Aufgaben waren:

  • Entwicklung und Pflege eines Softwareprodukts zum Risikomanagement (VB6, MS SQL)
  • Weiterentwicklung der Reports (Crystal Reports)
  • Schulung und Einarbeitung neuer Mitarbeiter
  • Code-Reviews bzgl. Einhaltung der Style-Guides und Performanz
  • Konzeption und Umsetzung verschiedener Softwareprojekte
  • Lagerverwaltungssoftware (C#, MS SQL)
  • Webanwendung zur Katalogisierung von Hard- und Software (ASP.NET)
  • Hardwaretreiber für Windows-Betriebssysteme (C/C++)
  • Konzeption und Entwicklung von Lösungen vor Ort bei div. Kunden
  • Entwicklung der Install-Shield-Skripte zur automatisierten Installation auf Windows-PCs
  • Entwicklung von Skripten zur Verarbeitung, Bereinigung und Migration von Kundendaten aus einer Excel-basierten Lösung in eine Datenbank
  • Paketierung und Testen für versch. Windowsplattformen (Installshield, VMware)

Technologien/Methoden

VB, .NET, ASP.NET, C#, MS SQL, C, C++, Installshield, VMware, Windows