CV

I am happy to send you my CV in Word Format. Please contact me for that.

Diplom Informatiker (FH)

Chris Wewerka

Project Overview

November 2023 – February 2024

Role: Lead Developer
Customer: Hays AG

Implementation, refactoring and team leading for the completion of a recruiting web application

Implementation and review of user stories
• Refactoring of existing code
• Teaching of test-driven concepts + Scala best practices to the development teams
• Coaching of the development teams
• DevOps support for the creation of Azure build pipelines

Tools, Frameworks and Environment

Scala 3.3, SBT, Cats Effect, doobie, Postgres, Flyway, Tapir, OpenAPI, Github, Azure, Docker

October 2023

Completing the course “Python for Data Science and Machine Learning Bootcamp”

Certificate

Tools, Frameworks and Environment

Python 3.11, Anaconda, PyCharm, NumPy, Pandas, Matplotlib, Seaborn, Neural Nets, TensorFlow, NLP, Spark with Python

May 2022 – September 2023


Role: Senior Developer, Technology Consultant, Architect
Customer: T-Systems

Rewrite of a whole service, Refactoring and Implementation of new features of a microservice architecture in an IoT environment.Technical and architectural consultancy.


• Refactoring of blocking persistence to non blocking with ZIO 1
• Complete rewrite of a geolocation microservice from Spring Boot/Java to Scala 3 with ZIO 2 and Tapir
• Architectural concept for async event-driven communication between microservices instead of synchronous REST calls
• Review of the architecture and implementation of improvements
• Further development and bug fixing of microservices for IoT device synchronization + geolocation determination based on Java, Spring Boot and Apache Camel
• Integration of the new implementation of the geolocation service with feature toggles in the service for device synchronization
• Implementation of monitoring possibilities with Prometheus metrics and OpenTelemetry support with Jaeger UI

Tools, Frameworks and Environment

Java11+17+21, Apache Camel, Spring Boot, Scala 2.13 and 3.3, SBT, Kubernetes, Helm, Docker, Gitlab, ZIO 1 + 2, Tapir, sttp, http4s, Circe, OpenAPI, Swagger, REST, Json, MongoDB, Kafka, Prometheus, Open Telemetry, Jaeger

December 2021 – June 2022


Role: Senior Developer, Technology Consultant
Customer: Ryte

Refactoring of a microservice architecture for mass analysis of websites


• reimplementing microservice (e.g. persistence)
• connecting Keycloak/OAuth to Microservices
• Technology Consultancy in the area of Kafka, Scala, Microservices and ZIO


Tools, Frameworks and Environment


Scala, SBT, AWS, DynamoDB, ECS, Docker, Akka, Scanamo, Keycloak, Oauth, ZIO, Circe, Swagger

August 2021 – December 2021

Role: Senior Developer, Technology Consultant, Coach
Customer: autoscout24

Further development of a high traffic ecommerce website

• Implementation of feature requests and big fixes in several microservices e.g. Integration of machine learning models in elasticsearch to improve the search and for better recommendations (Learning to Rank, LTR)
• Removal and consultancy for technical debts
• Evaluation of Apache Flink
• Improvements and bug fixes in Kafka Streams apps
• Enhancement of GraphQL APIs with Sangria Lib
• Coaching of new team members in Scala, Kafka, Elasticsearch and more


Tools, Frameworks and Environment


Scala, SBT, Play Framework, Apache Flink, AWS Kinesis Data Analytics, Datadog, AWS (DynamoDB, EC2), JDK11, JDK17, GraphQL, REST, Elasticsearch 7.5, Typescript, Akka Streams, Sangria

Mai 2021 – August 2021

Role: Architect, Senior Developer, Technology Consultant

Technical architecture concept and setup of a Microservice Environment (Proof of Concept) for a High Traffic Online Website for stock information

• Implementation of a POC with several microservices in Kotlin
• Technical consultancy in Kotlin, Kafka, Kubernetes and Public Clouds

Tools, Frameworks and Environment

Kotlin, Spring Boot, Spring Webflux, JDK11, IntelliJ, Kafka, Docker, Openshift, Grafana, ArgoCD, Prometheus, Micrometer, Docker, Docker Compose, Kubernetes, Rancher, Jenkins

April 2020 – Mai 2021

Role: Architect, Senior Developer, Technology Consultant

Update and Extension of an Open Source Video Conference Tool (Big Blue Button)

Tools, Frameworks and Environment

Scala 2.13, SBT, GIT, JDK11, Java 11, Grails

April 2020 – March 2021
Role: Architect, Senior Developer, Technology Consultant, Coach

Software Architecture Support, Senior Software Development, Clean Code Coaching, Support optimizing the development process for the development of bench scale bioreactors

• Refactoring of code with focus on testability and Clean Code principles
• Implementation of unit tests
• Analysis and fix of JVM and OS memory leaks, with Know How transfer and documentation
• Evaluation and Switch to OpenJDK11
• Support of the software architect for the bioprocess product
• GIT Pull Request Workshop
• Coaching of the team: TDD and Clean Code mentality
• Architecture Documentation with Arc42
• Presentation of the teams achivements


Tools, Frameworks and Environment

Scala 2.12, SBT, Arc42, GIT, Gerrit, Scrum, Akka, Akka Actors, Akka Streams, Clean Code, TDD, Mockito, UML, OpenJDK11, Evaluation of ZIO

May 2019 – December 2019
Role: Senior Developer, Technology Consultant, DevOps

Senior Software Development & Technology Consultant with Java 11, Spring Boot, Kafka, Microservices, Docker, OpenShift and Kubernetes

  • Implementing an Order Workflow as a Spring Boot Microservice for Truck Toll Systems based on data in Kafka Topics. Using advanced Kafka Streams concepts like Processors (Punctuator) to make the process steps resilient.

  • Implementation of microservices with Deployment as docker container to OpenShift
  • Setup of Gitlab and Gitlab Runners on Kubernetes/ Google Cloud to improve developer performance

  • Implementation and Coaching of the team for a DevOps mentality during development: Logging, Metrics, Alerting

  • Documentation with Arc42

Tools, Frameworks and environment

