👋 환영합니다! 쥐뿔도 모르는 개발자가 백엔드, 인프라, 트러블슈팅 등의 경험을 공유하고 기록하는 개발 블로그입니다 ✨

내가 느낀 클린 코드와 현실의 괴리

개발을 하다 보면 “클린 코드” 라는 단어를 접하게 됩니다. 코드는 읽기 쉽고, 의도를 명확히 드러내며, 유지보수하기 쉬워야 한다는 원칙들이죠. 처음 클린 코드를 배울때 참 많은 것들을 느꼈습니다. 변수하나의 네이밍을 붙이면서도 많은 고민을 해야하구나 하는 생각을 처음으로 하게 됐었거든요. 하지만 실무에 발을 들이고 여러 프로젝트를 경험하다 보니 현실은 생...

더보기 →

2024년 12월 3일

[회고록] JPA와 MyBatis 혼용으로 발생한 HikariCP Deadlock 문제를 해결하며

2024년 초, 예상치 못한 문제와 마주한 사건이 있었습니다. (해당 글) 당시의 상황에 대한 회고록을 작성하려 합니다. JPA와 MyBatis를 혼용한 코드에서 HikariCP Deadlock 문제가 발생했는데요. 몇 달간 문제없이 운영되던 코드였기에 더욱 당황스러웠습니다. 해결 과정에서 JPA, HikariCP, 그리고 영속성 컨텍스트의 동작 원리를 깊...

더보기 →

2024년 12월 2일

JPA의 이념과 SQL의 간극

JPA를 사용하다보면 한번씩 “어라? 이걸 지원하지 않네?” 하는 순간을 마주하게 됩니다. JPA(Java Persistence API)는 Java 애플리케이션에서 데이터베이스와 객체 간의 간극을 줄이고, 객체 지향적 개발을 돕기 위해 설계된 도구입니다. 그러나 JPA를 사용하며 얻는 장점에도 불구하고, 실무에서 SQL의 기능과 JPA의 기능 사이에서 간극...

더보기 →

2024년 11월 28일

DB Replication 복제 지연 해결

이번에 회사에서 직면했던 복제지연 문제에 관한 내용을 공유하고자 글을 남깁니다. 문제 발생 저희 회사에서는 database replication을 통해 부하를 분산하여 성능을 높히는 방식을 사용하고 있습니다. 시스템은 Master-Slave 구조의 Active-Active 이중화로 구성되어 있으며, ProxySQL을 통해 SELECT 문은 Slave로, I...

더보기 →

2024년 11월 15일

[트러블슈팅] QueryDSL StackOverflowError 탐방기

이번에 회사에서 직면했던 Querydsl StackOverflow에 관한 내용을 공유하고자 글을 남깁니다. 문제 발생 오늘도 어김없이 문제는 Slack 메시지로부터 시작합니다. 메시지를 받자마자 어라? 라는 반응을 할 수밖에 없었습니다. StackOverflow? 서버에 재귀식으로 구현된 코드가 있었던가? StackOverflow란 여러분들 모두 잘 알고 ...

더보기 →

2024년 3월 15일

[트러블슈팅] Kubernetes Pod Scale In 과정에서 실패한 Graceful Shutdown, 소실된 비동기 로직 탐색 여정

이번에 회사에서 직면했던 실패한 Graceful Shotdown에 관한 내용을 공유하고자 글을 남깁니다. 문제 발생 평소에는 예외상황이나 문제상황들을 Slack으로 많이 접하는 편인데요. 오늘은 평소와 다르게 문제를 접하게 됐습니다. 이번 문제는 백오피스 사용자의 문의로부터 시작됩니다. “데이터가 하나가 안맞는 거 같아요…!” 바로 부랴부랴 데이터를 확인해...

더보기 →

2024년 2월 9일

[트러블슈팅] JPA, Mybatis 동시 사용시 발생할 수 있는 HikariCP Dead lock 해결 여정 ( feat.OSIV )

이번에 회사에서 직면했던 관련 HikariCP Dead lock 문제에 대해 공유하고자 글을 남깁니다. 문제 발생 오늘도 어김없이 문제인지는 Slack 메세지로부터 시작합니다. Stack trace 중 일부 발췌 Caused by: org.apache.ibatis.exceptions.PersistenceException: ###Error querying d...

더보기 →

2024년 1월 9일

Spring batch job 동시 등록 Deadlock 문제 직면 ( Deadlock accessing creating a job on sqlserver when multiple jobs start at once )

이번에 제가 회사에서 직면했던 Spring batch 관련 문제에 대해 공유하고자 글을 남깁니다. 문제 발생 해당 문제는 에러 Slack 메세지로부터 시작됩니다. 회사 Batch 서버에서 Deadlock이 발생했다는 Stack trace였습니다. 당연하게도 Deadlock은 서비스에 심각한 영향을 줄 수 있었기 때문에 지체없이 문제를 파악하기 시작했고 로그...

더보기 →

2023년 11월 20일

자바 POI를 이용한 엑셀다운로드 공용 Util 클래스 만들기

거창한 내용은 아니지만 몇달전 회사에서 경험했던 것을 공유하고자 합니다. 시작은 사내 관리자들이 사용하는 백오피스에서의 end user, 즉 회사 동료분들에게서의 문의사항에서 시작됐습니다. 문의사항은 다음과 같았습니다. 특정 Row수가 넘어가면 Excel 다운로드가 안되거나 이상하게 돼요…! 현재 우리 회사에서는 제가 입사하기 이전부터 기존 PHP로 이루어...

더보기 →

2023년 11월 19일

Spring Batch를 이용한 직접만든 자동매매 시스템 후기

거창한 내용은 아니지만 몇달전 진행했던 개인적인 경험을 공유하고자 합니다. https://github.com/12OneTwo12/auto-trading 해당 글에서는 어떻게 구현하는지 적어놓지 않습니다. 코드를 보실분들은 위 github 링크에 들어가서 봐주세요. 또한 제가만든 자동매매 시스템은 Spring batch의 대용량 일괄처리의 편의를 위해 설계된...

더보기 →

2023년 10월 24일