Author Image

Hi, I am Marc

Available from January 2027 Freelance projects, remote or on-site in NRW

Email me about a project What I take on, and how I work

Marc Nützel

Senior Java Architect · Legacy Modernization & Cloud Migration

I take Java systems that have grown for a decade and move them onto Kubernetes and event-driven architecture without stopping the business that depends on them. Since 2010 I have built backend platforms in logistics, energy, e-commerce and fintech. Recent years have mostly been migrations: Docker Swarm to Kubernetes and on-premise applications to Azure, plus a legacy work-order feed that got wrapped in an anti-corruption layer instead of a rewrite. Claude Code and custom agent skills are part of how I deliver, with a human reading every change before it merges. Open for freelance projects from January 2027, remote or on-site in NRW.

Available from January 2027 Freelance projects, remote or on-site in NRW
Email me about a project

Skills

Recent Posts

Projects

Event Sourcing on PostgreSQL
Author 2026

A working event store on plain PostgreSQL, without a broker, an ORM or a framework. One table, one aggregate, plain JDBC, optimistic concurrency on the stream version, snapshots, and a Testcontainers suite that runs against a real database. Companion code to the article of the same name.

Transactional Outbox on PostgreSQL
Author 2026

Business state and the outgoing message committed in the same transaction, then relayed to a broker with FOR UPDATE SKIP LOCKED so two relays can run without publishing anything twice. Tests cover rollback, broker outage and concurrent relays.

DDD enforced at build time
Author 2026

jMolecules marks the DDD building blocks, ArchUnit turns the architecture rules into tests, and the pipeline fails on a violation instead of a reviewer catching it in the diff. Ships with a deliberately failing example so you can see what a violation looks like before you have one.

Testcontainers patterns
Author 2026

Four patterns that pay off in a real pipeline. A singleton container shared across the suite, per-class lifecycle where the isolation is worth the startup cost, a seeded schema, and WireMock for the third party you do not control.

Experiences

1
ista SE

April 2020 - December 2026

Essen

ista SE is one of the leading energy service providers, helping apartment buildings and commercial properties become more energy efficient.

Manager Software Engineering (hands-on architecture and backend development)

May 2025 - December 2026

Responsibilities:
  • Contributed to a greenfield, event-sourced platform that serves as the system of record for property units and the full lifecycle of their metering devices (installation, replacement, removal)
  • Part of the team building the backend in Kotlin on Spring Boot 4 / Java 25, running in production on Azure Kubernetes Service
  • Domain-Driven Design enforced at build time (hexagonal architecture and DDD building blocks validated by jMolecules and ArchUnit), so an architecture violation fails the pipeline instead of slipping through review
  • Event Sourcing and CQRS on a PostgreSQL event store (state is rebuilt by replaying domain events), which gives a complete and auditable history of every device change instead of overwritten rows
  • Anti-Corruption Layer that keeps the core domain clean (consumes work orders from Azure Service Bus, validates and transforms legacy formats into domain events, and integrates SAP via OData and SOAP)
  • Contract-first API design with OpenAPI 3 and JSON Schema as the single source of truth; API clients and event classes are generated from the contracts, so services cannot drift apart
  • Testing across the pyramid (unit and integration tests with JUnit 5, Mockito, WireMock and Testcontainers, plus a Cucumber / REST Assured BDD suite that verifies business processes end to end)
  • GitOps delivery (GitLab CI builds and versions the service, ArgoCD syncs Helm charts to AKS; SonarQube, Spotless and OpenRewrite gate every merge)
  • AI-assisted development as part of daily delivery (Claude Code with custom agent skills and automated review loops for code review, test generation and repetitive refactorings), with every change still reviewed by a human before merge
  • Kotlin, Java 25, Spring Boot 4, Event Sourcing, CQRS, DDD, Hexagonal Architecture, PostgreSQL, Flyway, Azure Service Bus, CloudEvents, SAP OData/SOAP, Docker, Kubernetes (AKS), Helm, ArgoCD, Terraform, GitLab CI, JUnit, Mockito, Testcontainers, WireMock, Cucumber, OpenAPI 3, Maven, Claude Code
DevOps Engineer

March 2025 - May 2025

Responsibilities:
  • Built and maintained the shared CI/CD platform (reusable GitLab CI pipeline templates and Infrastructure-as-Code modules that development squads adopt instead of writing their own)
  • Defined the cloud architecture for centralised and squad-specific DevOps use cases on Azure
  • Set up and operated the development, test and production environments, including the tooling around them
  • Consulted and mentored development teams on their application lifecycle, with a focus on CI/CD
  • Azure, GitLab CI, Terraform, Kubernetes, Helm
Fullstack Developer

April 2020 - March 2025

Responsibilities:
  • Migrated the service landscape from Docker Swarm to Kubernetes and moved on-premise applications to Azure, while the services kept running for the business that depended on them
  • Replaced manual data consolidation across several source systems with Spring Boot integration services feeding one central system
  • Decoupled services that had been calling each other synchronously, using JMS on ActiveMQ and Spring Batch for the work that belonged in a batch
  • Designed and documented the REST APIs contract-first with OpenAPI 3.0, so the consuming teams stopped guessing
  • Developed the matching Angular frontends and covered the backends with JUnit and Mockito tests
  • Java, Spring Boot, Docker, Kubernetes, Hibernate, Liquibase, Angular, GitLab CI, JUnit, Mockito, Spring Batch, Azure, Maven, MariaDB, PostgreSQL

WBA GbR · Pitchtri

2020 - Present

Remote