Java 11, Spring Boot, Kafka, Docker, Openshift, Google Cloud Kubernetes Engine, Google Cloud Storage, Gitlab, Kibana, Prometheus, Grafana, Arc42

December 2018 - April 2019
Role: Architect, Senior Developer, DevOps

Senior Software Development with Scala in AWS with Microservices
• Implementation of user stories of a B2C Direct Sale Microservice Application in Scala based on AWS and docker. Use case: enabling customers to sell their used cars directly to car dealers
• Connection to Salesforce CRM via S3 (XML) with AWS Lambda in Scala
• Technology consulting for Kafka usage
• Connection to relational database AWS Aurora (MySQL) via doobie library
• Monitoring and Alerting via AWS Cloudwatch and Datadog
• Continuous Deployment via Jenkins

Tools, Frameworks and Environment

Scala 2.12, AWS, AWS Lambda, Microservices, Doobie, Slick, AWS MySQL Aurora, Jenkins, AWS Cloudwatch, Datadog, docker, Testcontainer

April 2017 - December 2018
Role: Architect, Senior Developer, DevOps

Senior Software Development, DevOps and Architecture Consultancy in a Big Data / Machine Learning Project on AWS
• Implementing different microservices on Kafka Realtime Features basis
◦ Kafka Stream Apps
◦ Kafka Connect (Source + Sink)
◦ Interactive Queries
◦ KSQL
• ETL of Google Ad-Daten via Spark
• Realtime Streaming, Normalising and Enhancement of Ad-Click DFP Data to Apache Kafka via Implementing custom Kafka Connectors and proccessing of that data via Kafka Streams Microservices
• Realtime Sessionizing of User Interactions on a website for usage in Machine Learning Algorithms
• Implementation of a Kafka / Interactive Query REST Service for providing user profiles enhanced with Machine Learning Algorithms
• Dockerising Kafka Connect Import Modules and Kafka Stream Apps
• Integration testing of Kafka connectors and Kafka Streaming Apps via Landoop Docker Kafka Environment and Coyote Integrationstests. Integration in CI/CD Process based on Docker, Gitlab and Rancher
• Adaption, Bugfixing + Pull Request for the OpenSource JDBC Kafka Connector to make it usable for big MySQL databases:
https://github.com/confluentinc/kafka-connect-jdbc/pull/269
• Realtime Transfer of text (news articles) from a big MySQL DB to an Apache Kafka Topic (incl. Updates in realtime)
• Consultancy for creating build processes for Scala + SBT
• Monitoring of the Kafka Connect + Kafka Stream Apps
• CO-Development of a Maschine Learning Recommendation Application based on PredictionIO
• CO-Implementation + Improvment of the Open Source Project PredictionIO written in Scala (Recommender):
◦ https://github.com/apache/predictionio/pull/495
◦ https://github.com/actionml/universal-recommender/pull/62
• Setup, Configuration and Performance improvements of a Spark Standalone Clusters on AWS Maschine

• Creation of AWS EC2 Machine Images with Terraform

Tools, Frameworks and Environment


Scala 2.11 + 2.12, Akka, SBT, Kafka 0.10.2 – 1.0.0, Confluent Platform 3.2.x – 4.0, Kafka Connect, Kafka Streams, GIT, Gitlab, Docker, Docker Compose, Rancher, Apache Spark 2.3.1, Landoop, Coyote, Play Framework, Avro, MySQL, Amazon Web Services, PredictionIO Recommender, Machine Learning, Terraform

August 2017 – December 2017
Role: Big Data Architect & Consultant
Customer: gutefrage.net

Installment of a Big Data Pipeline based on Apache Kafka / Confluent Open Source Platform for a big internet Q+A platform
• Integration of different data sources to Kafka via Kafka Connect
◦ Rabbit MQ
◦ HDFS / Hadoop
◦ MySQL DB
• Save topic data to HDFS
• Normalize and Enhancement of RAW-Data via Introduction of Schema Registry + AVRO Format
• Coaching of Employees in Scala and Kafka concepts

Tools, Frameworks and Environment


Scala 2.11 + 2.12, SBT, Kafka 0.10.2 – 1.0.0, Confluent Platform 3.2.x – 4.0, Kafka Connect, Kafka Streams, GIT, Jenkins, Docker, Docker Compose, Mesos, Aurora, Landoop, Coyote, Play Framework, AVRO, MySQL

