Online Terminvereinbarung

01 Oktober 2018

Datum 11/2018 – …
Projekt Online Terminvereinbarung
Branche Autowerkstatt
Tätigkeit Architektur, Implementierung
Beschreibung Architektur und Implementierung neuer Funktionen eines Online Terminvereinbarungsservice durch Spring Boot basierende Microservices. Die Kommunikation der Microservices basiert auf REST und Kafka. Daten werden in PostgreSQL gespeichert.
Ausführung Linux
Java 11, Spring, Spring Boot
Kubernetes
Docker, Docker compose
REST, Jackson
Hibernate 5, PostgreSQL, H2, Kafka
Cloud
Mockito
Junit, AssertJ
IDE: IntelliJ 2018
Vorgehensmodell: Kanban
Tools: Maven, Jira, Bitbucket
VCS: git

Kommunikationsplattform

01 August 2018

Datum 04/2017 – 09/2018
Projekt Plattform zum Versand von Nachrichten
Branche Handel
Tätigkeit Architektur, Implementierung
Beschreibung Architektur und Implementierung neuer Funktionen einer auf Nachrichten basierenden Kommunikationsplattform auf Basis Spring Boot. Die gesamte Plattform ist auf diverse Microservices verteilt, die mittels REST und AMQP untereinander kommunizieren. Dabei kommt ein Templatesystem zum Einsatz, was den Klienten den Versand der Nachrichten vereinfacht, da nur ein Minimum an Payload benötigt wird. Das Rendering der Nachricht geschieht innerhalb der Plattform für den jeweils relevanten Kommunikationskanal. Hier wird derzeit SMS, Push (iOS und Android), eMail, Facebook Messenger und Brief unterstützt. Alle Nachrichtenkanäle verfügen über eine vielzahl an Kennzahlen zum Tracken der einzelnen Nachrichten.
Ausführung Apple / macOS / Linux
Java 8, Spring, Spring Boot
Amazon AWS, EC2
Docker
REST, Jackson
Hibernate 5, PostgreSQL, H2, redis, RabbitMQ (AMQP)
Cloud
Mockito
Junit, Hamcrest, AssertJ
IDE: IntelliJ 2017
Vorgehensmodell: Scrum
Tools: Maven, GitHub Enterprise
VCS: git

Rewrite Nachrichtenservice rubbergram

01 Februar 2018

Datum 02/2018 – …
Projekt Rewrite einer Web-Applikation zum Versand von Einwegnachrichten rubbergram.com
Branche Social Web
Tätigkeit Idee, Design, Implementierung
Beschreibung Einfache Möglichkeit zum Versand von Einwegnachrichten, die beim Lesen automatisch gelöscht werden. Möglichkeit für Attachment als Bild.
Bei Erstellung der Nachricht wird ein Link generiert, der dem Empfänger mitzuteilen ist. Ruft der Empfänger den Link auf, so wird die Nachricht auf dem Server gelöscht, wodurch sie nur einmalig gelesen werden kann
Microservice Architektur: message store, authorization/authentication, frontend
Ausführung PC / Windows, Ubuntu Linux
IntelliJ IDEA 2018
Java 8
Spring Boot 2, Spring Security, Spring JPA, Spring Cloud Sleuth, Spring Actuator
JPA2, Hibernate 5, HikariCP, Flyway 5, PostgreSQL 10
Jackson, MapStruct 2
Logback, Micrometer
AssertJ, Mockito
Thymeleaf 2, custom dialect, Bootstrap, jQuery
Features Versand von Tect und Bildern.
Benachrichtigung des Versenders beim Lesen der Nachricht.
Unterstützung mehrerer Sprachen.
Unterstützung von X-Forwarded-* headern zum Betrieb hinter einem reverse proxy zur SSL-Temrinierung.
Blockieren der Anzeige beim Versand des Links mittels Facebook Messenger, damit hiermit die Nachricht nicht zerstört wird.
Benutzerverwaltung; registrierte Benutzer können zusätzliche Features nutzen.
Benutzerregistrierung, recaptcha Integration.
Versand von multipart MimeMessage (plain text, html) eMails zur Aktivierung des Accounts nach Aktivierung und Lesebestätigungen. Hierzu wird der bereits vorhandene eMail Server als relay benutzt.
Feature switches mit unterschiedlichen Aktivierungsstrategien (Benutzergruppe, Spring-Boot Profil, Administratorfunktion). Integration in Thymeleaf durch custom dialect. Serverseitige Integration durch Annotation mittels AspectJ.
Administratorfunktionen: Übersicht der Nachrichten, aktuelle User sessions, Verwaltung von Registrierungen, Verwaltung von Feature switches für aktuelle User sessions (auch anonyme).
Connection pooling für message store und auth-service.
Distributed tracing.
Betrieb Metriken mittels Prometheus, Grafana
Logging mittels Filebeat, Elastic Search, Kibana
Docker compose zur Orchestrierung aller Container (PostgreSQL, message-store, auth-service, frontend, Filebeat, Elastic Search, Grafana, Kibana, Prometheus).
DevOp GitLab, GitLab CI/CD

