How to run the agent (generic Java) and where the metadata is used

GraalVM Native Image Agent — reachability metadata: how to run it, where files go

In short Run the app java -agentlib:native-image-agent=config-output-dir=./graalcnf/ -jar target/app.jar Copy the generated files from ./graalcnf/ to the project under src/main/resources/META-INF/native-image/<groupId>/<artifactId>/ Build the native image mvn -ntp package -Pnative -DskipTests TLDR Native Image needs reachability metadata so it can include dynamic features your app uses at run time (reflection, resources, proxies, serialization, JNI). The simplest way to get this metadata is to run your app on the JVM with the Native Image Agent and then use the generated JSON files during the native build. ...

September 16, 2025 · 2 min · Özkan Pakdil
Pagination Pitfall Cover

The Pagination Pitfall: A React + Spring Boot Cautionary Tale

🚀 The Pagination Pitfall: A React + Spring Boot Cautionary Tale The Setup: “It’ll Be Fine…” A few years ago, I was working on a dashboard application with a React frontend and a Spring Boot backend. The task seemed simple: display a list of users with pagination. One of the newer devs suggested: “Let’s just fetch everything once and paginate on the client side — it’ll be faster for the user.” ...

August 7, 2025 · 3 min · Özkan Pakdil
turkcell

A Retrospective on High-Traffic Systems, Garbage Collection Battles, and the Rise of G1

Prologue: The Era of WebLogic and Apache Mod_WebLogic It was 2012. Turkcell, Turkey’s largest mobile operator, had 15 million subscribers, and the pressure was on. As part of the operations team for www.turkcell.com.tr, I managed a labyrinth of infrastructure: 10 strong linux servers which had Weblogic installed humming behind Apache mod_weblogic proxies, serving dynamic requests while Apache handled static content. The e-commerce platform, Turkcell Shop, was my responsibility—where a single GC pause during peak traffic could mean thousands of failed transactions and angry customers. ...

May 4, 2025 · 3 min · Özkan Pakdil
Handling Concurrent API Calls in Spring Boot

Handling Concurrent API Calls in Spring Boot

When building Spring Boot applications, handling concurrent API calls efficiently is crucial to ensure optimal performance and scalability. Here are a few approaches to manage concurrent read and write operations: Handling Concurrent Read API Calls Asynchronous Methods Using @Async at @Service annotation and enabling asynchronous processing can help handle multiple API calls concurrently. @Async public CompletableFuture<String> asyncMethod() { // Call external API return CompletableFuture.completedFuture("Result"); } WebClient with Reactor Spring WebFlux’s WebClient allows for reactive programming, making it easier to handle multiple API calls. ...

February 20, 2025 · 2 min · Özkan Pakdil
load balancing client side

What is load balancing and how to do it on client side

“Load balancing” can be explained as maintaining any workload. For example if you have to serve 1000 breakfast in the morning you can divide the work among 2-3 or more caterers to lower the delivery/preparation time. In the computer world, same logic applies, if you want to deliver fast, you can divide the work, for example for a website we can have 5-10 webserver, this way website will be delivered faster(especially during high traffic), this is server side. ...

January 9, 2025 · 2 min · Özkan Pakdil