Damian Garstecki
Software Architecture • DDD • Kotlin • Spring Boot

Architecture for clarity and sustainability.

Software Architecture, Domain Driven Design, Kotlin, Spring Boot and the craft of building reliable systems.

Portrait of Damian Garstecki

Recent Articles

View all
Cover image for Getting Free Outbox with Spring Modulith
4 min read

Getting Free Outbox with Spring Modulith

Why even bother with an outbox for internal events? Early in the app lifecycle you can get away with one big transaction: change domain state, flush, all or nothing is committed. Simple. Then growth hits. New features keep adding more into the persistence context. Optimistic locks start colliding. …

spring boot architecture ddd
Cover image for Crafting Gorgeous PDFs using Chromium and Playwright
5 min read

Crafting Gorgeous PDFs using Chromium and Playwright

Creating visually appealing and maintainable PDFs on the backend has always been a challenge. Traditional tools lag in support for modern HTML and CSS, leaving us with archaic table‑based designs. This guide explores using Chromium and Playwright in a Spring Boot application to produce great‑looking …

spring boot pdf chromium
Cover image for Spring Boot and the Holy GraalVM
6 min read

Spring Boot and the Holy GraalVM

With the release of Spring Boot 3.0, we get official support for GraalVM native builds. Does it mean we can finally free ourselves from the overhead of the JVM? How do native builds improve an app’s performance? Where’s the trade‑off, and is it worth making? In this post, we’ll try to answer those …

spring boot graalvm performance
Cover image for Managing Spring Boot properties after version 2.4
5 min read

Managing Spring Boot properties after version 2.4

Managing Spring Boot properties in a multi-module application can be intimidating. In this post, we’ll look at how Spring Boot resolves property conflicts and how to make our builds more consistent. Changes introduced in version 2.4 help a lot. Let’s review how to take advantage of the new features …

spring boot configuration architecture
Cover image for Cost of layered architecture
4 min read

Cost of layered architecture

Layered architecture is one of the most popular choices in object‑oriented systems, and for good reason. When done right, it provides great separation of concerns, making each layer replaceable without the need to transform everything around it. But layers require a lot of additional models. In this …

architecture performance java
Cover image for How safe is BigDecimal, really?
4 min read

How safe is BigDecimal, really?

BigDecimal is the go‑to type for holding decimal numbers. It’s used whenever high precision is required and we can’t afford rounding issues. But not everything about it is great. BigDecimal exposes a trap for developers. Let’s look at what that is and how to secure our code against it. Why do we …

java kotlin maintenance