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 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
Cover image for Argument for the off-the-shelf components
5 min read

Argument for the off-the-shelf components

Have you ever run into a problem that could be solved by using an off‑the‑shelf solution? You probably asked yourself: is it a good idea? Maybe the problem is simple enough that you could build a simple one in a week. Let’s take a look at when we should consider an off‑the‑shelf component …

architecture strategy maintenance