The Gap Between Clean Code and Reality as I Feel It
When developing, you encounter the term “Clean Code”. Principles that code should be easy to read, clearly express intent, and be easy to maintain. When I first learned clean code, I felt many things. I started thinking for the first time that I need to think a lot even when naming one variable. But...
December 3, 2024
[Memoir] Solving HikariCP Deadlock Problem from Mixing JPA and MyBatis
In early 2024, there was an incident where I faced an unexpected problem. (That article) I’ll write a memoir about the situation at that time. HikariCP Deadlock problem occurred in code mixing JPA and MyBatis. It was more bewildering because it was code that had been operating without problems for s...
December 2, 2024
The Ideology of JPA and the Gap with SQL
When using JPA, you sometimes encounter moments like “Huh? They don’t support this?” JPA (Java Persistence API) is a tool designed to bridge the gap between databases and objects in Java applications and help with object-oriented development. However, despite the advantages gained from using JPA, th...
November 28, 2024
Resolving DB Replication Lag
I’m sharing about a replication lag issue I encountered at work. Problem Occurrence Our company uses database replication to distribute load and improve performance. The system is configured as Active-Active redundancy in a Master-Slave structure, and through ProxySQL, SELECT statements are sent to ...
November 15, 2024
[Troubleshooting] QueryDSL StackOverflowError Investigation
I’m sharing about a Querydsl StackOverflow issue I encountered at work. Problem Occurrence As always, the problem starts with a Slack message. As soon as I received the message, I couldn’t help but react with “huh?” StackOverflow? Was there recursively implemented code in the server? What is StackOv...
March 15, 2024
[Troubleshooting] Failed Graceful Shutdown During Kubernetes Pod Scale In, Journey to Find Lost Async Logic
I’m sharing about a failed Graceful Shutdown issue I encountered at work. Problem Occurrence Usually, I encounter exceptions and problem situations through Slack quite often. Today, I encountered a problem differently than usual. This problem started with a back office user’s inquiry. “I think one p...
February 9, 2024
[Troubleshooting] Journey to Resolving HikariCP Deadlock When Using JPA and MyBatis Together (feat. OSIV)
I’m sharing an issue related to HikariCP Deadlock that I encountered at work. Problem Occurrence As always, the issue starts with a Slack message. Excerpt from Stack trace Caused by: org.apache.ibatis.exceptions.PersistenceException: ###Error querying database. Cause: org.springframework.jdbc.Cannot...
January 9, 2024
Spring Batch Job Concurrent Registration Deadlock Issue (Deadlock accessing creating a job on sqlserver when multiple jobs start at once)
I’d like to share a Spring Batch-related issue I encountered at work. Problem Occurrence The issue started with an error message in Slack. It was a stack trace indicating that a Deadlock had occurred on our company’s Batch server. Naturally, since Deadlock could severely impact the service, I immedi...
November 20, 2023
Creating a Common Excel Download Utility Class Using Java POI
It’s nothing grand, but I’d like to share an experience I had at work a few months ago. It started with inquiries from end users, namely my coworkers, who use the back-office system internally. The inquiry was as follows: Excel download doesn’t work or becomes strange when the row count exceeds a ce...
November 19, 2023
Review of Auto-Trading System Built with Spring Batch
It’s not grand content, but I want to share a personal experience I had a few months ago. https://github.com/12OneTwo12/auto-trading This article doesn’t describe how to implement it. If you want to see the code, please enter the github link above. Also, I think the auto-trading system I made doesn’...
October 24, 2023