Mai 2015 – Juni 2017
Rolle: Architekt, Senior Developer, Coach
Kunde: autoscout24
Neuimplementierung einer großen internetbasierten KFZ Verkaufsplattform mittels Microservices auf Scala und AWS Cloud
  • Coaching
    • Scala Coaching
    • Technology Coaching
    • Softwaredesign + Test Driven Development Coaching
  • Mitentwicklung eines Preisbewertungstools für gebrauchte KFZ (Backend + Frontend)
  • Performanceanalyse und Optimierungen beim Umstieg auf JDK 8
  • Performanceoptimierungen und Monitoring von Microservices und deren Verwendung von Amazon Services (z.B. DynamoDB, Autoscaling)
  • Abstimmung mit AWS Technology Managern
  • Aufbau und Softwaredesign von Microservices (Template für Microservices)
  • REST API Design für Backendservices der KFZ Suche
  • Frontendentwicklung
  • Umsetzung der Infrastuktur für Consumer Driven Contract Testing
  • Implementierung Realtime Pipeline der Suche mittels Akka, Akka Streams und Kafka
  • High Availabilty, Resilience und Failover Konzeption der traffic-stärksten Seiten/Microservices bei AS24 ( bis zu 20.000 req/min)
  • Entwicklung und Betreuung einer Scala Bibliothek für das Erzeugen von strukturierten Events (CQRS Ansätze) aus Microservices
  • Implementierung und Betreuung eines Feature-Switching Tools (featurebee, Open Source: https://github.com/AutoScout24/featurebee-scala)
  • Aufbau von Microservices für die Registrierung und das Versenden von mobilen Push Registrierungen mit Amazon Dynamo DB und SQS

Tools und Umgebung
Scala 2.11, Akka, Akka Streams, Akka Actors, AWS (Amazon Webservices), SBT, Elasticsearch, Kafka, GIT, Oracle DB, Play Framework, Dropwizard Metrics, GOCD (Continuous Development Tool), HTML, Javascript, Ruby, Docker

 

Dezember 2014 – April 2015

Rolle: Architekt, Developer, Coach

Kunde helpster.de

Architektur und Entwicklung von Microservices und Textähnlichkeitsanalysen für helpster.de (werbebasierte Internetseite mit redaktionellem Content)

  • Architektur und Entwicklung eines Microservices der bei der Erstellung von neuen Artikeln im CMS System unterstützt:
    Ermittlung von relevanten Keywords mittels WDF/IDF Algorithmus aus einem sehr großen Datenbestand mittlels Apache Spark um das Google Ranking von Artikeln zu verbessern und damit die Artikelerstellung zu optimieren. Umsetzung von REST Schnittstelle und einer AngularJS UI für Use-Cases im Bereich WDF-IDF

  • Microservice mit REST Interface für die Ermittlung von verwandten helpster Artikeln und Gutefrage.net Content unter Verwendung von Elasticsearch (More like this)

  • Microsservice der eine interne Suche auf Basis von Elasticsearch mit zahlreichen erweiterten Features anbietet (Synonymunterstützung, verschiedene Autokorrekturen der Eingabe) zur Ablösung der vorher verwendeten Google Suche

  • Automatisierter Erkennung und Clustering von ähnlichen Dokumenten (Near Duplicate Content) mittels MLT von Elasticsarch und Clusteringverfahren (k-means, DBSCAN) sowie mittels LDA (Latent Dirichlet Allocation)

  • Einführung von Continuous Integration/Deployment in den neu entwickelten Scala Microservices

  • Scala Coaching und Coaching der Architektur für Microservices der internen Mitarbeiter

Tools und Umgebung

Big Data: Apache Spark, Elasticsearch, Hadoop, Scala 2.10 + 2.11, SBT, GIT, MySQL, Chef, Ruby, AngularJS, Bootstrap, Spray, Textähnlichkeitsanalysen mit Latent Dirichlet Allocation, Clusteringverfahren (k-mean, DBSCAN)

Oktober 2014 – November 2014

Rolle: Architekt, Developer, Coach

Kunde O2

Architektur- und Prozessberatung in mehreren Bereichen

  • Beratung zur Einführung von Microservices inkl. Serviceauthentifizierung

  • Unterstützung und Coaching bei der Umstellung auf Java 8 mit funktionalen Paradigmen

  • Einführung eines distributed In-Memory-Datagrids (Infinispan) für das Caching von zeitintensiven Backendcalls

  • Optimierung der Continuous Integration Pipeline und Beratung zur Optimierung hin in Richtung Continuous Deployment

  • Software-Review Prozessoptimierung

Tools und Umgebung

Java 8, Spring 4, Maven, Infinispan Cache, Crucible, Tomcat 7, GIT, Jenkins

Juni 2013 – September 2014

Rolle: Architekt, Developer, Coach

Kunde: gutefrage.net

Mitwirkung bei dem Umbau eines rein PHP basierten Frage/Antwort - Forums auf eine Scala basierte Servicearchitektur im High Traffic Bereich

  • Scala Software Development in den Services

  • Konzept und Umsetzung für die Wiederverwendung von allgemeinen Komponenten in den Services inkl. Einführung von Dependency Injection

  • Miterstellung der neuen Softwarearchitektur

    • API Thrift Design der Services

    • REST-Design der öffentlichen API

    • Konzeption der Authentifizierung und Authorisierung mittels JWT Tokens

    • Miteinführung von NoSQL (Redis) zur Speicherung von Accesstokens

  • Einarbeitung und Coaching auch neuer Mitarbeiter

  • Etablierung des Continuous Delivery Prozesses

    • regelmässige Servicereleases (weniger als 15 min nach Checkin) mit Zero Downtime

    • Mehrschichtige Testing- und Buildpipelines zur Qualitätssicherung mit automatisiertem Testing

Architektur und Mitentwicklung einer Android App für die führende Frage-Antwort Plattform in Deutschland

  • Durchführung einer Machbarkeitsstudie und eines Prototyps für die Umsetzung einer Android App mit Scala 2.11

  • Coaching des Teams bzgl. Scala & Android

  • Umsetzung der wichtigsten Basiskonzepte (z.B. Dependency Injection, Retries bei Verbindungsabrüchen zum Server u.v.m) der App

  • Einrichtung eines Continuous Integration Prozesses

  • Mitentwicklung bei allen Usecases der App

  • Interview mit mir bzgl. Scala auf Android: http://erika23.gutefrage.net/2014/05/22/java-oder-scala-wie-man-sich-fur-eine-sprache-entscheidet/

Tools und Umgebung

Scala 2.10-2.11, Twitter Finagle Stack, Linux, Intellij, Redis, MySQL, Memcache, GIT, Jenkins, Rabbit MQ, Spring AMQP, Apache Thrift, MySQL, NoSQL, JWT, Scalatest, Mockito, SBT, MogileFS, DI mittels CakePattern, Android 4.0 – 4.4, SBT

Januar 2011 – Mai 2013

Rolle: Senior Developer, Architect, Scrum Master & Technology Consultant

Kunde: Weltbild

 

Projekt Panther (Tolino):

Realisierung eines EBook Shops für den E-Ink Reader Tolino Shine

  • Softwarearchitektur und Umsetzung der neuen Geschäftsprozesse

  • MongoDB 2 Persistenz für Kundenprofilinformationen mit Spring Data sowie Anbindung der bestehenden Oracle DB

  • Authentifizierung und Authorisierung durch Eigenimplementierung eines OAUTH2 Providers mit JSON Web Token (JWT)

  • Rest-API für bestehende und neue Services mit Resteasy

  • Umsetzung einer ESB-ähnlichen (Enterprise Service Bus) Applikation mit Spring Integration für die asynchrone Verarbeitung von Requests wie z.B. Bestellungen, digitale Auslieferungen, Abfragen der E-Bibliothek, Supportanfragen für das CCC/SAP u.v.m.
    Messaging mittels MQ Series und HornetQ

  • Coaching und Aufbau einer Continuous Delivery Build Pipeline


Projekt FIT:

Anbindung eines großen deutschen Internetshops für Bücher, DVDs etc. an ein neues CRM- und Auftragsverwaltungssystem

  • Erstellung eines neuen annotationsbasierten Frameworks zur Kommunikation zwischen dem PHP Frontend und der Java Backend Schicht

  • Implementierung von performanten Exporten in JEE und JMS mittels HornetQ

  • Transaktionale Anbindung von JMS (MQ Series) basierten Artikelimports in die Artikel DB des Webshops inkl. Integration von Monitoring der Queues und Dead-Letter-Queues innerhalb der Anwendung mit RESTful HTTP

  • Vereinfachung der Architektur und der Infrastruktur in der Mittelschichts- und Produkt-Informationsanwendung

  • Anbindung der Bestellabwicklung des Shop Backends per SOAP Webservices an neues CRM/Auftragsverwaltungssystem

    • Schnittstellenanalyse und –design inkl. Abstimmung mit Fachbereich und anderen Entwicklungsteams

    • Technische Umsetzung mit Apache CXF

  • Einführung von neuen Testkonzepten und Testmöglichkeiten im Produktinformationssystem

  • Technologische Beratung und Etablierung eines Prozesses für die Verbesserung der technischen Architektur

  • Einführung eines Tools (Flyway) zur Versionierung und automatisierten Erweiterung des Datenbankschemas zur Optimierung und Vereinfachung des Anwendungs-Deployments hin in Richtung Continuous Deployment

  • Optimierung der Testbarkeit der Shopanwendung durch lokale Build-Datenbanken und schneller In-Memory-DBs

  • Erstellen von Schnittstellen und deren Beschreibung zu anderen Systemen

  • Verbesserung des Continuous Integration und Einführung eines Continuous Deployment Prozesses

  • Einführung von Functional Testing der Mittelschichtsanwendung mit simulierten JSON Requests des Frontends und komplettes Testing inkl. PHP Frontend mit Selenium 2

  • Coaching und Durchführung von Schulungen der Mitarbeiter (z.B. GIT mit SVN) und Weitergabe von technischem Know How

  • Durchführung von Architektur- und Codereviews

  • SCRUM Master für ein Entwicklungsteam

  • Optimierung der Abläufe und Scrumprozesse (Beratung im Bereich agiler Methoden)

  • Fehlerbereinigung eines Regelwerks zur Warenkorbvalidierung auf Basis Visual Rules (Rule Engine) und Anbindung an den Internetshop nach Refactoring und Kapselung des alten Validierungscodes

Refactoring und Neuentwicklung der Suchfunktionalität (Basis Apache Lucene) des Webshops

  • Implementierung der Clusterfähigkeit der Suchagenten und Crawler

  • Verteilung von Delta-Indices im Suchcluster

  • Monitoring der Suchanwendung mittels RESTful http

Tools & Umgebung:

Apache CXF, SOAP Webservices, WS-Reliable Messaging, WS-Addressing, SoapUI, JBOSS 4.3, JEE5, Spring 3.1, IBM DB2, Oracle 11g, H2 DB, JUnit, Linux, Jenkins/Hudson Continuous Integration Server, Continuous Deployment, Mockito, JMS, HornetQ, Eclipse, GIT, Subversion, Hibernate, JPA, Maven, Ant, Cargo, Flyway, Jira, Crucible, Scrum, SAP, VisualRules 5.1 (RuleEngine), Apache Lucene 3.4, JGroups, Selenium 2, RESTful HTTP, REST, Resteasy, JAX-RS, Spring Integration, Spring Data, MongoDB

Mai 2012 - heute

Rolle: Architect & Entwickler

Kunde: MCA Augsburg

Erstellung einer Android App und einer Appengine Cloud Serverkomponente zur Überwachung von Öffnungszeiten eines Sport-Trainingsgeländes

  • Überwachung des Öffnungsstatus mittels Spring MVC Anwendung innerhalb einer Google Appengine Anwendung und Veröffentlichung der Informationen als REST-Service

  • Dynamische Push Benachrichtigung vom Server zu den Androiddevices mittels C2DM/GCM

  • https://play.google.com/store/apps/details?id=de.threedimensions.enduropark.android

Tools & Umgebung:

Android 2.3 und Android 4, Google Cloud-To-Device Messaging (C2DM), Google Cloud Messaging (GCM), Intellij IDEA, GIT, Google Appengine, Spring 3.1, REST, Json

Dezember 2012

Rolle: Coach

Kunde: HUK Coburg

Standort: Coburg

Durchführung eines eintägigen Workshops zum Thema Versionsverwaltung mit GIT inkl. Beratung zur Migration.

April 2012 – August 2012

Rolle: Architect & Coach

Kunde: Transparo

Standort: Augsburg

Technologische Beratung, Architektur, Coaching und Umsetzungstätigkeit bei einem Portal für Versicherungsvergleiche

  • Erstellung der Architektur und Beratung bei der Konzeption für ein neues Modul/eine neue Anwendung auf Basis neuer Technologien, die schrittweise auch die auf veralteten Technologien (WebObjects) basierenden Anwendungen ablösen

  • Beratung bei der Einführung der Versionsverwaltung GIT (Umstieg von CVS)

  • Einführung von Continuous Integration und Testdriven Development

Tools & Umgebung:

Spring, Spring MVC, Spring Data, Oracle, Jenkins, GIT, CVS, Eclipse, Tomcat, WebObjects, Hibernate 4

Januar 2011 – Februar 2012

Rolle: Architect & Developer

 

Erstellung einer personalisierten, cloudfähigen Blogsoftware mit Schnittstellen zu verschiedenen Plattformen

  • Architektur & Konzeption

  • Implementierung



Tools & Umgebung:

OpenID, OpenID4Java, Google AppEngine, Google Web Toolkit (GWT), Spring 3, REST, RESTFul HTTP, JSON, Ajax, GIT, Java JDK 1.6, Gradle

November 2011 – März 2012

Rolle: Coach & Architect

Kunde: BG ETEM

Standort: Augsburg

 

Coaching eines Entwicklers und Mitentwicklung (Pair-Programming) bei der Umsetzung des gesamten Projekts „Medienverteiler“, einer JEE Backendanwendung mit Swing GUI auf dem Client die u.a. zur Verwaltung der Empfänger von BG-ETEM Medien verwendet wird.

  • Beratung des Fachbereichs und der Entwicklung für die Umsetzung und Priorisierung neuer Features

  • Coaching in JEE6, JPA & Hibernate, Test Driven Development (Servicetests ohne laufenden JBoss), Transaktionen mit Datenbanken, Softwarepatterns und vielen Best Practices

  • Erstellung und Design einer Serviceschicht

  • Coaching und Mithilfe bei der Umsetzung der Swing GUI

  • Neuerstellung und Coaching: Erstellung eines Datenbankmodells

  • Einführung von QueryDSL als typsichere, kompaktere Alternative zur Criteria API

  • Einrichten einer Continuous Integration Umgebung

  • Coaching und Umsetzung bei Deployment und Packaging der Anwendung

Tools & Umgebung:

JEE 6, JBoss 6, IBM DB2, JPA 2, Hibernate 3.6, QueryDSL, Swing, Citrix, Soap Webservices, ANT, Jenkins, Testdriven Development, JUnit

Oktober 2010 – Januar 2011

Rolle: Senior Developer, Technology Consultant und Agile Coach

Kunde: GMX

Standort: München

Rekonzeption, Refactoring und Weiterentwicklung der Internet Registrierungsanwendung eines großen deutschen Mailanbieters (basierend auf Apache Wicket)

  • Technologieberatung und Kurzvorträge/Tutorials für Entwickler

  • SCRUM - Einführung und Prozessberatung

  • Refactoring und Bereinigung der Architektur und des Build- & Deploymentprozesses

  • Design und Implementierung neuer Features

  • Anbindung von Drittsystemen mittels Webservices (Spring WS)

  • Analyse und Lösung von bestehenden Problemen im Bereich Memoryleaks (PermGen Space), sowie beim Loadbalancing der geclusterten Anwendung

Tools & Umgebung:

Wicket 1.4, JSON, Ajax, JQuery, HTML+CSS, Spring 2.5 und 3, Tomcat 5.5 & 7, Apache Webserver, Oracle, Maven 3, JUnit, EasyMock, Mockito, GIT (git-svn), SVN, Hudson, JDK 1.6, Eclipse 3.6, Linux, Drools, JSR 303 (Bean Validation), Loadbalancing + Clustering (bei Sticky Sessions), VisualVM, YourKit Profiler, Spring Webservices, Axis

Mai 2010 – Oktober 2010

Rolle: Softwarearchitekt, Senior Developer und Technology Consultant

Kunde: Lokalisten.de

Standort: München

Neuimplementierung und Refactoring eines kommentierbaren Activityfeeds einer großen Social Network Plattform mit extremen Near-Realtime und Performanceanforderungen

Implementierung einer Kommentarfunktionalität der Statusmeldungen innerhalb des Activityfeeds mit Darstellung für alle Benutzer in Fast-Echtzeit

  • Technologische Beratung

  • Architektur und Implementierung (UseCase orientiert, Backend (DB/NoSQL) bis Frontend)

  • MongoDB: Ausführliche Evaluation und Machbarkeit einer weichen Migration zu performanten und skalierbaren NoSQL Technologien

    • Einführung, Architektur und weiche Migration auf die NoSQL Datenbank
      MongoDB mit Ablösung einiger zentraler Standard Datenbank-Tabellen
      (MySQL)

    • Verwendung des Shardingfeatures der MongoDB (Segmentierung von Daten
      auf verschieden MongoDB Instanzen)

    • Durchführung von Lasttestszenarien und intensive Fehleranalyse im
      Hochlastbetrieb mit den Entwicklern von MongoDB

    • Performanceanalyse in einem Umfeld mit einer Tomcatfarm von 80
      Servern und 2 MongoDB Instanzen, die im Shardingmodus arbeiten

    • Evaluation von Alternativen zu SQL und NoSQL, wie z.B. In-Memory-Datagrids

  • Umsetzung mit verteiltem In-Memory-Datagrid (Hazelcast) und Memcache

  • Performanceoptimierung und Testerstellung

  • Aufbau von Continuous Integration, Continuous Deployment und Buildprozessoptimierung

  • Planung und Durchführung des Umstiegs von CVS auf GIT

Tools & Umgebung:

Spring, Memcache, Hazelcast, EhCache, Hibernate, NoSQL, MongoDB, MySQL, Tomcat 6, Struts, HTML, JSTL, JSP, Javascript, Ajax, JQuery, Prototype, Ant, Eclipse (STS), JMeter, Selenium, Linux, MacOS X, GIT, CVS, Hudson

August 2009 – Mai 2010

Rolle: Senior JEE Developer, Senior Consultant im Bereich Continuous Integration und Buildprozess



Kunde: Loyalty Partner Solutions (Payback)

Standort: München

Umsetzung eines neuen Kundenbindungssystems für eine große deutsche Fluggesellschaft auf Basis von OSGI und JEE

  • Anbindung von Drittsystemen mittels Batchverarbeitung, EJB und Webservices

  • Umsetzung von Workflows mit JBPM

  • Umsetzung der Business Logik unter Verwendung von austauschbaren OSGI -Bundles

  • Optimierung der Roundtripzeiten bei der Entwicklung

  • Mitwirkung beim Refactoring des Loyality Cores (Reduzierung von DTOs, Verwendung eines einheitlichen Domainmodels mit Hibernate Mappings auch bei internen Schnittstellen)

  • Unterstützung bei der Einführung des funktionalen Testframeworks „Fitnesse“ zur Umsetzung von Akzeptanztests (auch automatisiert im Rahmen des CI-Prozesses)

  • Beratung zur Verbesserung der Continuous Integration Umgebung inkl. Umsetzung: Ablösung von Cruisecontrol, Umstellung auf Hudson

Tools & Umgebung:

Scrum, Oracle 10, Hibernate 3.3, Hudson, Unix, Eclipse, Java 1.6, OSGI, Equinox, JUnit, Mockito, Weblogic 10, EJB 3, JMS, Fitnesse, Hudson, Maven 2.2.1, JBPM, Magic Draw, AndroMDA

Januar 2009 – Juli 2009

Rolle: Senior JEE & Spring Developer, Architect

Kunde: Loyalty Partner Solutions (Payback)

Standort: München

Refactoring, Erweiterung und Fertigstellung einer komplexen Loyality Plattform auf JEE Basis für ein europäisches Land bestehend aus Internetshop, Callcenter-App und Backendimplementierung für die Prozess- und Workflowunterstützung und Module für die Batch- und Jobverarbeitung.

  • Refactoring der Architektur (vor allem Komplexitätsreduzierung und Verbesserung der automatischen Testbarkeit und der Konfiguration) und der Infrastruktur.

  • Schnittstellenspezifikation und deren Abstimmung für den Datenaustausch mit Partnern über Flatfiles, XML und Webservices. Implementierung und Test der Schnittstellen.

  • Design und Implementierung mehrerer komplexer Prozesse im Backendbereich inkl. Datenbankanbindung u.a. mit EJB 3

  • Refactoring des bestehenden Batch- und Jobframeworks weg von einer von dem Rest der Anwendung getrennten Mule Standalone-Anwendung zu einer in die JEE Applikation integrierten Lösung mit erheblich vereinfachter Konfiguration über Spring

  • Performanceanalyse des Code, Optimierung und Fehlerbehebung unter anderem im Bereich der Verwendung von XA Transaktionen

  • Optimierung von Continuous Integration im Projekt (Cruisecontrol)

Tools & Umgebung:

Scrum, Eclipse 3.4, Bea Weblogic 10.1, Spring 2.5, Hibernate 3, AndroMDA, UML, MagicDraw, EJB 2.1 und EJB 3, Mule ESB 1.3.3, JMS, XA Transactions, Maven, Cruisecontrol, JAX-WS, SOAP, XML Schema, Oracle 10

Mai 2008 – Dezember 2008

Rolle: Senior Developer, Berater in Architektur & Technologiefragen, Spring & Webservice Experte

Kunde: KVB

Standort: München

 

Komplette Neuimplementierung inkl. Refactoring der technischen Architektur eines Dokumentenverwaltungs- und Dokumentenworkflowsystems (Webanwendung) auf IOC Konzepte und Spring Webflow.
Verbesserung der Wart- und Testbarkeit von bestehenden Bibliotheken und Realisierung der Anwendung mit Spring 2.5 und Spring Webflow unter Einsatz von AspectJ Features.

  • Umsetzung von zahlreichen neuen fachlichen Anforderungen, inkl. Implementierung mehrerer neuer Workflows

  • Einführung von Spring Security 2 für das Berechtigungskonzept der Anwendung & Coaching der internen Mitarbeiter

  • Einführung von Ajax Technologien für eine Rich UI mittels Spring-Javascript und Dojo

  • Einrichten eines Continuous Integration Servers (Hudson) inkl. Reporting


Implementierung einer Anwendung zur Synchronisation zweier Datenbanken mit unterschiedlichen Schematas:
Das Datenbankschema des Dokumenten-workflowsystems musste aufgrund fachlicher und gesetzlicher Anforderungen angepasst werden, dabei wurden die Daten migriert, ein Teil der Anwendungen musste jedoch noch auf dem alten Schema (und damit der alten DB-Instanz) arbeiten

  • Design und Implementierung der Synchronisationsanwendung mit Hibernate 3.3, JPA Annotations auf Oracle 10g

  • Optimierungen in Hinblick auf Massendatenverarbeitung der Dokumente

  • Massiver Einsatz von AspectJ zusammen mit Spring 2.5 für verschiedenste Bereiche der Anwendung

  • Einsatz von DBUnit und HSQLDB für automatisiertes Integrationtesting inkl. Integration von Testcoveragetools in den Buildprozess

  • Spring Batch mit Quartz als Batch-Execution Wrapper

  • Integration von JMX und Spring`s JMX-Support zur Fernwartung mittels JConsole



Architektur und Implementierung (Durchstich) eines Frameworks für automatisiertes Functional Testing von Webapplikationen auf Basis von Selenium, Maven2 und Jetty



Technische Beratung zu den Themen Spring, Maven 2, Schnittstellendesign, Webservices und modularsierter Architektur


Einführung eines Bugtracking- und Releasemanagement-Prozesses für die Zusammenarbeit der Entwicklungsteams untereinander und mit den Fachbereichen basierend auf JIRA



Tools & Umgebung:

Spring 2.5 (z.b. Spring AOP, AspectJ, Transactionmanagment, Spring ORM, Spring Testframework), Spring Webflow 2.0, Spring Security 2.0, Spring Batch 1.1, Apache Tomcat 6, Eclipse 3.3 & 3.4, Enterprise Architect, UML, Java 1.6, AspectJ, Oracle 10, HSQLDB (für Integrationtesting), DBUnit, Hibernate 3.3, JPA Annotations, Maven 2, Cobertura, Emma, Junit 4.4, EasyMock, Spring Batch, Hudson CI Server, Continuum CI Server, JIRA, FindBugs, Selenium, Jetty 6.1, Ajax (Dojo, Spring-Javascript)

Februar 2006 – April 2008

Rolle: Senior Developer & Architekt

Kunde: O2

Standort: München

Dauer: 24 Monate

Hauptaufgabe: Implementierung und technische Architektur des Middletiers für die Anbindung des neuen CRM-Systems an die Portallandschaft bei O2.

  • Anbindung des Backend CRMs mittels Webservices und Contract-First Ansatz

    • Fachliches und technisches Design der Webservice-Schnittstelle, die das Backendsystem implementieren muss

    • JAX-WS 2.x

    • Nachrüsten der fehlenden Validierungsfunktionalität in JAX-WS für Rpc/Literal und Document-/Literal&Wrapped-Webservices

    • Einbau von WS-I (Web Services Interoperability)-Validierung im Buildprozess mittels Maven-Plugin

    • Integration von WS-Security (OASIS Simple Username Token Profile)

    • JAXB 2.x

  • Mitwirkung bei der Konzeption und der technischen Architektur der Service-, Persistenzschicht sowie bei der Anbindung der Backends (z.B. CRM).

    • Einsatz von UML und entsprechenden Tools (Rational Rose, Omondo UML)

  • Massiver Einsatz von Spring 1 und Spring 2 im gesamten Middletier und Frontend:
    JMX-Bean-Exposing, Transaktionssteuerung, Interceptoren, Aspektorientierung mit Spring 1 AOP und AspectJ (nach Spring 2 Umstellung), Dependency Injection auch bei von Legacy-Frameworks (z.B. Abaxx) erzeugten Objekten, Spring Testsupport, Spring ORM

  • Implementierung von Business-Services als POJOs und Remoting per EJB über Stateless Session Beans mit Spring-Unterstützung

  • Unittesting mit Einsatz des Mockframeworks EasyMock zum Mocken von Abhängigkeiten der zu testenden Klasse

  • Implementierung von Webservice-Endpoints mittels JAX-WS, die anderen Systemen zur Verfügung gestellt werden

  • Analyse und Evaluation des einzusetzenden Webservice-Frameworks (JAX-WS, Axis 1+2)

  • Umstellung der gesamten JEE Anwendung von Spring 1 auf Spring 2

  • Aufsetzen der Infrastruktur und Implementierung von Integrationtesting in Containern (Tomcat und Jboss 4, je nach Anwendung) mittels Cargo

  • Einführung und Coaching von Tools zur Unterstützung von agilen Prozessen (Cruisecontrol)

  • Ablösung von ANT und Einführung von Maven 2 inkl. Coaching bei Fragen zur Modularisierung von großen JEE Anwendungen und Fragen zu Maven allgemein

  • Implementierung einer Vielzahl von Maven 2 Plugins und Bugfixing/Analyse von bestehenden Plugins

  • Frontendentwicklung mit JSP, JSTL und Abaxx (Struts-ähnlich)

    • Design & Entwicklung einer minimalen Abstraktionsschicht für das proprietäre Webframework zur Erleichterung des Unittestings von Frontend-Controllern

  • Einsatz von SCRUM im Projekt

  • Implementierung der Persistenzschicht für Hochverfügbarkeit der Portalanwendung mit Hibernate 2 und 3 (Upgrade im Laufe des Projektes)

    • Erstellung des Domainmodells in Java, Annotation mit JPA- und Hibernate-spezifischen Annotationen

    • Generierung des DB-Schemas aus dem Modell und Feintuning (Datenbanken: Oracle 9.2 und für Testzwecke: HSQLDB)

    • Implementierung von DAOs für die Business-Services u.a. mittels Spring-Templates

    • deklarative Transaktionssteuerung über Spring

  • Umstellung der Enterprise Applikation von JBoss 3 auf JBoss 4

  • Analyse und Beratung bei Classloader-Isolationen/Hierarchien im JBoss

  • Eclipse EMF + ECore Einsatz zur dynamischen Erzeugung einer DSL und Codegenerierung von Java Klassen mittels Eclipse JET2

  • Java-to-XML Binding mittels JAXB 2.x

  • Breiter Einsatz von XML Schema für Webservices und zur Definition von DSLs

  • XSLT für kleinere Transformationsaufgaben

  • Implementierung einer Loganalyse-Webanwendung mit Groovy und Grails

Tools & Umgebung:

Spring 1 + 2, Java 1.5, Maven 2 inkl Pluginentwicklung, ClearCase, XMLSpy, Eclipse 3, Rational Rose, UML, Omondo UML, JBoss 3 + 4, Apache Tomcat 5.5, JAXB, SOAP, JAX-WS, Axis 1+2, WS-Security, WS-I, SoapUI, SCRUM, Oracle 9.2 DB, HSQLDB, Hibernate 2+3, Eclipse EMF + ECore, XML Schema, XSLT, EasyMock, Cargo, Groovy, Grails

Dezember 2005 – Februar 2006

Rolle: Senior Developer & Architekt

Kunde: Schüco

Standort: München (Inhouse Entwicklung CSC)

Dauer: 3 Monate

Komplettes Redesign, Refactoring und Erweiterung einer Tomcat-basierten Webanwendung zur Pflege und Bereitstellung von Ausschreibungsunterlagen für ein internationales Industrieunternehmen in der Baubranche (Schüco)

  • Businesslogik-Entwicklung der Services der Webanwendung und Implementierung von Unittests

  • Einführung von Spring 1 zur Dependency Injection, Transaktionssteuerung, Abstraktion von Hibernate, Testsupport, Frontendfilter u.v.m.

  • Umstellung auf Hibernate 3 inkl. konsequentes Umstellen der bestehenden Anwendung

  • Frontendentwicklung mit Struts 1.2, JSP, JSTL

  • Neuerstellung des Domainmodells und Generierung des DB-Schemas mit Hibernatemapping auf Basis Oracle 9.2

  • Einsatz von XDoclet 2 zur Generierung von Metadaten und J2EE Infrastrukturklassen aus annotierten EJBs

  • Buildprozess und Konfigmanagement auf Basis Subversion und Maven 2

Tools & Umgebung:

Oracle 9.2, Eclipse, Java 1.4, Maven 2, Subversion, Hibernate 3, Spring 1.2, JSP, JSTL, Struts 1.2, Apache Tomcat, JUnit

September 2005 – Januar 2006

Rolle: Application Designer & Developer

Kunde: Volksfürsorge

Standort: Hamburg

Dauer: 5 Monate

Entwicklung eines Angebotssystems für die Sparten Sach, Unfall und Haftpflicht für einen Versicherungskonzern (Deutsche Volksfürsorge Hamburg)

  • Aufbau, Gestaltung und Verwaltung der kompletten Projektinfrastruktur und Projektgliederung (Modularisierung) für das Entwicklungsteam

    • Aufsetzen der Versionsverwaltung (Subversion) inkl. Server

    • Projektstrukturierung (Einteilung in Module)

    • Buildsystem (Iterative Builds) auf Basis Maven 2 und Cruisecontrol

    • Verbindung Buildsystem / Entwicklungsumgebung

Tools & Umgebung:

Eclipse, Maven 2, ANT, Subversion, Cruisecontrol, Bugtrackingsoftware Mantis, TikiWiki

August 2004 – Juli 2005

Rolle: Senior Developer

Kunde: DaimlerChrysler

Standort: Sindelfingen

Dauer: 12 Monate

Erstellung einer internetbasierten Anwendung zur Unterstützung der Qualitätssicherung bei einem großen Automobilkonzern (DaimlerChrysler) auf Basis der J2EE Plattform

  • Gestaltung und Verwaltung der kompletten Projektinfrastruktur und der Projektgliederung

    • Versionsverwaltung CVS

    • Projektstrukturierung (Modularisierung der Anwendung)

    • Aufbau des Buildsystems inkl. iterative Builds mit CruiseControl und Maven inkl. Integration von UnitTests und In-Container-Tests

    • Verbindung Buildsystem / Entwicklungsumgebung

  • J2EE Entwicklung

    • Mitarbeit bei der Umsetzung der Persistenzschicht mit ORM-Tool Hibernate auf DB2 Datenbank

    • Webanwendungsentwicklung mit Struts 1.2

    • Entwicklung von Businesslogik mit EJBs unter IBM Websphere

    • Implementierung der Anbindung von externen Systemen (filebasiert CSV, XML-basiert)

    • Unittesting und In-Container-Testing

    • Einsatz von Dbunit für das Testen der DAOs

    • Einsatz von XDoclet 1 (Generieren von Metadaten und EJB-Infrastrukturklassen aus der annotierten Bean)


Projektname: QEC-Tool

Tools & Umgebung:

Eclipse 2, IBM DB2, IBM Websphere 5, ANT, Maven 1, CVS, Struts 1.2, Java 1.3, Versch. Java-XML Frameworks, Apache Cactus Integrationtesting, Hibernate 2, JUnit

März 2002 – Mai 2004

Rolle: Senior Developer & Application Designer

Kunde: WWK

Standort: München

Dauer: 27 Monate

Erstellung einer javabasierten Anwendung zur Umsetzung der Angebotsprozesse einer mittelgroßen Versicherung (WWK). Die Anwendung besteht aus einer Plattform, auf deren Basis neue Produkte einfach entwickelt und in die bestehende Anwendung integriert werden können. Zielumgebungen sind Desktop- und Webversion mit möglichst großer gemeinsamer Codebasis

Aufgaben:

  • Entwicklung einer hochflexiblen PDF-Generierungslösung inklusive Voransicht und Validierung der logischen Dokumentenstruktur.

    • Architekturentwurf & Konzeption, Konzeption für eine Dokumentengliederung und Erstellung einer XML-Grammatik (Domain Specific Language) zur Beschreibung der Dokumentenstruktur

    • Implementierung und Unittests

    • Integration in Desktop- und Webversion des Angebotsprogrammes

  • Weiterentwicklung der Plattformarchitektur und Implementierung der Desktop- und Webversion, insbesondere der Prozessengine und der generischen Dialogablaufsteuerung

  • J2EE Entwicklung für die Webversion

  • Know How Transfer und Schulung der internen IT-Mitarbeiter der WWK

Tools & Umgebung:

Bea Weblogic 6, TogetherJ, Eclipse 2, EJB, MessageDriven EJBs, Stateless Session Beans, Swing, Apache FOP, XML, XSLT, XSL-FO, XSD (XML Schema), Dom4j, JDOM, XMLSpy, Apache Maven 1, ANT; JUnit

Projektname: AVANTI

November 2001 – Februar 2002

Rolle: Developer

Kunde: Arsdigita (RedHat)

Standort: München

Dauer: 4 Monate

Aufbau eines kundenspezifischen browserbasierten Workflow- und CMS Systems für das Intranet der deutschen Post

  • Frontendentwicklung auf Basis eines proprietärem XML/XSLT basierten Webapplication-frameworks

  • Implementierung von UseCases

Tools & Umgebung:

Netbeans, Perforce, ANT, XSLT, XML

August 2001 – Oktober 2001

Rolle: Trainer

Dauer: 3 Monate

Konzeption und Durchführung eines EJB 2.0 Lehrganges für die Mitarbeiter der Firma Wistec

Tools & Umgebung:

TogetherJ, Java, EJB / J2EE

Juni 2001- Juli 2001

Rolle: Developer

Dauer: 2 Monate

Konzeption und Erstellung einer fehlersicheren Server-Daten-Transferkomponente in Java 2

  • u.a. Einsatz von Servlets und des JNI für eine C++-Schnittstelle (Protokolle: HTTP, HTTPS, FTP, POP3, SMTP)

  • Übertragung, Synchronisierung und Abruf von Daten über die oben

  • genannten Protokolle

Tools & Umgebung:

TogetherJ, CVS, Java, JavaMailAPI

Januar 2001 – Mai 2001

Rolle: Developer & Architekt

Kunde: SKL Holzscheiter

Dauer: 5 Monate

Entwicklung eines Lotterie-Online-Shops in Java auf Apache Tomcat

  • Design des Datenbankschemas

  • Umsetzung der Persistenzschicht in Java

  • Umsetzung der Businesslogik als Services mit u.a.

    • Implementierung von Bestellvorgängen

    • Anbindung von Kreditkartenzahlung

    • Versenden von Bestätigungs- und Newslettermails mittels JavaMail API

  • Frontendentwicklung

Tools & Umgebung:

Linux, MySQL-Datenbank, Tomcat/Apache, PowerDesigner, TogetherJ, JSP, JSTL, Java, JavaMailAPI

Mai 2000 – Dezember 2000

Rolle: Developer

Dauer: 8 Monate

Entwicklung und Konzeption einer 3D-Community in Java auf einem Linux-System

  • Basierend auf Blaxxun-Plattform

  • Java für die Umsetzung von Aktionen und Services

  • VRML für die Erweiterung der 3D-Welt

Tools & Umgebung:

VRML, CVS, Java

März 1998 – September 1998

Rolle: Developer

Dauer: 7 Monate

Erstellung eines Reportgenerator-frameworks für Java2 Applikationen

  • Design der Api

  • Implementierung des Reportgenerators

  • Einsatz im Kassensystem K2 und des Warenwirtschaftssystem F3 der Firma Infomatec AG

Tools & Umgebung:

Kawa, Java2, CVS