Advanced Unit-Test-Schulung für eine große Gruppe von
Entwicklern mit unterschiedlicher Programmiererfahrung
Schwerpunkte:
03/2013 - 05/2013, Consultant und Software Architect, Telekommunikationsbranche
Beschreibung:
* Entwicklung eines neuen Content Storage Systems für die Verwaltung einer großen Zahl von Videodateien
* Ziel ist es, die operativen Kosten (OPEX) zu minimieren, z.B. durch:
** verbesserte Dateiablage im Hinblick auf das Erstellen von Backups
** automatische Auswertung von Zugriffsstatistiken auf Dateien, so dass basierend auf statistischen Analysen Dateien von teuren, hochverfügbaren Storage Backends auf kostengünstigere Backends transferiert werden können, sollten diese nicht mehr stark nachgefragt werden (umgekehrte Operationen sind natürlich ebenfalls möglich)
** strenge Einhaltung von Konsistenzen zwischen vorhandenen Dateien und Metadaten (Health- und Availability-Checks)
** Einbindung von externen Datenspeichern (z.B. Amazon S3)
* Nutzung einer Couchbase-Datenbank zur Verwaltung der Metadaten einer Datei
Technologien:
* Java 7
* EclipseRT Virgo 3.6
* Apache Tomcat AS 7
* Spring 3.2
* Couchbase 2
* Hazelcast 2.2
* Subversion
* Apache Maven 3
* Eclipse IDE 4.x
01/2012 - 08/2013, Consultant und Head of Software Architecture, Telekommunikationsbranche
Beschreibung:
* Leitung einer autonomen Abteilung zur Verbesserung der Softwaresysteme des Unternehmens
* Initiierung neuer Entwicklungsprojekte basierend auf Analysen der bestehenden Software
* Beratung der Abteilungsleiter und Teamleiter aus allen Entwicklungsbereichen
* Einsatz als Krisenmanager, wenn Performance-Probleme oder Laufzeitfehler in Java-Applikationen auftreten
* Code-Reviews
* Erstellen technischer Angebotsunterlagen im Rahmen von Ausschreibungen
* Beratung des CTOs in regelmäßigen Stabsmeetings
* Auszug aus Beratungsprojekten:
** Untersuchung von Firefox OS im Hinblick auf das Hinzufügen neuer Payment Provider
** Video-on-Demand und Mobile TV in mobilen Netzwerken
** Performance-Optimierungen für Bezahlvorgänge über die Mobilfunksysteme im Google Play Store
Technologien (bisher):
* alle Java-Technologien
* Parstream
* MarkLogic
10/2011, Entwickler, Leben braucht Bewegung
Beschreibung:
* Aufbau einer neuen Webseite für das Körperorientierte Bewusstseinstraining nach Jost
* Neben dem Erstellen der Webseite wurde auch das Hosting und der Betrieb realisiert
* Umsetzung eines Backup-Konzepts mittels Amazon S3
* http://www.lebenbrauchtbewegung.de
Technologien:
* PHP
* Wordpress
* Apache Webserver 2.4
* MySQL 5 Datenbank
04/2009 - 06/2012, Technischer Projektleiter & Lead Architect, Telekommunikationsbranche
Beschreibung:
* Technischer Projektleiter (inkl. zeitweiser Projektleiter der Produktentwicklung), Teamleiter und Hauptentwickler (nahezu 40% der Codebasis (ca. 400.000 LOC) implementiert) von net-mobiles next generation service platform ("PLANET")
* Ziel des Projektes war es, alle Services der net-mobile AG unter einer vereinheitlichten, homogenen Schnittstelle anzubieten. Dazu mussten mehrere APIs komplett neu entwickelt werden, inkl. Optimierung bestehender Prozesse (Kaufabwicklung, Content Delivery, etc.). Gleichzeitig waren die Services über mehrere Standorte verteilt und verschiedenste Technologien wurden eingesetzt (unterschiedliche Datenbanken, Applikationsserver, Frameworks, usw.).
* Kernanforderungen an die neue Plattform:
** musste in verschiedenen Rechenzentren weltweit eingesetzt werden können
** weitere bzw. neue Dienste sollten sich leicht integrieren lassen
** gängige Web-Standards sollten proprietäre Protokolle ersetzen (z.B. REST-Interfaces, die XML- und JSON-Dokumente austauschen, SOAP, Java RMI)
** Monitoring- und KPI-Daten sollten für Reporting-Anforderungen gesammelt werden (z.B. um request-basierte Abrechnungen zu ermöglichen)
** verschiedene Content-Plattformen mussten so integriert werden, dass den Frontend-Entwicklern für das Erstellen der Web- und WAP-Portale eine homogenisierte Sicht auf den Content und die Auslieferungsmechanismen zur Verfügung stand (langfristig: Migration der bestehenden Daten in eine neue, vereinheitlichte Datenbank)
* Realisiert wurde eine modularisierte Anwendungsplattform, die via OSGi zur Laufzeit um neue Dienste erweitert werden konnte. Alle Funktionen wurden in Form von Plugins entwickelt, ähnlich dem Entwicklungsmodell der Eclipse IDE.
Technologien:
* Java 6 und 7
* OSGi R4 (Apache Felix und Eclipse Equinox als OSGi runtime)
* Spring dmServer 2.0
* EclipseRT Virgo 3.0 und 3.1
* Apache Tomcat AS 6 und 7
* Spring 3.0 und 3.1
* Spring Dynamic Modules 1.1 und 1.2
* EclipseLink 2.2 und 2.3
* JPA 2
* PostgresQL 9.0 bis 9.2
* Sybase ASE 12.5
* Hazelcast 1.8 bis 2.2
* Apache Jackrabbit 2.2 bis 2.5
* Apache Solr 4.0 bis 4.3
* JBoss Netty 3
* Subversion
* Apache Maven 2 und 3
* Eclipse IDE 4.x
02/2009 - 05/2009, Technischer Projektleiter, Teamleiter und Consultant, Telekommunikationsbranche
Beschreibung:
* Entwicklung einer Möglichkeit, Content aus verschiedenen Backend-Plattformen für die Frontend-Entwickler zugänglich zu machen
* Projektleitung eines kritischen Portals (WAP und Web) unter engen Zeitvorgaben
* Abstimmung von Anforderungen mit dem Kunden und Begleitung des Go-Live
Technologien:
* Java 6
* Spring 2.5
* Apache Tomcat AS 6
* Velocity 1.5
* Hibernate 3.2
* Subversion
* Apache Maven 2
* Eclipse IDE 3.x
12/2008 - 01/2009, Consultant und Performance-Specialist, Telekommunikationsbranche
Beschreibung:
* Optimierung der Vodafone-Portale, die von einem Wettbewerber entwickelt wurden und durch dessen Aufkauf nun Teil der Softwarelandschaft des Unternehmens waren
* Analyse und Refactoring von ca. 250.000 LOC unbekannter Software und unterschiedlicher Software-Stacks
* Ad-hoc-Entwicklung eines Aspekts, der es erlaubte, ohne Code-Änderungen Performance-Metriken von Java-Anwendungen zu ermitteln und diese dadurch transparenter zu machen
* Code Hot-Spots konnten entdeckt werden, so dass die Rolle der verschiedenen Schichten der Anwendung (Frontend, Backend und Datenbank) sichtbar wurde
* Ad-hoc-Entwicklung einer Crawler-Software, die die Portale dynamisch unter Last setzen konnte. Eine Eigenentwicklung war notwendig, da das generierte Markup ein Vodafone-spezifischer XML-Dialekt war, für den es keine Crawler-Software gab
* Die Crawler-Software wird heute noch nach Modifikationen von der QA-Abteilung genutzt
* Der Crawler war des Weiteren in der Lage, seine Ermittlungsergebnisse in eine Datenbank zu schreiben und konnte während der Auswertung um Log-Informationen ergänzt werden. Durch den Einsatz der Groovy-Sprache konnten die Log-Dateien sehr flexibel transformiert werden, so dass eine Korrelation der Ereignisse eines Requests sichtbar wurden
* Garbage-Collector-Tuning aller Anwendungen des Software-Stacks
Technologien:
* Java 5 und 6
* Apache Tomcat AS 5.5 und 6
* JBoss AS 4.0 und 4.2
* Java Enterprise Edition (JEE)
* Sybase ASE 12.5
* Apache Cocoon 2.1
* XSLT-Transformator (Xalan)
* AspectJ 1.6
* Groovy
* Subversion
* Apache Ant
* Eclipse IDE 3.x
11/2008, Consultant und Entwickler, Telekommunikationsbranche
Beschreibung:
* Entwicklung eines verbesserten Mechanismus zum Erstellen von Portalanwendungen
* Ziel war es, Entwicklern die Möglichkeit zu geben, Geschäftslogik in die Java-Controller-Schicht auszulagern und die Portal-Templates auf die reine View-Logik zu beschränken
* Gleichzeitig sollten die Entwickler ohne einen Neustart der Server-Anwendung in der Lage sein, Änderungen an den Controllern zu testen
* Dies mündete in der Entwicklung eines Frameworks zum Umsetzen dynamischer Controller, die in Java mittels Eclipse geschrieben werden konnten und direkt nach dem Abspeichern in die Anwendung des Servers nachgeladen wurden
* Für das Kompilieren der Controller-Klassen sowie das dynamische Nachladen des Codes wurde der Eclipse JDT-Compiler verwendet
Technologien:
* Java 6
* Apache Tomcat AS 6 und 7
* Spring 2.5
* Eclipse JDT Compiler 3.x
* Subversion
* Apache Maven 2
* Eclipse IDE 3.x
08/2008 - 10/2008, Architekt und Consultant, Telekommunikationsbranche
Beschreibung:
* Consulting beim Aufbau einer neuen Routing-Plattform für SMS- und MMS-Nachrichten
* Kernanforderungen waren ein hoher Durchsatz der Nachrichten aufgrund bekannter und erwarteter hoher Last, sowie flexible Routing-Konfigurationen basierend auf Input- und Output-Kanälen
* Routing-Tabellen mussten im laufenden Betrieb erweiterbar sein, da ein Herunterfahren der Anwendung nicht toleriert werden konnte
* Evaluation und Prototypen-Implementierung von BPM-Lösungen für die Realisierung der Routing-Tabellen sowie diverser JMS-Provider für den Nachrichten-Transport
Technologien:
* Java 6
* Apache ActiveMQ 5
* JBoss Messaging
* jBPM 3.x
* Mule ESB
* Apache Camel
* Apache ServiceMix
07/2008, Entwickler, Telekommunikationsbranche
Beschreibung:
* Entwicklung einer Überwachungssoftware für JVM-Anwendungen mit dem Ziel, bevorstehende Out-Of-Memory-Situationen rechtzeitig vorherzusagen und entsprechende Warnungen zu versenden.
* Warnungen konnten über Plug-Ins an verschiedene Endpunkte verschickt werden, z.B. via JMX, E-Mail, XMPP oder an ein Nabaztag-Device
* Die Erkennungslogik arbeitete mittels statistischer Regressionsanalyse der Garbage Collector-Zeiten der JVM
* Mittels vieler von außen konfigurierbarer Parameter konnte der Monitor in der Anfangszeit justiert werden, so dass die Vorhersagwahrscheinlichkeit mehr als 90% betrug
* Die Software nutzte die JMX-Mechanismen einer JVM, um die benötigten Daten abzufragen. Dieses nicht-invasive Verfahren erlaubte es, den Monitor mit jedem Application Server bzw. jeder Client-Anwendung zu nutzen
Technologien:
* Java 6
* JMX
05/2008 - 07/2008, Technischer Projektleiter & Hauptentwickler, Telekommunikationsbranche
Beschreibung:
* Entwicklung eines verteilten Systems zur Speicherung von Kreditkartendaten, die PCI-DSS-konform erfolgen musste
* Um das System so unanfällig für Angriffe von außen zu machen, wie möglich, wurde die Applikation auf zwei Systeme aufgeteilt, die über Queues miteinander kommunizierten. So konnte der Server, der die sensitiven Daten speicherte so konfiguriert werden, dass der Netzwerkverkehr nur von innen nach außen erfolgen konnte
* Alle Daten wurden mit Hilfe eines 256-Bit-AES-Schlüssels verschlüsselt in der Datenbank abgelegt. Gleichzeitig gab es keine Möglichkeit, dass diese Daten den Server wieder verlassen konnten, da selbst Abfrageoperationen die Daten nur in der PCI-DSS-konformen Variante zurückgaben (z.B. nur die letzten 4 Ziffern der Kreditkartennummer)
* Performance-Optimierung der Kommunikation der verschiedenen Teilapplikationen vervierfachte den Datendurchsatz, so dass trotz des Queue-Ansatzes die Client-Anwendungen innerhalb von unter 200ms eine Operation durchführen konnten
* Entwicklung einer Client-Bibliothek, die den eigentlich asynchronen Workflow der Anwendung über einen synchronen Wrapper gekapselt hat, so dass es für die Client-Anwendungen so aussah, als wären alle Operationen synchron.
Technologien:
* Java 6
* Apache Tomcat AS 6
* Spring 2.5
* PostgresQL 8.3
* Bouncycastle (Java Crypto-Bibliothek)
* Apache Commons HTTPClient 3.1
* Subversion
* Apache Maven 2
* Eclipse IDE 3.x
02/2008 - 04/2008, Technischer Projektleiter & Hauptentwickler, Telekommunikationsbranche
Beschreibung:
* Design und Implementierung eines neuen Content-Import-Servers, der in der Lage ist, von unterschiedlichen Quellen Daten entgegenzunehmen, zu normalisieren und anschließend in die Content-Datenbank und das Content Delivery Network des Unternehmens einzufügen
* Hauptantrieb war die Verkürzung der Entwicklungszeit für die Einbindung neuer Content Provider, die Erhöhung der Zuverlässigkeit beim Import (weniger Fehlimporte, aussagekräftigere Fehlermeldungen) sowie ein verbessertes Reporting
* Nutzung einer SEDA-Architektur und des OSGi-Frameworks, um flexible Konfigurationen eines Content-Items zu realisieren, ohne Logik zu duplizieren
* Um die Konsistenz der beteiligten Datenbanken sicherzustellen, wurde auf einen verteilten Transaktionsmechanismus mittels JTA zurückgegriffen, der auch den eingesetzten Message-Broker umfasste
* Da sowohl Apache ActiveMQ als auch JBoss Messaging Fehler im Umgang mit JTA-Transaktionen zeigten, wurde ein eigener Message-Broker implementiert
Technologien:
* Java 6
* Spring dmServer 1.0
* OSGi R4
* Apache ActiveMQ 5
* Bitronix Transaction Manager
* Subversion
* Apache Maven 2
* Eclipse IDE 3.x
12/2007 - 01/2008, Hauptentwickler, Telekommunikationsbranche
Beschreibung:
* Refactoring der eingesetzten Content Plattform, um projekt- und produkt-bezogene Erweiterungen schneller implementieren zu können
* Eine gewachsene, monolithische Anwendung wurde in mehrere Teilprojekte zerlegt, die einzeln weiterverwendet werden konnten
* Gleichzeitig wurde der Build-Prozess mittels Maven 2 so verbessert, dass neue Entwickler schneller in die Anwendungsentwicklung integriert werden konnten
* Code-Reviews wurden mittels Cobertura und FindBugs durchgeführt, um Schwachstellen aufzudecken und zu beheben
Technologien:
* Java 6
* Apache Tomcat AS 6
* Spring 2.0
* PostgresQL 8.1
* Cobertura
* FindBugs
* Luntbuild (CI-Server)
* Subversion
* Apache Maven 2
* Eclipse IDE 3.x
11/2007, Consultant & Entwickler, Telekommunikationsbranche
Beschreibung:
* Einführung eines neuen Entwicklungsprozesses auf Basis von Apache Maven 2
* Evaluierung mehrerer Repository-Anwendungen (JFrog Artifactory, Apache Archiva), um Build-Artefakte mittels Maven für verschiedene Entwicklungsabteilungen zugänglich zu machen, ohne dass diese z.B. via CVS oder Subversion verteilt werden mussten
* Implementierung eines Company Repositories mittels Artifactory
* Coding- und Entwicklungsrichtlinienerstellung
* Aufbau eines firmenweit genutzten Continuous Integration (CI)-Servers auf Basis von Luntbuild (später abgelöst durch Hudson bzw. Jenkins)
* Aufbau eines Reportings der Code-Qualität mittels des Maven-Site-Mechanismus unter Nutzung diverser Technologien (FindBugs, Cobertura, PMD usw.) (später durch den Einsatz von Sonar abgelöst)
Technologien:
* Java 5 und 6
* Cobertura
* PMD
* FindBugs
* Luntbuild (CI-Server)
* Jenkins
* Hudson
* Sonar
* Subversion
* Apache Maven 2
* Eclipse IDE 3.x
02/2006 - 07/2007, Architekt, Technischer Projektleiter und Hauptentwickler, Media-Agency
Beschreibung:
* Entwicklung einer Verwaltungssoftware für die Partei BÜNDNIS 90/DIE GRÜNEN, mit den folgenden Komponenten:
** Mitgliederverwaltung
** Beitrags- und Spendenverwaltung
** Finanzbuchhaltung
* Entwicklung und Design der Anwendung mittels Open Source-Technologien (Spring, Hibernate, Eclipse RCP, Apache MINA, Postgresql, Apache Lucene)
* Die Anwendung sollte als (Rich) Client/Server-Anwendung umgesetzt werden; die Client-Anwendung sollte unter Linux, Mac OS X und Windows lauffähig sein
* Nutzung der Eclipse Rich Client Platform (RCP) zum Erstellen der Client-Anwendung
* Aufbau eines komplexen Rollen- und Rechtesystems, dass sich stark an der Organisationsstruktur der Partei orientierte
* Performance-Optimierung der Anwendung während der Beta-Phase, so dass die Serverlast reduziert werden konnte und anstelle von mehr als 2GB RAM nur noch 512MB benötigt wurden
* Einsatz eines Cache-Frameworks, um während Hochlast-Situationen eine flüssige Arbeitsweise zu ermöglichen
* Die Client-Anwedung konnte über das Internet mit Aktualisierungen versorgt werden - dabei konnte jede Version der Anwendung mittels inkrementeller Aktualisierung auf den neusten Stand gebracht werden.
* Intensiver Kundenkontakt und Präsentation der Ergebnisse auf mehreren Workshops
* Durchführung von Schulungen für die Anwender der Software
Technologien:
* Java 5 und 6
* PostgresQL 8.1
* Spring 1.2 und 2.0
* Hibernate 3.0 und 3.1
* Apache Lucene
* Eclipse RCP 3.1
* Apache MINA
* Bouncycastle (zum Erstellen einer PKI)
* Subversion
* Apache Maven 2
* Eclipse IDE 3.x
Experte für
Spezialgebiete Java:
Entwicklungsmethoden
Mobile Plattformen
Web-Technologien
Anwendungsbereiche
Anwendungs-Architekturen
Server
Werkzeuge
Agile Coaching
Berufserfahrung
09/2013 - heute
Rolle: Freiberuflicher Software-Architekt und Agile Coach
01/2012 - 08/2013
Rolle: Head of Software Architecture
Kunde: net-mobile AG, Düsseldorf
08/2007 ? 12/2011
Rolle: Software Architect
Kunde: net-mobile AG, Düsseldorf
03/2005 ? 06/2007
Rolle: Software Engineer
Kunde: Proximity Technology GmbH, Düsseldorf
01/2002 ? 02/2005
Rolle: Software Developer
Kunde: net-mobile AG, Düsseldorf
Advanced Unit-Test-Schulung für eine große Gruppe von
Entwicklern mit unterschiedlicher Programmiererfahrung
Schwerpunkte:
03/2013 - 05/2013, Consultant und Software Architect, Telekommunikationsbranche
Beschreibung:
* Entwicklung eines neuen Content Storage Systems für die Verwaltung einer großen Zahl von Videodateien
* Ziel ist es, die operativen Kosten (OPEX) zu minimieren, z.B. durch:
** verbesserte Dateiablage im Hinblick auf das Erstellen von Backups
** automatische Auswertung von Zugriffsstatistiken auf Dateien, so dass basierend auf statistischen Analysen Dateien von teuren, hochverfügbaren Storage Backends auf kostengünstigere Backends transferiert werden können, sollten diese nicht mehr stark nachgefragt werden (umgekehrte Operationen sind natürlich ebenfalls möglich)
** strenge Einhaltung von Konsistenzen zwischen vorhandenen Dateien und Metadaten (Health- und Availability-Checks)
** Einbindung von externen Datenspeichern (z.B. Amazon S3)
* Nutzung einer Couchbase-Datenbank zur Verwaltung der Metadaten einer Datei
Technologien:
* Java 7
* EclipseRT Virgo 3.6
* Apache Tomcat AS 7
* Spring 3.2
* Couchbase 2
* Hazelcast 2.2
* Subversion
* Apache Maven 3
* Eclipse IDE 4.x
01/2012 - 08/2013, Consultant und Head of Software Architecture, Telekommunikationsbranche
Beschreibung:
* Leitung einer autonomen Abteilung zur Verbesserung der Softwaresysteme des Unternehmens
* Initiierung neuer Entwicklungsprojekte basierend auf Analysen der bestehenden Software
* Beratung der Abteilungsleiter und Teamleiter aus allen Entwicklungsbereichen
* Einsatz als Krisenmanager, wenn Performance-Probleme oder Laufzeitfehler in Java-Applikationen auftreten
* Code-Reviews
* Erstellen technischer Angebotsunterlagen im Rahmen von Ausschreibungen
* Beratung des CTOs in regelmäßigen Stabsmeetings
* Auszug aus Beratungsprojekten:
** Untersuchung von Firefox OS im Hinblick auf das Hinzufügen neuer Payment Provider
** Video-on-Demand und Mobile TV in mobilen Netzwerken
** Performance-Optimierungen für Bezahlvorgänge über die Mobilfunksysteme im Google Play Store
Technologien (bisher):
* alle Java-Technologien
* Parstream
* MarkLogic
10/2011, Entwickler, Leben braucht Bewegung
Beschreibung:
* Aufbau einer neuen Webseite für das Körperorientierte Bewusstseinstraining nach Jost
* Neben dem Erstellen der Webseite wurde auch das Hosting und der Betrieb realisiert
* Umsetzung eines Backup-Konzepts mittels Amazon S3
* http://www.lebenbrauchtbewegung.de
Technologien:
* PHP
* Wordpress
* Apache Webserver 2.4
* MySQL 5 Datenbank
04/2009 - 06/2012, Technischer Projektleiter & Lead Architect, Telekommunikationsbranche
Beschreibung:
* Technischer Projektleiter (inkl. zeitweiser Projektleiter der Produktentwicklung), Teamleiter und Hauptentwickler (nahezu 40% der Codebasis (ca. 400.000 LOC) implementiert) von net-mobiles next generation service platform ("PLANET")
* Ziel des Projektes war es, alle Services der net-mobile AG unter einer vereinheitlichten, homogenen Schnittstelle anzubieten. Dazu mussten mehrere APIs komplett neu entwickelt werden, inkl. Optimierung bestehender Prozesse (Kaufabwicklung, Content Delivery, etc.). Gleichzeitig waren die Services über mehrere Standorte verteilt und verschiedenste Technologien wurden eingesetzt (unterschiedliche Datenbanken, Applikationsserver, Frameworks, usw.).
* Kernanforderungen an die neue Plattform:
** musste in verschiedenen Rechenzentren weltweit eingesetzt werden können
** weitere bzw. neue Dienste sollten sich leicht integrieren lassen
** gängige Web-Standards sollten proprietäre Protokolle ersetzen (z.B. REST-Interfaces, die XML- und JSON-Dokumente austauschen, SOAP, Java RMI)
** Monitoring- und KPI-Daten sollten für Reporting-Anforderungen gesammelt werden (z.B. um request-basierte Abrechnungen zu ermöglichen)
** verschiedene Content-Plattformen mussten so integriert werden, dass den Frontend-Entwicklern für das Erstellen der Web- und WAP-Portale eine homogenisierte Sicht auf den Content und die Auslieferungsmechanismen zur Verfügung stand (langfristig: Migration der bestehenden Daten in eine neue, vereinheitlichte Datenbank)
* Realisiert wurde eine modularisierte Anwendungsplattform, die via OSGi zur Laufzeit um neue Dienste erweitert werden konnte. Alle Funktionen wurden in Form von Plugins entwickelt, ähnlich dem Entwicklungsmodell der Eclipse IDE.
Technologien:
* Java 6 und 7
* OSGi R4 (Apache Felix und Eclipse Equinox als OSGi runtime)
* Spring dmServer 2.0
* EclipseRT Virgo 3.0 und 3.1
* Apache Tomcat AS 6 und 7
* Spring 3.0 und 3.1
* Spring Dynamic Modules 1.1 und 1.2
* EclipseLink 2.2 und 2.3
* JPA 2
* PostgresQL 9.0 bis 9.2
* Sybase ASE 12.5
* Hazelcast 1.8 bis 2.2
* Apache Jackrabbit 2.2 bis 2.5
* Apache Solr 4.0 bis 4.3
* JBoss Netty 3
* Subversion
* Apache Maven 2 und 3
* Eclipse IDE 4.x
02/2009 - 05/2009, Technischer Projektleiter, Teamleiter und Consultant, Telekommunikationsbranche
Beschreibung:
* Entwicklung einer Möglichkeit, Content aus verschiedenen Backend-Plattformen für die Frontend-Entwickler zugänglich zu machen
* Projektleitung eines kritischen Portals (WAP und Web) unter engen Zeitvorgaben
* Abstimmung von Anforderungen mit dem Kunden und Begleitung des Go-Live
Technologien:
* Java 6
* Spring 2.5
* Apache Tomcat AS 6
* Velocity 1.5
* Hibernate 3.2
* Subversion
* Apache Maven 2
* Eclipse IDE 3.x
12/2008 - 01/2009, Consultant und Performance-Specialist, Telekommunikationsbranche
Beschreibung:
* Optimierung der Vodafone-Portale, die von einem Wettbewerber entwickelt wurden und durch dessen Aufkauf nun Teil der Softwarelandschaft des Unternehmens waren
* Analyse und Refactoring von ca. 250.000 LOC unbekannter Software und unterschiedlicher Software-Stacks
* Ad-hoc-Entwicklung eines Aspekts, der es erlaubte, ohne Code-Änderungen Performance-Metriken von Java-Anwendungen zu ermitteln und diese dadurch transparenter zu machen
* Code Hot-Spots konnten entdeckt werden, so dass die Rolle der verschiedenen Schichten der Anwendung (Frontend, Backend und Datenbank) sichtbar wurde
* Ad-hoc-Entwicklung einer Crawler-Software, die die Portale dynamisch unter Last setzen konnte. Eine Eigenentwicklung war notwendig, da das generierte Markup ein Vodafone-spezifischer XML-Dialekt war, für den es keine Crawler-Software gab
* Die Crawler-Software wird heute noch nach Modifikationen von der QA-Abteilung genutzt
* Der Crawler war des Weiteren in der Lage, seine Ermittlungsergebnisse in eine Datenbank zu schreiben und konnte während der Auswertung um Log-Informationen ergänzt werden. Durch den Einsatz der Groovy-Sprache konnten die Log-Dateien sehr flexibel transformiert werden, so dass eine Korrelation der Ereignisse eines Requests sichtbar wurden
* Garbage-Collector-Tuning aller Anwendungen des Software-Stacks
Technologien:
* Java 5 und 6
* Apache Tomcat AS 5.5 und 6
* JBoss AS 4.0 und 4.2
* Java Enterprise Edition (JEE)
* Sybase ASE 12.5
* Apache Cocoon 2.1
* XSLT-Transformator (Xalan)
* AspectJ 1.6
* Groovy
* Subversion
* Apache Ant
* Eclipse IDE 3.x
11/2008, Consultant und Entwickler, Telekommunikationsbranche
Beschreibung:
* Entwicklung eines verbesserten Mechanismus zum Erstellen von Portalanwendungen
* Ziel war es, Entwicklern die Möglichkeit zu geben, Geschäftslogik in die Java-Controller-Schicht auszulagern und die Portal-Templates auf die reine View-Logik zu beschränken
* Gleichzeitig sollten die Entwickler ohne einen Neustart der Server-Anwendung in der Lage sein, Änderungen an den Controllern zu testen
* Dies mündete in der Entwicklung eines Frameworks zum Umsetzen dynamischer Controller, die in Java mittels Eclipse geschrieben werden konnten und direkt nach dem Abspeichern in die Anwendung des Servers nachgeladen wurden
* Für das Kompilieren der Controller-Klassen sowie das dynamische Nachladen des Codes wurde der Eclipse JDT-Compiler verwendet
Technologien:
* Java 6
* Apache Tomcat AS 6 und 7
* Spring 2.5
* Eclipse JDT Compiler 3.x
* Subversion
* Apache Maven 2
* Eclipse IDE 3.x
08/2008 - 10/2008, Architekt und Consultant, Telekommunikationsbranche
Beschreibung:
* Consulting beim Aufbau einer neuen Routing-Plattform für SMS- und MMS-Nachrichten
* Kernanforderungen waren ein hoher Durchsatz der Nachrichten aufgrund bekannter und erwarteter hoher Last, sowie flexible Routing-Konfigurationen basierend auf Input- und Output-Kanälen
* Routing-Tabellen mussten im laufenden Betrieb erweiterbar sein, da ein Herunterfahren der Anwendung nicht toleriert werden konnte
* Evaluation und Prototypen-Implementierung von BPM-Lösungen für die Realisierung der Routing-Tabellen sowie diverser JMS-Provider für den Nachrichten-Transport
Technologien:
* Java 6
* Apache ActiveMQ 5
* JBoss Messaging
* jBPM 3.x
* Mule ESB
* Apache Camel
* Apache ServiceMix
07/2008, Entwickler, Telekommunikationsbranche
Beschreibung:
* Entwicklung einer Überwachungssoftware für JVM-Anwendungen mit dem Ziel, bevorstehende Out-Of-Memory-Situationen rechtzeitig vorherzusagen und entsprechende Warnungen zu versenden.
* Warnungen konnten über Plug-Ins an verschiedene Endpunkte verschickt werden, z.B. via JMX, E-Mail, XMPP oder an ein Nabaztag-Device
* Die Erkennungslogik arbeitete mittels statistischer Regressionsanalyse der Garbage Collector-Zeiten der JVM
* Mittels vieler von außen konfigurierbarer Parameter konnte der Monitor in der Anfangszeit justiert werden, so dass die Vorhersagwahrscheinlichkeit mehr als 90% betrug
* Die Software nutzte die JMX-Mechanismen einer JVM, um die benötigten Daten abzufragen. Dieses nicht-invasive Verfahren erlaubte es, den Monitor mit jedem Application Server bzw. jeder Client-Anwendung zu nutzen
Technologien:
* Java 6
* JMX
05/2008 - 07/2008, Technischer Projektleiter & Hauptentwickler, Telekommunikationsbranche
Beschreibung:
* Entwicklung eines verteilten Systems zur Speicherung von Kreditkartendaten, die PCI-DSS-konform erfolgen musste
* Um das System so unanfällig für Angriffe von außen zu machen, wie möglich, wurde die Applikation auf zwei Systeme aufgeteilt, die über Queues miteinander kommunizierten. So konnte der Server, der die sensitiven Daten speicherte so konfiguriert werden, dass der Netzwerkverkehr nur von innen nach außen erfolgen konnte
* Alle Daten wurden mit Hilfe eines 256-Bit-AES-Schlüssels verschlüsselt in der Datenbank abgelegt. Gleichzeitig gab es keine Möglichkeit, dass diese Daten den Server wieder verlassen konnten, da selbst Abfrageoperationen die Daten nur in der PCI-DSS-konformen Variante zurückgaben (z.B. nur die letzten 4 Ziffern der Kreditkartennummer)
* Performance-Optimierung der Kommunikation der verschiedenen Teilapplikationen vervierfachte den Datendurchsatz, so dass trotz des Queue-Ansatzes die Client-Anwendungen innerhalb von unter 200ms eine Operation durchführen konnten
* Entwicklung einer Client-Bibliothek, die den eigentlich asynchronen Workflow der Anwendung über einen synchronen Wrapper gekapselt hat, so dass es für die Client-Anwendungen so aussah, als wären alle Operationen synchron.
Technologien:
* Java 6
* Apache Tomcat AS 6
* Spring 2.5
* PostgresQL 8.3
* Bouncycastle (Java Crypto-Bibliothek)
* Apache Commons HTTPClient 3.1
* Subversion
* Apache Maven 2
* Eclipse IDE 3.x
02/2008 - 04/2008, Technischer Projektleiter & Hauptentwickler, Telekommunikationsbranche
Beschreibung:
* Design und Implementierung eines neuen Content-Import-Servers, der in der Lage ist, von unterschiedlichen Quellen Daten entgegenzunehmen, zu normalisieren und anschließend in die Content-Datenbank und das Content Delivery Network des Unternehmens einzufügen
* Hauptantrieb war die Verkürzung der Entwicklungszeit für die Einbindung neuer Content Provider, die Erhöhung der Zuverlässigkeit beim Import (weniger Fehlimporte, aussagekräftigere Fehlermeldungen) sowie ein verbessertes Reporting
* Nutzung einer SEDA-Architektur und des OSGi-Frameworks, um flexible Konfigurationen eines Content-Items zu realisieren, ohne Logik zu duplizieren
* Um die Konsistenz der beteiligten Datenbanken sicherzustellen, wurde auf einen verteilten Transaktionsmechanismus mittels JTA zurückgegriffen, der auch den eingesetzten Message-Broker umfasste
* Da sowohl Apache ActiveMQ als auch JBoss Messaging Fehler im Umgang mit JTA-Transaktionen zeigten, wurde ein eigener Message-Broker implementiert
Technologien:
* Java 6
* Spring dmServer 1.0
* OSGi R4
* Apache ActiveMQ 5
* Bitronix Transaction Manager
* Subversion
* Apache Maven 2
* Eclipse IDE 3.x
12/2007 - 01/2008, Hauptentwickler, Telekommunikationsbranche
Beschreibung:
* Refactoring der eingesetzten Content Plattform, um projekt- und produkt-bezogene Erweiterungen schneller implementieren zu können
* Eine gewachsene, monolithische Anwendung wurde in mehrere Teilprojekte zerlegt, die einzeln weiterverwendet werden konnten
* Gleichzeitig wurde der Build-Prozess mittels Maven 2 so verbessert, dass neue Entwickler schneller in die Anwendungsentwicklung integriert werden konnten
* Code-Reviews wurden mittels Cobertura und FindBugs durchgeführt, um Schwachstellen aufzudecken und zu beheben
Technologien:
* Java 6
* Apache Tomcat AS 6
* Spring 2.0
* PostgresQL 8.1
* Cobertura
* FindBugs
* Luntbuild (CI-Server)
* Subversion
* Apache Maven 2
* Eclipse IDE 3.x
11/2007, Consultant & Entwickler, Telekommunikationsbranche
Beschreibung:
* Einführung eines neuen Entwicklungsprozesses auf Basis von Apache Maven 2
* Evaluierung mehrerer Repository-Anwendungen (JFrog Artifactory, Apache Archiva), um Build-Artefakte mittels Maven für verschiedene Entwicklungsabteilungen zugänglich zu machen, ohne dass diese z.B. via CVS oder Subversion verteilt werden mussten
* Implementierung eines Company Repositories mittels Artifactory
* Coding- und Entwicklungsrichtlinienerstellung
* Aufbau eines firmenweit genutzten Continuous Integration (CI)-Servers auf Basis von Luntbuild (später abgelöst durch Hudson bzw. Jenkins)
* Aufbau eines Reportings der Code-Qualität mittels des Maven-Site-Mechanismus unter Nutzung diverser Technologien (FindBugs, Cobertura, PMD usw.) (später durch den Einsatz von Sonar abgelöst)
Technologien:
* Java 5 und 6
* Cobertura
* PMD
* FindBugs
* Luntbuild (CI-Server)
* Jenkins
* Hudson
* Sonar
* Subversion
* Apache Maven 2
* Eclipse IDE 3.x
02/2006 - 07/2007, Architekt, Technischer Projektleiter und Hauptentwickler, Media-Agency
Beschreibung:
* Entwicklung einer Verwaltungssoftware für die Partei BÜNDNIS 90/DIE GRÜNEN, mit den folgenden Komponenten:
** Mitgliederverwaltung
** Beitrags- und Spendenverwaltung
** Finanzbuchhaltung
* Entwicklung und Design der Anwendung mittels Open Source-Technologien (Spring, Hibernate, Eclipse RCP, Apache MINA, Postgresql, Apache Lucene)
* Die Anwendung sollte als (Rich) Client/Server-Anwendung umgesetzt werden; die Client-Anwendung sollte unter Linux, Mac OS X und Windows lauffähig sein
* Nutzung der Eclipse Rich Client Platform (RCP) zum Erstellen der Client-Anwendung
* Aufbau eines komplexen Rollen- und Rechtesystems, dass sich stark an der Organisationsstruktur der Partei orientierte
* Performance-Optimierung der Anwendung während der Beta-Phase, so dass die Serverlast reduziert werden konnte und anstelle von mehr als 2GB RAM nur noch 512MB benötigt wurden
* Einsatz eines Cache-Frameworks, um während Hochlast-Situationen eine flüssige Arbeitsweise zu ermöglichen
* Die Client-Anwedung konnte über das Internet mit Aktualisierungen versorgt werden - dabei konnte jede Version der Anwendung mittels inkrementeller Aktualisierung auf den neusten Stand gebracht werden.
* Intensiver Kundenkontakt und Präsentation der Ergebnisse auf mehreren Workshops
* Durchführung von Schulungen für die Anwender der Software
Technologien:
* Java 5 und 6
* PostgresQL 8.1
* Spring 1.2 und 2.0
* Hibernate 3.0 und 3.1
* Apache Lucene
* Eclipse RCP 3.1
* Apache MINA
* Bouncycastle (zum Erstellen einer PKI)
* Subversion
* Apache Maven 2
* Eclipse IDE 3.x
Experte für
Spezialgebiete Java:
Entwicklungsmethoden
Mobile Plattformen
Web-Technologien
Anwendungsbereiche
Anwendungs-Architekturen
Server
Werkzeuge
Agile Coaching
Berufserfahrung
09/2013 - heute
Rolle: Freiberuflicher Software-Architekt und Agile Coach
01/2012 - 08/2013
Rolle: Head of Software Architecture
Kunde: net-mobile AG, Düsseldorf
08/2007 ? 12/2011
Rolle: Software Architect
Kunde: net-mobile AG, Düsseldorf
03/2005 ? 06/2007
Rolle: Software Engineer
Kunde: Proximity Technology GmbH, Düsseldorf
01/2002 ? 02/2005
Rolle: Software Developer
Kunde: net-mobile AG, Düsseldorf
Direktester geht's nicht! Ganz einfach Freelancer finden und direkt Kontakt aufnehmen.