Community Platform

26 September 2016

Datum 09/2016 – 03/2017
Projekt Suchmaschinenoptimierung und Weiterentwicklung einer Community Plattform
Branche Community
Tätigkeit Architektur, Implementierung
Beschreibung Architektur und Implementierung neuer Funktionen sowie Bugfixing einer Spring basierenden Community Plattform.
Architektur und Implementierung einer Sitelist zur Anbindung von Suchmaschinen wie Google auf Basis Spring Boot, welche in der hauseigenen Cloud läuft. Die hier benötigten Scheduling-Aufgaben wurden mit Spring implementiert. Zur Synchronisation der Instanzen wurde redis gewählt.
Ausführung Apple / macOS / Linux
Java 8, Spring, Spring Boot
Stripes, JSP, JSTL
REST, Jackson
mySQL, MyBatis, redis, Elasticsearch
Cloud
Mockito
REST-Assured
JUnit, Hamcrest
IDE: IntelliJ 2017
Vorgehensmodell: Scrum
Tools: JIRA, Team City, Confluence, Maven
VCS: git

Backend für Marketingkampagnenverwaltung von Brandshops

17 August 2015

Datum 08/2015 – 09/2016
Projekt Internetanwendung zur Verwaltung für Marketingkampagnen
Branche Werbung
Tätigkeit Architektur, Implementierung
Beschreibung Architektur und Implementierung einer neuen Anwendung von Grund auf. Umsetzung als Microservice-Architektur auf Basis Spring Boot in einem Docker Container im AWS-Umfeld.
Anbindung von Google Double Click und Metrigo für „onsite“ Werbung und „sponsored products“.
Scheduling-Aufgaben wurden mittels Quartz gesteuert. Für die Übermittlung von Nachrichten wurde Amazons SQS benutzt.
Ausführung PC / Windows / Linux
Java 8, Spring Boot
REST, Jackson
Hibernate 4, JPA, PostgreSQL, H2
Quartz
Amazon AWS, SQS, EC2
Docker
Mockito
REST-Assured
Swagger
JUnit, Hamcrest
Grafana2
IDE: IntelliJ 2016
Vorgehensmodell: Kanban
Tools: JIRA, Jenkins, Confluence, Trello, Maven, STUPS
VCS: git
Referenz Referenz vom 31.10.2016

Stammdatenverwaltung für Abrechnungssystem

27 April 2015

Datum 05/2015 – 08/2015
Projekt Stammdatenverwaltung für Abrechnungssystem
Branche Energiedienstleistung
Tätigkeit Analyse, Design, Implementierung
Beschreibung Implementierung zentraler Dienste der Stammdatenverwaltung. Hierzu gehören Liegenschaften, Gebäude, Messstellen, Messinstrumente usw.
Ausführung PC / Windows
Java 7, JEE 6
REST, Soap
JMS
Hibernate 4, mySQL
Orika
Querydsl
IntelliJ 14
AngularJS
Wildfly 8

Vorgehensmodell: Scrum
Tools: JIRA, Jenkins, Confluence

Nachrichtenservice rubbergram

17 Oktober 2014

Datum 10/2014 – 12/2014
Projekt Web-Applikation zum Versand von Einwegnachrichten
rubbergram.com
Branche Social Web
Tätigkeit Idee, Design, Implementierung
Beschreibung Einfache Möglichkeit zum Versand von Einwegnachrichten, die beim Lesen automatisch gelöscht werden. Möglichkeit für Attachment als Bild.
Ausführung PC / Windows
Ubuntu Linux
JavaScript, HTML
Eclipse 4.3
Java 7, JEE 6, Servlet, JSF 2, Wildfly 8.1
Hibernate 4
MySQL
Scrum

Vertragsverwaltung/Kundenbetreuung

02 August 2008

