freiberufler Senior Full-Stack-Entwickler / Architekt (Java, Scala, TypeScript, Spring, AWS, Akka, ZIO, JEE, SQL, NoSQL, Web- Technologien, XML-Technologien) auf freelance.de

Senior Full-Stack-Entwickler / Architekt (Java, Scala, TypeScript, Spring, AWS, Akka, ZIO, JEE, SQL, NoSQL, Web- Technologien,...

zuletzt online vor 3 Tagen
  • auf Anfrage
  • 71334 Waiblingen
  • Umkreis (bis 200 km)
  • de  |  en
  • 05.05.2025

Kurzvorstellung

Meine Hauptstärken liegen im Design und in der Umsetzung von Software-Lösungen. Als Architekt kann ich den Entwurfsprozess begleiten und als Senior-Entwickler an der Umsetzung mitwirken. Als DevOps kann ich den Betrieb begleiten.

Qualifikationen

  • Amazon Web Services (AWS)3 J.
  • DevOps
  • Full Stack Developer
  • Java (allg.)12 J.
  • Node.Js
  • Scala8 J.
  • Software Architecture
  • Softwareentwickler
  • Spring Framework10 J.
  • Typescript3 J.

Projekt‐ & Berufserfahrung

Software- und Infrastruktur-Entwickler
Otto, Hamburg
1/2022 – 4/2025 (3 Jahre, 4 Monate)
IT & Entwicklung
Tätigkeitszeitraum

1/2022 – 4/2025

Tätigkeitsbeschreibung

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. Entwicklung / Wartung des Infrastruktur-Codes

Eine selbstgeschriebenes Anwendungsframework zum Aufsetzen der Infrastruktur wurde abgelöst. Es wurde ein neues Anwendungsframework entworfen und implementiert. Das neue Anwendungsframework basiert auf dem AWS Cloud Development Kit (CDK) und ist in TypeScript geschrieben.

3. Weiterentwicklung & Betrieb der CI/CD-Plattform sowie des Monitorings

Als CI/CD-Plattform dient Jenkins. Jobs und Pipelines werden dynamisch generiert. Mit der GitHub-GraphQL-API werden Repositories ermittelt und pro Repository datengetrieben entsprechende Jobs & Pipelines erzeugt. Jobs werden mit der Jenkins-Job-DSL in Groovy definiert. Die Jobs rufen u.a. TypeScript-Skripte auf, die Definitionen aus dem Infrastruktur-Code importieren.

Besonders wichtige CloudWatch Alarme können mit Meta-Informationen wie z.B. ihren Auswirkungen und Handlungsanweisungen angereichert werden. Solche Alarme und ihre Meta-Daten werden in einem gesonderten Überwachungssystem registriert. Die Alarm-Stati werden periodisch ermittelt und an das Überwachungssystem gemeldet.

Fachliche und technische CloudWatch-Metriken sind in Grafana-Dashboards zusammengefasst. Die Dashboards geben einen Überblick über die wichtigsten Vorgänge im Gesamtsystem.

Eingesetzte Qualifikationen

Apache Kafka, Amazon Web Services (AWS), Cloud (allg.), Java (allg.), Jenkins, Scala, Spring Framework, Typescript

Weiterentwicklung und Wartung eine Netzwerk-Management- Systems
OpenNMS, South Carolina
8/2020 – 12/2021 (1 Jahr, 5 Monate)
IT & Entwicklung
Tätigkeitszeitraum

8/2020 – 12/2021

Tätigkeitsbeschreibung

Phase: Weiterentwicklung des Kernels und der Konfiguration eines IoT-Devices

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

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.

Phase: Nutzung von Cortex zur Speicherung und Visualisierung von Netflow-Daten

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.

Eingesetzte Qualifikationen

Microsoft Azure, Apache Flink, Apache Kafka, Docker, Elasticsearch, Java (allg.), Kotlin

KFZ-Versicherungsanwendung
Mercedes-Benz-Bank, Stuttgart
7/2019 – 6/2020 (1 Jahr)
Banken
Tätigkeitszeitraum

7/2019 – 6/2020

Tätigkeitsbeschreibung

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; SonarQube-Integration
* 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

Eingesetzte Qualifikationen

Gradle, Java (allg.), Jenkins, Scala, Spring Framework, Typescript, Cloud (allg.), Angular, Kubernetes

Mitarbeit an einer Big-Data-Analytics Plattform
USU, Karlsruhe
10/2018 – 6/2019 (9 Monate)
IT & Entwicklung
Tätigkeitszeitraum

10/2018 – 6/2019

Tätigkeitsbeschreibung

Während des Einsatzes wurden einzelne Features full-stack bearbeitet (Frontend und Backend). Dabei wurden bestehende Features überarbeitet und neue Features entworfen und entwickelt. Die Frontend-Entwicklung fand mit TypeScript, ScalaJS und Angular statt. In der Backend-Entwicklung kam hauptsächlich Scala und etwas Go zum Einsatz. Eine weiterer wichtiger Beitrag war die Einführung von Integration-Tests, in denen Plattform-Bestandteile in lokalen Kubernetes Clustern deployt und getestet werden. Dazu wurde Kubernetes in Docker (kind) innerhalb von Gitlab-CI eingesetzt.

Eingesetzte Qualifikationen

Docker, Java (allg.), Scala, Typescript, Angular, Kubernetes

Entwicklungen und Evaluierungen im Bereich des Internet der Dinge (IoT)
Bosch, Waiblingen
4/2015 – 9/2018 (3 Jahre, 6 Monate)
IT & Entwicklung
Tätigkeitszeitraum

4/2015 – 9/2018

Tätigkeitsbeschreibung

Unterprojekt: Proof of Concept von Authorisierungsszenarien im IoT-Umfeld

Es wurden Nutzungsszenarien für EBikes untersucht. Ein Fahrradbesitzer authorisiert mittels "User Managed Access" (UMA) eine andere Person zur Nutzung des Fahrrads. Das Fahrrad wird mittels OAuth 2.0 "Device Flow" authorisiert, auf Besitzer- und Nutzer-Daten zuzugreifen. Verschiedene Nutzer authorisieren sich mittels UMA gegenseitig, auf bestimmte Daten (z.B. aufgezeichnete Fahrten) zuzugreifen. Alle User-Interfaces wurden als "Single-Page Application" mittels Scala.js umgesetzt. Das Backend (der Resource-Server) wurde mittels Akka-HTTP implementiert. Die Kommunikation erfolgte mittels JSON und der circe-JSON-Bibliothek, wodurch dieselben Datenmodelle sowohl in den User-Interfaces als auch im Backend genutzt werden konnten.

Unterprojekt: Entwicklung eines Handshake-Endpunktes für IoT Devices und eines zug. Konfigurationstools

Mittels eines 2-Schritt-Handshakes wird ein "shared secret" zwischen IoT-Devices und einem Backend etabliert und beide Seiten zugleich authentisiert. Der Handshake ist an den Diffie-Hellman Key-Exchange-Algorithmus angelehnt. Da es sich um "Constrained Devices" handelt und um Bandbreite zu sparen, werden CVCs und EdDSA-Schlüssel verwendet.

Unterprojekt: Bewertung möglicher Protokoll-Stacks, Kommunikationspatterns, Kommunikationssetups und System-Architekturen für IoT-Devices

Die verschiedenen Protokoll-Stacks wurden anhand der folgenden Kriterien bewertet: Direktheit, Sicherheit, Zustandslosigkeit, Cloud-Support, Reifegrad, Kosten-Effizienz, Robustheit und geeignete Nachrichtengrößen. Bei den Kommunikationspatterns wurde untersucht, wie mit Devices kommuniziert werden kann, die die meiste Zeit nicht erreichbar sind. Dabei wurde das Konzept "Digital Twin" beleuchtet. Die Bewertung des Kommunikationssetup befasste sich damit, wie eine sichere Kommunikation zwischen Devices und Backend hergestellt werden kann. Hier wurden "pre-shared keys" bei denen Devices vorab im System registriert werden müssen, mit der Verwendung von Zertifikatsketten verglichen. Schließlich wurde eine Software-Architektur aufgestellt, die dem Konzept des "Digital Twin" Rechnung trägt.

Unterprojekt: Anbindung von Devices an das Internet der Dinge (IoT)

Es wurde ein Backend zur Anbindung von Devices entwickelt, die Status-Informationen senden (Telemetry) und Befehle entgegennehmen können (Control). Die Devices sind nur zu bestimmten Zeitpunkten erreichbar. Alle Events werden aufgezeichnet, um daraus ein Bild vom momentanen Device Zustand ableiten zu können. Das Backend ist in Form eines Flussgraphen implementiert, an das die Ein- und Ausgaben als Daten-Sourcen bzw. -Senken angebunden sind. Backpressure verhindert, dass das System überladen werden kann. Das Backend kann in einer geclusterten Umgebung laufen, da zusätzliche Instanzen ohne Datenverlust jederzeit gestartet und wieder beendet werden können. Die Implementierung des Backend basiert auf Akka Streams und Aktoren. Außerdem kommen die Bibliotheken Shapeless, Cats und Monocle zum Einsatz.

Eingesetzte Qualifikationen

Java (allg.), Cloud (allg.), Docker, Mongodb, Scala, Spring Framework

Weiterentwicklung, Wartung und Betrieb einer Web-Anwendung und der dahinter liegenden Services
1 & 1 Internet AG, Karlsruhe
9/2010 – 12/2012 (2 Jahre, 4 Monate)
IT & Entwicklung
Tätigkeitszeitraum

9/2010 – 12/2012

Tätigkeitsbeschreibung

1. Migration einer Web-Anwenung; 8 Monate (2010/09 - 2011/04)
2. Wartung, Weiterentwicklung und Performance-Optimierung einer Web-Anwendung; 7 Monate (2011/05 - 2011/11)
3. Neu- und Weiterentwicklung von Micro-Services; 13 Monate (2011/12 - 2012/12)

Eingesetzte Qualifikationen

Apache HTTP Server, Apache Maven, Apache Tomcat, Hibernate (Framework), J2EE, Java (allg.), Spring Framework, XSLT (XSL Transformation)

Zertifikate

iSAQB Certified Professional for Sofware Architecture - Foundation Level (CPSA-F)
Integrata AG
2014

Ausbildung

Dr. rer. nat.
Promotion im Bereich Maschinensehen
Hochschule Karlsruhe (TH)
1997
Karlsruhe
Diplom-Informatiker
Diplom
Hochschule Karlsruhe (TH)
1994
Karlsruhe

Über mich

In 25 Jahren habe ich in vielen Projekt mitgewirkt. Dabei habe ich in zahlreichen Technologien Erfahrungen gesammelt. Ich kann mich schnell in komplexe Systeme und neue Bereiche einarbeiten. Als DevOps war ich bereits am Betrieb mehrerer sehr großer Systeme beteiligt.

Weitere Kenntnisse

Top-Skills: Java, Scala, TypeScript, Spring, AWS, CDK, Akka, ZIO, Node.js, Docker
Weitere Skills: Bash, JavaScript, XPath, XSLT, XML Schema

Akka
Angular
Apache HTTP
Apache Beam
AWS
AWS CDK (Cloud Development Kit)
CloudFoundry
CircleCI
Cortex
Docker
ElasticSearch
Flink
Gatling
Gitlab-CI
Gradle
Grafana
Helm
Jenkins
Kafka
Karaf
Keycloak
Kibana
Kubernetes
Logstash
Maven
Oak
OAuth
OpenFaas
OpenID Connect
OpenShift
Play
Prometheus
RabbitMQ
SBT
SonarQube
Spring
Streaming
ZIO

Persönliche Daten

Sprache
  • Deutsch (Muttersprache)
  • Englisch (Fließend)
Reisebereitschaft
Umkreis (bis 200 km)
Home-Office
bevorzugt
Profilaufrufe
53
Alter
57
Berufserfahrung
27 Jahre und 7 Monate (seit 10/1997)

Kontaktdaten

Nur registrierte PREMIUM-Mitglieder von freelance.de können Kontaktdaten einsehen.

Jetzt Mitglied werden