29.04.2025 aktualisiert
SW
100 % verfügbar
Softwareentwickler (Java, Scala, TypeScript, Spring, JEE, Akka, ZIO, Angular, JSF, Play)
Waiblingen, Deutschland
Deutschland
Promovierter Diplom Informatiker;Skills
LinuxScalaSpringWeb ServicesJavaBashProgrammiersprachenXMLHTMLKubernetesAKKAPlayCloudFoundryAngularDockerOpenshiftAmazon AWS
Informatikstudium an der Universität Karlsruhe (TH) mit Mathematik als Nebenfach im Hauptstudium; Abschluss Diplominformatiker (Dipl. Informatiker (M.SC)); anschließende Promotion im Bereich Maschinensehen.
Programmiersprachen:
- Java
- Scala
- TypeScript
- JavaScript
- Groovy
- Xslt
- Bash
- Go
Produkte:
- Cloud: AWS, Kubernetes, Docker, CloudFoundry, OpenShift
- Datenbanken: MongoDB, PostgreSQL, MySQL, H2, InfluxDB
- Messaging: RabbitMQ, AWS-SQS, Kafka
- Auth: Keycloak
- Redis
- Applikationsserver, Servletcontainer: Bea WebLogic, JBoss, Tomcat, Jetty, Felix, WebObjects
- Server-Frameworks: Spring, Akka, ZIO
- Apache (inkl. mod_jk, mod_auth_openidc)
- Persistenz: Hibernate, JPA, JDO, Slick, Quill
- Webapplikationsframework: Play, Struts, Pustefix
- HTML-Frontend: Angular, Google-Web-Toolkit (GWT), Twitter Bootstrap
- XML-Tools: Xerxes, Xalan, Saxon, XML Spy, XEP, FOP
- Logging, Monitoring: ElasticSearch, LogStash, Kibana, Grafana, Kamon
- Versionskontrolle: Git, SVN, CVS, VSS
- Entwicklungsumgebungen: IntelliJ IDEA, NetBeans, Eclipse
- Build-Tools: Ant, Maven, Gradle, SBT, Hudson/Jenkins
- Ticket-Systeme: Bugzilla, Jira
- RuleEngines: JESS, JRule
- Compiler-Compiler: Antlr, JavaCC, jay, jlex
- UML: TogetherJ
- WebServices: JaxWs, CXF, Axis
- Tests: JUnit, EasyMock, Mockito
- Netbeans Profiler
- OSGi container: Felix
- Java Content Repository: Jackrabbit
- Zabbix Server; Entwicklung eines Java-Zabbix-Clients
- VMWare Workstation
Linux:
Ich entwickle hauptsächlich unter Linux
Standards:
- OAuth 2.0
- Swagger / OpenAPI
- UML
- J2EE: (insbesondere Servlets, JSPs, Custom-Tags, JPA)
- XML: DTD, XML Schema, XSLT, XPath, XSL-FO, JAXP, JAXB, SAX, DOM
- Web: HTML, DHTML, XHTML, CSS, W3C
- JDBC
- JCR
- SOAP
- JaxWs
- REST
- JSON
Programmiersprachen:
- Java
- Scala
- TypeScript
- JavaScript
- Groovy
- Xslt
- Bash
- Go
Produkte:
- Cloud: AWS, Kubernetes, Docker, CloudFoundry, OpenShift
- Datenbanken: MongoDB, PostgreSQL, MySQL, H2, InfluxDB
- Messaging: RabbitMQ, AWS-SQS, Kafka
- Auth: Keycloak
- Redis
- Applikationsserver, Servletcontainer: Bea WebLogic, JBoss, Tomcat, Jetty, Felix, WebObjects
- Server-Frameworks: Spring, Akka, ZIO
- Apache (inkl. mod_jk, mod_auth_openidc)
- Persistenz: Hibernate, JPA, JDO, Slick, Quill
- Webapplikationsframework: Play, Struts, Pustefix
- HTML-Frontend: Angular, Google-Web-Toolkit (GWT), Twitter Bootstrap
- XML-Tools: Xerxes, Xalan, Saxon, XML Spy, XEP, FOP
- Logging, Monitoring: ElasticSearch, LogStash, Kibana, Grafana, Kamon
- Versionskontrolle: Git, SVN, CVS, VSS
- Entwicklungsumgebungen: IntelliJ IDEA, NetBeans, Eclipse
- Build-Tools: Ant, Maven, Gradle, SBT, Hudson/Jenkins
- Ticket-Systeme: Bugzilla, Jira
- RuleEngines: JESS, JRule
- Compiler-Compiler: Antlr, JavaCC, jay, jlex
- UML: TogetherJ
- WebServices: JaxWs, CXF, Axis
- Tests: JUnit, EasyMock, Mockito
- Netbeans Profiler
- OSGi container: Felix
- Java Content Repository: Jackrabbit
- Zabbix Server; Entwicklung eines Java-Zabbix-Clients
- VMWare Workstation
Linux:
Ich entwickle hauptsächlich unter Linux
Standards:
- OAuth 2.0
- Swagger / OpenAPI
- UML
- J2EE: (insbesondere Servlets, JSPs, Custom-Tags, JPA)
- XML: DTD, XML Schema, XSLT, XPath, XSL-FO, JAXP, JAXB, SAX, DOM
- Web: HTML, DHTML, XHTML, CSS, W3C
- JDBC
- JCR
- SOAP
- JaxWs
- REST
- JSON
Sprachen
DeutschMutterspracheEnglischgut
Projekthistorie
Technologie: Scala, TypeScript, Spring-Boot, AWS, Jenkins
Eingesetzte Produkte: AWS, Docker, Jenkins, Gradle, Spring, Gattling, MongoDB, Atlassian JIRA,
Atlassian Confluence
Die Arbeit bestand aus 2 Schwerpunkten:
1. Weiterenwicklung / Wartung der Microservices eines Internetshops
Die Microservices sind backendseitig mit Scala / Spring-Boot und
frontendseitig mit HTML/CSS/TypeScript implementiert.
Es wurde an Microservices im Bereich der Zahlung und Lieferung
gearbeitet. Das Verhalten des Shops bei Lastspitzen wurde untersucht und
verbessert.
2. Migration / Wartung des Infrastruktur-Codes
Eine selbstgeschriebene Anwendung zum Aufsetzen der Infrastruktur soll
abgelöst werden. Die bisherige Anwendung basiert auf AWS-
CloudFormation. Zur Ablösung wurden mehrere AWS-CDK-Anwendungen
in TypeScript implementiert.
Eingesetzte Produkte: AWS, Docker, Jenkins, Gradle, Spring, Gattling, MongoDB, Atlassian JIRA,
Atlassian Confluence
Die Arbeit bestand aus 2 Schwerpunkten:
1. Weiterenwicklung / Wartung der Microservices eines Internetshops
Die Microservices sind backendseitig mit Scala / Spring-Boot und
frontendseitig mit HTML/CSS/TypeScript implementiert.
Es wurde an Microservices im Bereich der Zahlung und Lieferung
gearbeitet. Das Verhalten des Shops bei Lastspitzen wurde untersucht und
verbessert.
2. Migration / Wartung des Infrastruktur-Codes
Eine selbstgeschriebene Anwendung zum Aufsetzen der Infrastruktur soll
abgelöst werden. Die bisherige Anwendung basiert auf AWS-
CloudFormation. Zur Ablösung wurden mehrere AWS-CDK-Anwendungen
in TypeScript implementiert.
Neben Wartungsarbeiten bestand der Einsatz aus den folgenden Phasen
mit Weiterentwicklungen:
Phase: Weiterentwicklung des Kernels und der Konfiguration eines IoT-
Devices
Technologie: Java, Kotlin, Docker, Azure
Das IoT-Device enthält einen in Kotlin geschriebenen Kernel und läuft
unter Linux entweder auf einem Hardware-Device oder innerhalb einer VM.
Der Kernel lädt Docker-Images und kontrolliert die Ausführung von
Docker-Containern, die die eigentiche Anwendungslogik enthalten.
Durch eine Azure-Cloud-Anwendung werden mit Azure-Functions und dem
Azure-IoT-Hub die IoT-Devices konfiguriert.
Phase: Weiterentwicklung einer Streaming-Anwendung zur Aggregation
von Netflow-Daten und der zug. Visualisierung
Technologie: Java, Apache Beam, Flink, Kafka, ElasticSearch, Grafana
In einer mit Apache Beam implementierten Streaming-Anwendung werden
Netflow-Daten zeitlich aggregiert und die Hosts / Anwendungen mit den
höchsten Kommunikationsvolumina bestimmt. Die Anwendung läuft auf
Flink-Clustern und kann mehrere 100.000 NetFlow-Pakete pro Sekunde
verarbeiten.
Es wurde eine weitere Aggregation nach "Differentiated Service Code
Points" (DSCP) und die Berücksichtigung der "Explicit Congestion Notification" (ECN) implementiert. Durch Optimierung der Streaming-
Pipeline-Struktur konnte die Last der Pipeline trotz der zusätzlichen
Funktionalität reduziert werden.
Flow-Aggregate werden in ElasticSearch gespeichert. Ein ElasticSearch-
Plugin wurde angepasst, das die Abfrage der Flow-Aggregate als Zeitreihen
erlaubt. Ein Grafana-Plugin wurde erweitert, um die Abfrage und
Visualisierung der zusätzlichen DSCP-Aggregation und ECN-Information zu
ermöglichen.
Phase: Signierung von Multi-Architektur-Docker-Images
Technologie: Docker, Notary, CircleCI
Die auf den oben beschriebenen IoT-Devices laufenden Docker-Images
werden mit Docker Content Trust signiert. Dazu wurden die benötigten
Public/Private-Key-Paare eingerichtet und der Build-Vorgang entsprechend
angepasst.
Da das IoT-Device auf unterschiedlichen Prozessoren laufen kann, handelt
es sich bei den Docker-Images um Multi-Architektur-Images. Signierte
Multi-Architektur-Images konnten zur Zeit der Umsetzung noch nicht durch
Docker selbst erzeugt werden sondern verlangten den direkten Einsatz des
zugrundeliegenden Notary-Service.
Phase: Nutzung von Cortex zur Speicherung und Visualisierung von
Netflow-Daten
Technologie: Java, Apache Beam, Flink, Kafka, Cortex, Prometheus,
Grafana
Es wurde eine Sink-Transformation für Apache-Beam implementiert, um
Flow-Aggregate in Cortex zu speichern. Hauptprobleme bei der Umsetzung
waren die zeitliche Ordnung von Ergebnissen und
Kardinalitätsbeschränkungen.
Cortex verlangt, dass Samples, die zur gleichen Zeitreihe gehören, zeitlich
geordnet geschrieben werden. Apache-Beam garantiert jedoch keine
zeitliche Ordnung von Ergebnissen. Zur Lösung wurden ein weiteres
Attribut in Zeitreihen eingeführt, das "verspätete" Ergebnisse anderen
Zeitreihen zuordnet. Über dieses Attribut kann bei der späteren Abfrage
aggregiert werden.
Cortex verlangt, dass das Produkt der Attribut-Kardinalitäten einer Metric
nicht zu groß wird. Um dieses Problem zu mildern wurde ein Teil der
Attribute in die Metrik-Namen kodiert.
mit Weiterentwicklungen:
Phase: Weiterentwicklung des Kernels und der Konfiguration eines IoT-
Devices
Technologie: Java, Kotlin, Docker, Azure
Das IoT-Device enthält einen in Kotlin geschriebenen Kernel und läuft
unter Linux entweder auf einem Hardware-Device oder innerhalb einer VM.
Der Kernel lädt Docker-Images und kontrolliert die Ausführung von
Docker-Containern, die die eigentiche Anwendungslogik enthalten.
Durch eine Azure-Cloud-Anwendung werden mit Azure-Functions und dem
Azure-IoT-Hub die IoT-Devices konfiguriert.
Phase: Weiterentwicklung einer Streaming-Anwendung zur Aggregation
von Netflow-Daten und der zug. Visualisierung
Technologie: Java, Apache Beam, Flink, Kafka, ElasticSearch, Grafana
In einer mit Apache Beam implementierten Streaming-Anwendung werden
Netflow-Daten zeitlich aggregiert und die Hosts / Anwendungen mit den
höchsten Kommunikationsvolumina bestimmt. Die Anwendung läuft auf
Flink-Clustern und kann mehrere 100.000 NetFlow-Pakete pro Sekunde
verarbeiten.
Es wurde eine weitere Aggregation nach "Differentiated Service Code
Points" (DSCP) und die Berücksichtigung der "Explicit Congestion Notification" (ECN) implementiert. Durch Optimierung der Streaming-
Pipeline-Struktur konnte die Last der Pipeline trotz der zusätzlichen
Funktionalität reduziert werden.
Flow-Aggregate werden in ElasticSearch gespeichert. Ein ElasticSearch-
Plugin wurde angepasst, das die Abfrage der Flow-Aggregate als Zeitreihen
erlaubt. Ein Grafana-Plugin wurde erweitert, um die Abfrage und
Visualisierung der zusätzlichen DSCP-Aggregation und ECN-Information zu
ermöglichen.
Phase: Signierung von Multi-Architektur-Docker-Images
Technologie: Docker, Notary, CircleCI
Die auf den oben beschriebenen IoT-Devices laufenden Docker-Images
werden mit Docker Content Trust signiert. Dazu wurden die benötigten
Public/Private-Key-Paare eingerichtet und der Build-Vorgang entsprechend
angepasst.
Da das IoT-Device auf unterschiedlichen Prozessoren laufen kann, handelt
es sich bei den Docker-Images um Multi-Architektur-Images. Signierte
Multi-Architektur-Images konnten zur Zeit der Umsetzung noch nicht durch
Docker selbst erzeugt werden sondern verlangten den direkten Einsatz des
zugrundeliegenden Notary-Service.
Phase: Nutzung von Cortex zur Speicherung und Visualisierung von
Netflow-Daten
Technologie: Java, Apache Beam, Flink, Kafka, Cortex, Prometheus,
Grafana
Es wurde eine Sink-Transformation für Apache-Beam implementiert, um
Flow-Aggregate in Cortex zu speichern. Hauptprobleme bei der Umsetzung
waren die zeitliche Ordnung von Ergebnissen und
Kardinalitätsbeschränkungen.
Cortex verlangt, dass Samples, die zur gleichen Zeitreihe gehören, zeitlich
geordnet geschrieben werden. Apache-Beam garantiert jedoch keine
zeitliche Ordnung von Ergebnissen. Zur Lösung wurden ein weiteres
Attribut in Zeitreihen eingeführt, das "verspätete" Ergebnisse anderen
Zeitreihen zuordnet. Über dieses Attribut kann bei der späteren Abfrage
aggregiert werden.
Cortex verlangt, dass das Produkt der Attribut-Kardinalitäten einer Metric
nicht zu groß wird. Um dieses Problem zu mildern wurde ein Teil der
Attribute in die Metrik-Namen kodiert.
Technologie: Java, Scala, TypeScript, Spring, Angular, SQL, OAuth 2.0, Jenkins, OpenShift, Kubernetes, H2, MySQL, Gradle,
Apache, mod_auth_openidc
Die Anwendung besteht aus einem Spring-Boot-Backend und Angular-
Clients für Administratoren bzw. Versicherungsverkäufer.
Die Anwendung wurde durch folgende Maßnahmen modernisiert:
• Migration: Spring Boot 1.5 -> 2.0; Angular 2 -> Angular 9
• Deployment: Tomcat 8 -> Kubernetes / OpenShift
• Aufsetzen einer CI-Umgebung: Jenkins-Pipeline innerhalb von
OpenShift; inkl. Backend-Integration-Tests und Chrome-Headless-
Browser-Tests
• OAuth 2.0 Authentifizierung in vorgeschaltetem Apache mit
mod_auth_openidc
Am Code wurden zahlreiche Verbesserungen durchgeführt:
• Verwendung von Springfox zur automatischen REST-API-
Beschreibung. Automatische Angular-Client-Generierung.
• Verbesserung der Validierungslogik durch Einsatz von Cats Validated.
• Verbesserte Testabdeckung durch generierte Test-Fälle (property
based testing; tool: Scala Check).
• Bessere Nutzung von Angular-Mechanismen (insbesondere
vermehrter Einsatz von Services und Dependency-Injection)
• Vermehrter Einsatz von Observables
Apache, mod_auth_openidc
Die Anwendung besteht aus einem Spring-Boot-Backend und Angular-
Clients für Administratoren bzw. Versicherungsverkäufer.
Die Anwendung wurde durch folgende Maßnahmen modernisiert:
• Migration: Spring Boot 1.5 -> 2.0; Angular 2 -> Angular 9
• Deployment: Tomcat 8 -> Kubernetes / OpenShift
• Aufsetzen einer CI-Umgebung: Jenkins-Pipeline innerhalb von
OpenShift; inkl. Backend-Integration-Tests und Chrome-Headless-
Browser-Tests
• OAuth 2.0 Authentifizierung in vorgeschaltetem Apache mit
mod_auth_openidc
Am Code wurden zahlreiche Verbesserungen durchgeführt:
• Verwendung von Springfox zur automatischen REST-API-
Beschreibung. Automatische Angular-Client-Generierung.
• Verbesserung der Validierungslogik durch Einsatz von Cats Validated.
• Verbesserte Testabdeckung durch generierte Test-Fälle (property
based testing; tool: Scala Check).
• Bessere Nutzung von Angular-Mechanismen (insbesondere
vermehrter Einsatz von Services und Dependency-Injection)
• Vermehrter Einsatz von Observables