Datum 08/2008 – 03/2015
Projekt Interne Applikation zur Vertragsverwaltung und Kundenbetreuung
Branche Versicherung
Tätigkeit Analyse, Design, Implementierung
Beschreibung Implementierung administrativer Funktionen in ein bestehendes webbasierendes Vertragsverwaltungssystem.
Entwurf und Realisierung Angebotsmodul.
Ausführung PC / Windows
UNIX / AIX
JavaScript, HTML
Eclipse 3.7, 4.4
Java 6, 7, 8, JEE 6, Servlet, JBoss 6, Wildfly 8
Struts, JSP, JSF, RESTEasy
MQ, Hibernate 4
IBM DB2 9
extreme Programming, Scrum
Projektverwaltung mittels JIRA
Modul Migration
Zur Übernahme von Vertragsbeständen aus einer fremden Bestandsverwaltung musste ein Konzept zur Migration dieser Datenstrukturen in das bestehende Bestandsverwaltungssystem erstellt werden. Dabei soll eine BPM-Engine als Rahmen dienen. Bei der Erstellung der Infrastruktur wurde hier auf RESTful Services mittels RESTEasy gesetzt. Das Modul gliedert sich in zwei Teile, wobei eines für die Transformation der Datenstrukturen in die Zielstrukturen zuständig ist und das andere die Zusteuerung ins bestehende System übernimmt.
Modul Angebotserstellung
Ziel war eine möglichst eigenständige Komponente zur Erstellung von Änderungsangeboten an bestehenden Verträgen zu realisieren. Auch sollte die Option einer neuen GUI-Technologie nicht verschlossen werden. Hierfür wurde die Geschäftslogik mittels EJB 3 umgesetzt. Für die Verbindung der Vertragskomponente (EJB 2) zur Angebotskomponente (EJB 3) wurde eine Prozessschicht in EJB 3 gewählt. Diese sorgt transaktionsgesteuert für Konsistenz in beiden Komponenten.
Modul JSF-Prototyp
Zur Abschätzung des Migratiosnaufwandes von Struts zu JSF musste ein Prototyp gebaut werden. Dieser benutzte weitestgehend die vorhandenen Beans.
Modul C/S-Trennung
Die ursprüngliche Anwendung hatte keine Client/Server-Trennung, wodurch eine gute Transaktionsbehandlung kaum möglich war. Da die GUI-Komponente jedoch direkt auf die Entitäten der Persistenzschicht aufbaute, wurde eine Transformation in ein DTO-Objekt zur Übergabe an die Beans gewählt. Serverseitig wurden diese wieder zurück in die Entitäten transformiert, womit die C/S-Trennung für eine sinnvolle Transaktionsbehandlung ermöglicht wurde.
Modul Verbesserungen beim Exception-Handling
Die Umstellung auf EJB3 eröffnete neue Möglichkeiten beim Exception-Handling. Zentrale Beans werfen nun mittels @ApplicationException annotierte Exceptions, die auch eine Wurzel-Klasse mit dem Attribut rollback=true haben. Somit ist die Transaktionsbehandlung besser möglich.
Modul Verbesserungen an der Persistenzschicht
Einheiten behafteter Größen – Geldbeträge sind in der Persistenzschicht einheitlich in Euro zu speichern, wenngleich der Zugriff auf die Klassen auch Centbeträge erlauben muss. Hierfür galt es einen flexiblen embeddable type für Hibernate umzusetzen.
Modul Komponente zur fachlichen Prüfung von Daten
Contextsensitive Daten sind sowohl am Frontend, als auch am Backend auf dieselbe Weise zu prüfen. Hierfür wurde eine Komponente geschaffen, die sich einfach sowohl als JSTL als auch in der zentralen Validierung des Systems benutzen lässt.

Machbarkeitsstudie – Community/Marketplace

01 August 2008

Datum 08/2008 – 10/2008
Projekt Community/Marketplace
Branche Social Community/Marketplace
Tätigkeit Projektleitung, Architektur, Implementierung
Beschreibung Machbarkeitsstudie für Social Community/Marketplace Plattform auf Basis von JBoss Seam.
Ausführung PC / Windows, Linux
JavaScript, HTML
Eclipse 3.4
JBoss Seam 2.1.1
JBoss 5.0.1
Java 6, JEE 5, Servlet, JSF
EJB 3
Hibernate 3.3
Richfaces 3.3
mySQL 5.1
Ant 1.7
extreme Programming

Belegwesen

01 Januar 2008

Datum 01/2008 – 07/2008
Projekt Belegwesen
Branche Steuerberatung
Tätigkeit Analyse, Design, Implementierung
Beschreibung Implementierung administrativer Funktionen in ein bestehendes webbasierendes Belegverwaltungssystem.
Ausführung PC / Windows
UNIX / Sun Solaris
JavaScript, HTML
RAD 6
Java 1.4, J2EE 1.3, Servlet, JSP, Taglib
MQ
IBM DB2