WBA is my own three-founder company. Its product Pitchtri is a talent-management platform that lets tech recruiters manage, compare and match IT freelancer profiles to projects.

Co-Founder & Software Architect

2020 - Present

Responsibilities:
  • Co-founded the company; responsible for product architecture and delivery end to end, from domain model to production operations
  • Designed the microservice landscape (auth, profile, projects, contracts, billing, mail, realtime and API gateway), built in Java with Micronaut and GraalVM native-image support, Angular frontend
  • Contract-first APIs with OpenAPI 3 and generated clients, event-driven service integration via Kafka
  • Full platform runs on a self-hosted Kubernetes cluster (Traefik ingress, PostgreSQL, Valkey, MinIO, GitLab CI with GitOps deployments)
  • AI product features built on the Anthropic API (CV import and automatic role-description generation)
  • Java, Micronaut, GraalVM, Angular, PostgreSQL, Flyway, Kafka, Valkey, MinIO, Docker, Kubernetes, Traefik, GitLab CI, Spock, OpenAPI 3, Anthropic API
2

3
DB Schenker AG

August 2014 - March 2020

Essen

DB Schenker is a leader in supply chain management and logistics solutions, handling everything from logistics to customised shipping solutions.

Java Backend Developer

Feb 2020 - March 2020

Responsibilities:
  • Built business and integration services in Java EE and Spring Boot, deployed as containerised microservices
  • Designed entity relationship models and optimised complex queries
  • Implemented synchronous and asynchronous interfaces, using REST (JAX-RS, JSON), SOAP (JAX-WS) and messaging via JMS/ActiveMQ
  • Built high-volume, low-latency services and verified them under load with Gatling.io and JMeter
  • Applied object-oriented analysis and design with common design patterns, and supported the build and deployment process
  • Java, Spring Boot, Docker, Hibernate, Flyway, GitLab CI, Spock, Kubernetes, AWS, Maven
Lead Developer

Feb 2018 - Jan 2020

Responsibilities:
  • Designed and built a microservice architecture for route planning, from the first MVP to production
  • Set up the CI/CD pipelines and the delivery process for the new service landscape
  • Built up the development team (first nationally with external contractors, then a permanent team of six developers in Poland)
  • Handed the project over to the team in Poland and established a lead developer role there
  • Java, Spring Boot, Docker, Hibernate, Flyway, GitLab CI, Spock, Kubernetes, AWS, PostgreSQL, Maven
Java Backend Developer

Jan 2017 - Jan 2018

Responsibilities:
  • Designed and built a service layer in front of a legacy application, so new applications could integrate against a modern API
  • Worked in a team of four developers in Essen and delivered the project on schedule
  • Java, Spring Boot, Docker, Hibernate, Flyway, GitLab CI, JUnit, Kubernetes, AWS, Vue.js, Netflix Stack, PostgreSQL, Maven
Java Backend Developer

Jan 2016 - Jan 2017

Responsibilities:
  • Supported the company-wide initiative to move Schenker applications to AWS, in a team of ten developers in Essen
  • Built the AWS VPC foundation and provided hardened AMIs for the application teams
  • Containerised legacy applications and provided the supporting Docker images for the CI pipelines
  • Kubernetes, Docker, Terraform, Packer, GitLab CI, Ansible, Python, Spring Boot, Oracle, PostgreSQL
Fullstack Developer

August 2015 - Jan 2016

Responsibilities:
  • Built a self-service portal for Atlassian Confluence and Jira, so teams could request spaces and projects without a ticket to IT
  • Java, Spring Boot, Gradle, Vue.js, npm
Fullstack Developer

August 2014 - August 2015

Responsibilities:
  • Supported the development of a self-service portal for an identity and access management (IAM) application
  • Worked in an international team of five developers together with colleagues in China
  • Java, Spring Boot, Maven, AngularJS, Oracle

Plus Online GmbH

April 2008 - July 2014

Mülheim an der Ruhr

Plus Online GmbH was part of the Tengelmann Group and ran its e-commerce business.

Deputy Lead Developer

August 2011 - July 2014

Responsibilities:
  • Deputised for the lead developer and supported and mentored the team throughout the development process
  • Worked hands-on in development, specialising in payment processes and API design for the online shop
  • Java, Intershop Enfinity, Servlets, JSP, Angular, Oracle
Fullstack Developer

April 2010 - July 2011

Responsibilities:
  • Developed features for the Intershop Enfinity online shop across the stack (backend logic in Java and the corresponding shop frontends)
  • Maintained and extended the existing shop functionality together with the e-commerce team
  • Java, Intershop Enfinity, Servlets, JSP, Angular, Oracle
System Administrator

April 2008 - March 2010

Responsibilities:
  • Administered the e-commerce infrastructure behind the online shop (application servers, web servers and deployments)
  • Intershop Enfinity, SUSE Linux, Apache Tomcat, Apache HTTP Server, Bash scripting
4

5
Bezirksregierung Düsseldorf

Aug 2005 - March 2008

Düsseldorf

The Bezirksregierung Düsseldorf is the district government of Düsseldorf and part of the state administration of North Rhine-Westphalia.

IT Specialist

Jan 2008 - March 2008

Responsibilities:
  • Administered the server infrastructure and the directory services behind it
  • Supported end users across the authority as second-level support
  • Debian Linux, Windows Server 2000, LDAP
IT Apprentice

Aug 2005 - Jan 2008

Responsibilities:
  • Completed the apprenticeship as IT specialist for system integration (Fachinformatiker Systemintegration)
  • Worked across server administration, directory services and end-user support
  • Debian Linux, Windows Server 2000, LDAP