Über mich
Über 20 Jahre Softwareentwicklung, heute entwerfe und baue ich geschäftskritische Systeme auf AWS. Meist an Systemen, die dabei weiterlaufen müssen. Ich baue selbst um, statt Empfehlungen zu hinterlassen. Ich habe mich in Legacy-Codebases eingearbeitet, die niemand mehr anfassen wollte, Systeme stabilisiert, die unter Last brachen, und manuelle Abläufe durch Services ersetzt, die seitdem ohne Zutun laufen. Ausgewählte Ergebnisse: → −83 % AWS-Kosten: 15.000 € → 2.500 € pro Monat → 3 Mio.+ Requests pro Tag unter 10 ms Latenz (Go-Service) → 6 Mio.+ Nutzer auf einer geschäftskritischen Payment-Plattform → 20 Jahre alte Redaktionsplattform modernisiert, ohne einen Tag Stillstand Typische Einsätze: → Legacy-Anwendung schrittweise modernisieren und nach AWS bringen, ohne Big-Bang-Rewrite → AWS-Kosten analysieren und senken, ohne Abstriche bei der Verfügbarkeit → Backend oder API stabilisieren, die unter Last bricht → AWS-Architektur für ein neues Produkt aufsetzen, mit Terraform von Tag eins Schwerpunkte: AWS-Architektur und -Migration, Legacy-Modernisierung, AWS-Kosten und Ausfallsicherheit, Backend-Entwicklung in Go und PHP, Infrastruktur als Code mit Terraform. Tech-Stack: Go, PHP 8, gRPC, REST, AWS (ECS/Fargate, EKS, EC2, RDS, DynamoDB, S3, CloudFront, SQS, Athena, Glue, IAM) · Terraform, Docker, Kubernetes · PostgreSQL, MySQL, Valkey, CI/CD, Observability Agentic Engineering gehört zum Alltag und macht die Umsetzung deutlich schneller. An der Sache ändert es nichts: Architektur, Qualität und die Entscheidung, was gebaut wird, bleiben meine Verantwortung. 6× AWS Certified, darunter Solutions Architect Professional, Generative AI Developer Professional und Security Specialty. HashiCorp Terraform Associate. Remote aus Geilenkirchen, auf Deutsch und Englisch.
Skills
Expert:in
Fortgeschritten
Grundkenntnisse
Portfolio
Payment-Backend für 6 Mio. Nutzer
AWS-Kosten von 15.000 auf 2.500 Euro im Monat
Revenue-Reporting modernisiert, nach AWS migriert
20 Jahre alte Redaktionsplattform modernisiert
Projekte
Hochverfügbarer Traffic-Attribution-Service für eine globale AdTech-Plattform
Auftraggeber auf Anfrage · IT, Software und Telekommunikation · 500–1.000 Mitarbeiter:innen
Februar 2025 — heute
Die Ausgangssituation
Traffic-Attributierung verteilt über mehrere Abteilungen. Umständlich. Nicht skalierbar.
Die Traffic-Attributierung einer globalen AdTech-Plattform war auf mehrere Abteilungen verteilt. Kein zentrales System, kein einheitlicher Prozess, keine skalierbare Lösung. Mit steigendem Traffic und wachsender Kampagnenzahl wurde das Problem größer.
Media Buyer konnten nur einen Bruchteil der möglichen Kampagnen tracken weil die Attributierung nicht mit dem Wachstum der Plattform mithalten konnte. Jeder Request der Plattform brauchte zusätzliche Attributierungswerte zur besseren Zuordnung des Traffics, aber ein zentraler Service der das zuverlässig und schnell liefern konnte existierte nicht.
Die Herausforderung
Hochverfügbar. Unter 10ms. Kein Single Point of Failure.
Die Anforderungen waren klar und kompromisslos: Der Service muss jeden Request der AdTech-Plattform in unter 10ms mit Attributierungswerten anreichern. Er darf nicht ausfallen weil jeder Ausfall direkt das Kampagnen-Tracking der gesamten Plattform beeinträchtigt.
Gleichzeitig musste der Service global verfügbar sein. Der hauptsächliche Traffic entstand in EU und US, beide Regionen brauchten eine eigenständige, hochverfügbare Instanz. Und die Attributierungswerte mussten über mehrere Cache-Layer konsistent, tageweise vergeben und atomar verwaltet werden.
Mein Ansatz
Zentralisiert. Optimiert. Ausfallsicher.
- Go-Service mit Multi-Region DeploymentGo als Sprache der Wahl wegen der nativen Unterstützung für hohe Concurrency und niedrige Latenz. Service in EU und US deployed, jede Region eigenständig und hochverfügbar. AWS Global Accelerator leitet Traffic zur nächstgelegenen Region, ein ALB verteilt die Last innerhalb der Region. Kein Single Point of Failure, kein Cross-Region Bottleneck.
- Mehrschichtige Cache-ArchitekturDrei Cache-Layer für maximale Performance: In-Memory Cache für häufig abgefragte Werte, Valkey für verteiltes Caching innerhalb einer Region, DynamoDB für persistente tagesweise Vergabe der Attributierungswerte mit atomaren Transaktionen. Der richtige Cache zur richtigen Zeit.
- Attributierungswerte tageweise und atomar verwaltenAttributierungswerte werden tageweise vergeben und über DynamoDB-Transaktionen atomar verwaltet. Keine Race Conditions, keine doppelte Vergabe, keine inkonsistenten Zustände auch unter hoher Last.
- Multi-Tenant-fähige ArchitekturDer Service ist von Grund auf multi-tenant-fähig gebaut. Mehrere Mandanten werden isoliert und sicher auf derselben Infrastruktur betrieben – jeder mit eigenen Attributierungswerten, ohne gegenseitige Beeinflussung.
- Integration in die AdTech-PlattformJeder Request der Plattform wird über den neuen Service angereichert. Nahtlose Integration ohne Änderungen an bestehenden Systemen. Die Plattform bekommt die Attributierungswerte in unter 10ms, Media Buyer können präziser tracken und optimieren.
Das Ergebnis
5x mehr Kampagnen. Unter 10ms. Weltweit verfügbar.
- 5x mehr Kampagnen trackbarMedia Buyer können fünfmal mehr Kampagnen tracken als zuvor.
- <10ms Latenz pro RequestAuch unter Last zuverlässig unter 10ms durch mehrschichtige Cache-Architektur.
- 3 Mio.+ Requests täglichZuverlässig verarbeitet, hochverfügbar in EU und US, kein Produktionsausfall seit Launch.
Ein verteilter, manueller Prozess über mehrere Abteilungen wurde durch einen zentralen hochverfügbaren Go-Service ersetzt. Media Buyer können fünfmal mehr Kampagnen tracken als zuvor. Jeder Request der Plattform bekommt in unter 10ms die Attributierungswerte die für präzises Kampagnen-Tracking benötigt werden. Der Service läuft hochverfügbar in EU und US, skaliert automatisch mit dem Traffic mit und hat seit dem Launch keinen Produktionsausfall verursacht.
Revenue-Infrastruktur für eine globale AdTech-Plattform. Von Legacy zu Cloud-native in 12 Monaten.
Auftraggeber auf Anfrage · IT, Software und Telekommunikation · 500–1.000 Mitarbeiter:innen
Januar 2023 — Januar 2024
Die Ausgangssituation
Neues Team. Alter Code. Kein Netz.
Ein neu gegründetes Team wurde aus einem bestehenden großen Team ausgegründet und übernahm die Verantwortung für den PHP-Legacy-Code des Revenue-Reportings. Der Code lief produktiv, aber er war über Jahre gewachsen – ohne Testabdeckung, ohne dokumentierte Infrastruktur, ohne Infrastructure as Code.
Revenue-Feeds von externen Partnern wurden täglich importiert und normalisiert, Kampagnen-Reports an interne Teams und externe Partner ausgeliefert. Das System musste täglich korrekte Daten liefern – in einem Umfeld wo Fehler unmittelbare geschäftliche Konsequenzen haben. Jede Änderung war ein Risiko weil niemand wusste was sie auslösen würde.
Die Herausforderung
Modernisieren bei laufendem Betrieb.
Keine Testabdeckung bedeutet keine Sicherheit. Jede Änderung am Legacy-Code war ein Blindflug. Incidents passierten regelmäßig, die Ursachen waren schwer zu finden, die Fixes riskant.
Gleichzeitig gab es keine Infrastructure as Code. Die AWS-Infrastruktur war manuell konfiguriert, nicht dokumentiert, nicht reproduzierbar. Was in der Cloud lief war nur dem bekannt der es aufgesetzt hatte. Die Aufgabe war das System zu modernisieren, auf PHP 8 zu migrieren, in eine saubere AWS-Umgebung zu überführen und gleichzeitig täglich korrekte Revenue-Daten zu liefern. Zwölf Monate, laufender Betrieb, kein Ausfall erlaubt.
Mein Ansatz
Verstehen. Absichern. Migrieren.
- Codebase verstehen und absichernLegacy-Code analysiert und Testabdeckung von 0 auf über 90% aufgebaut. PHPUnit für Unit Tests, Codeception für Acceptance Tests die das Systemverhalten gegen externe Partner absichern. Erst wenn Änderungen sicher sind kann man modernisieren.
- PHP 8 MigrationGesamten Legacy-Code auf PHP 8 migriert inklusive Anpassung aller veralteten Komponenten. Symfony als Framework-Basis modernisiert. Schrittweise, kontrolliert, mit Testabdeckung als Sicherheitsnetz.
- Cloud-Migration auf AWSMigration in eine skalierbare AWS-Umgebung: ECS für containerisierte Services, EC2 für compute-intensive Workloads, SQS und SNS für asynchrone Verarbeitung, RDS für relationale Daten, Athena und Glue für analytische Abfragen und Datentransformation. Gesamte Infrastruktur in Terraform als Code, versioniert und reproduzierbar. Nichts mehr manuell konfiguriert.
- Estimates Per Click Berechnung für Media BuyerEstimates-Per-Click-Berechnung als eigenständiger Service entwickelt. Die Werte werden täglich berechnet und als Export bereitgestellt damit Media Buyer ihre Kampagnen datenbasiert optimieren können. Budget in hochperformante Channels lenken, schwache Channels reduzieren. Direkte Verbindung zwischen technischer Infrastruktur und messbarem geschäftlichem Outcome.
- Datenverfügbarkeit über AWS DataZoneRevenue-Daten werden über AWS DataZone intern allen Abteilungen bereitgestellt. Kein manuelles Verteilen von Reports mehr, kein Datensilo. Jede Abteilung hat Zugriff auf die Daten die sie braucht.
Das Ergebnis
Stabiler. Schneller. Für alle verfügbar.
- –90% IncidentsTestabdeckung von 0 auf über 90% erklärt warum die Incidents um 90% gesunken sind.
- 90%+ TestabdeckungPHPUnit für Unit Tests, Codeception für Acceptance Tests – das Systemverhalten ist vollständig abgesichert.
- 100% Infrastructure as CodeGesamte AWS-Infrastruktur in Terraform – versioniert, reproduzierbar, kein manuelles Klicken mehr.
Ein gewachsener PHP-Legacy-Code ohne Tests, ohne dokumentierte Infrastruktur und mit regelmäßigen Incidents in eine moderne, stabile AWS-Umgebung überführt. Die Testabdeckung von 0 auf über 90% erklärt warum die Incidents um 90% gesunken sind. Die Infrastruktur ist vollständig als Code versioniert. Estimates-Per-Click-Werte werden täglich berechnet und stehen Media Buyern für die Kampagnenoptimierung zur Verfügung. Revenue-Daten stehen über AWS DataZone allen Abteilungen zur Verfügung. Eine Modernisierung bei laufendem Betrieb in einem neunstelligen Umsatzumfeld ohne einen einzigen Tag Ausfall.
Payment-API für 6 Millionen Nutzer. Stabilisiert, skaliert, geliefert.
Auftraggeber auf Anfrage · IT, Software und Telekommunikation · 1.000+ Mitarbeiter:innen
Mai 2020 — Dezember 2023
Die Ausgangssituation
Ein System das nicht mehr skalierte.
Ein internationales SaaS-Produkt mit mehreren Millionen Kunden betrieb eine Payment-API die ursprünglich für eine andere Größenordnung gebaut worden war. Das System lief, aber jede Lastspitze war ein Risiko. Neue Payment-Provider-Integrationen dauerten wochenlang. Die Codebasis war gewachsen, die Abhängigkeiten unübersichtlich, das Deployment ein manueller Prozess der Nerven kostete.
Gleichzeitig sollte das Produkt international skalieren. Neue Märkte, neue Payment-Provider, neue Anforderungen. Das bestehende System war dafür nicht gebaut.
Die Herausforderung
Modernisierung bei laufendem Betrieb.
Ein Komplettrewrite war keine Option. Das System verarbeitete täglich tausende Transaktionen, ein Ausfall hätte direkten Umsatzverlust bedeutet. Gleichzeitig musste die Architektur grundlegend modernisiert werden um die Skalierungsziele zu erreichen.
Die Herausforderung war also nicht nur technisch sondern auch organisatorisch: Modernisierung bei laufendem Betrieb, neue Funktionalität parallel zum stabilen Altbetrieb, und das über mehrere Jahre hinweg ohne das System zu destabilisieren.
Mein Ansatz
Stabilisieren. Parallel aufbauen. Sauber integrieren.
- Legacy-Backend stabilisierenTestabdeckung eingeführt, kritische Abhängigkeiten dokumentiert, das Deployment automatisiert. Erst wenn das System stabil läuft kann man es sinnvoll weiterentwickeln.
- Microservice-Architektur in GoNicht als Ersatz auf einmal, sondern schrittweise. Neue Services in Go, bestehende PHP-Komponenten integriert über gRPC. Kubernetes auf AWS für die Orchestrierung, CI/CD-Pipelines mit GitHub und GitLab für automatisierte Deployments.
- Payment-Provider-IntegrationStripe, Braintree, Adyen, Paymentwall, Chargebee und Amazon Pay über saubere API-Schichten abstrahiert. Jeder Provider ein eigener Service – austauschbar ohne das Gesamtsystem zu berühren.
- Observability von Anfang anGrafana, Prometheus, CloudWatch und Sentry für Monitoring – damit Probleme sichtbar werden bevor sie zu Ausfällen werden.
Das Ergebnis
Stabil. Skalierbar. Internationalisierbar.
- 6 Mio.+ NutzerDas System trägt heute die volle Last stabil und zuverlässig.
- –15 % Payment-AbbrücheDurch stabilisierte und optimierte Payment-Infrastruktur.
- –75 % DeploymentzeitDurch vollständig automatisierte und optimierte CI/CD-Pipelines.
Eine nachhaltig skalierbare, hochverfügbare Payment-Infrastruktur die schnelles internationales Wachstum ermöglicht. Das System läuft stabil, neue Payment-Provider können in Tagen statt Wochen integriert werden, und das Entwicklungsteam kann Änderungen vornehmen ohne Angst vor unbekannten Seiteneffekten.
Berufserfahrungen
Freiberuflicher Lead Developer & Solutions Architect · Vollzeit
Selbstständig
Dezember 2013 — heute
Architekturberatung und technische Umsetzung bei der Migration geschäftskritischer Legacy-Systeme in hochverfügbare Go-Umgebungen auf AWS. Fokus auf die Modernisierung monolithischer Strukturen ohne Service-Unterbrechung (Zero Downtime) sowie die Skalierung von Cloud-Infrastrukturen unter Hochlast. Sicherstellung von Systemsicherheit, Performance-Optimierung und langfristiger Wartbarkeit.
Staff Software Engineer · Vollzeit
Kape Technologies · IT, Software und Telekommunikation · 1.000+ Mitarbeiter:innen
November 2019 — Dezember 2023
Skalierung und Modernisierung einer globalen VPN-SaaS-Plattform für Millionen von Nutzern. Reduzierung der Time-to-Market für neue Features durch eine entkoppelte, skalierbare Systemarchitektur auf AWS. Steigerung der operativen Effizienz durch die Einführung standardisierter Cloud-Native Patterns und hochverfügbarer Services.
Co-Founder · Teilzeit
Corodo GmbH · IT, Software und Telekommunikation · bis zu 10 Mitarbeiter:innen
Januar 2013 — Januar 2015
Aufbau und technische Leitung einer SaaS-Plattform für verschlüsseltes Passwort-Management auf Bare-Metal-Infrastruktur. Entwurf und Umsetzung einer hochsicheren Architektur mit Fokus auf Ende-zu-Ende-Verschlüsselung.
