Heap Dump가 가리킨 곳은 데이터가 아니라 영속성 컨텍스트였다: Tasklet에서 Chunk로, XSSF에서 SXSSF로 실무 사례 Notes 배치가 OOM(OutOfMemoryError, 힙에 새 객체를 둘 공간이 없을 때 나는 오류)으로 죽었고, 죽지 않은 날에도 Full GC가 반복됐다. Excel 파일을 만드는 기능도 같은 증상을 보였다. 이 글은 2022년 9월부터 12월까지 음원 플랫폼 회사에서 혼자 맡았던 대용량 배치와 Excel 생성 최적화를 정리한 기록이다. 원인을 어떻게 특... 2025/12/06 Common 대용량 배치·엑셀 처리 최적화 5편
주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 - 3장 성능을 좌우하는 DB 설계와 쿼리 Book 백엔드 성능 문제에서 가장 자주 병목이 되는 곳은 결국 DB다. 애플리케이션은 수평 확장이 비교적 쉽지만, DB는 잘못 설계되면 병목이 누적되기 쉽다. 이 장의 핵심 좋은 DB 설계는 단순히 정규화/비정규화 선택 문제가 아니다. 쿼리 패턴과 인덱스 전략이 실제 성능을 결정한다. 쿼리는 “문법적으로 맞는지”가 아니라 “어떻게 실행되는... 2025/12/04 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식
refresh 이후에도 옛 access token이 통과하던 문제: TTL과 폐기는 다른 문제다 실무 사례 Notes 이 글은 크리에이터 스튜디오의 인증·세션 구조에서 찾은 빈틈 하나를 다룬다. FE가 token을 refresh해 새 access token을 받은 뒤에도, 옛 access token으로 스튜디오 API가 계속 통과될 수 있었다. 먼저 밝혀 둘 것이 있다. 이 문제는 내가 식별하고 개선안을 설계하는 데까지만 진행했다. 실제 구현과 배포는 하지 않았다.... 2025/11/29 Common 크리에이터 스튜디오 개발 5편
Shadow Release로 조회를 옮기기: MyBatis 결과와 QueryDSL 결과를 나란히 비교하며 전환한 기록 실무 사례 Notes 음원 콘텐츠 플랫폼(MCP) 재설계에서 데이터 접근 구조를 바꾼 방식은 “전부 JPA로 옮기기”가 아니었다. 변경은 MyBatis에 그대로 두고, 조회만 QueryDSL로 분리했다. 이 글은 왜 조회만 옮겼는지, 다시 쓴 조회가 기존과 같은 결과를 내는지 어떻게 확인했는지, 그리고 그 절차를 어디까지 적용했는지 정리한 기록이다. 이 글의 코드와... 2025/11/22 Common 음원 콘텐츠 플랫폼(MCP) 전면 개편 9편
2025-11-17-TIL TIL Today I Learned 오늘은 올해 봤던 면접중 하나를 복기하면서 내가 잘 대답하지 못 했던 개념들, 그리고 내가 잘 설명하지 못 했던 나의 경험들에 대해서 정리해보았다. 그때 당시에는 몰랐는데 내가 들어도 정말 매력이 느껴지지 않는 지원자로 들린다. 뭔가 알맹이는 없고 껍데기만 있는 것 같다. 플랫폼이란 플랫폼(Platform)은 사람... 2025/11/17 2025-TIL
감사 로그 표준화와 ISMS 대응: MDC와 ELK로 누가, 언제, 무엇을 했는지 추적하기 실무 사례 Notes 크리에이터 스튜디오는 누구나 오디오 콘텐츠를 만들어 음원 플랫폼에 배포할 수 있게 하는 B2C 제작 플랫폼이었다. 서비스를 새로 만들면서 기능만큼 빨리 필요해진 것이 감사 대응이었다. 회사가 ISMS 인증을 받고 있었기 때문에, 이 서비스에서도 “누가, 언제, 무엇을 했는가”를 로그로 답할 수 있어야 했다. 이 글은 그 질문에 답하기 위해 감사 로그... 2025/11/15 Common 크리에이터 스튜디오 개발 4편
2025-11-11-TIL TIL Today I Learned 오늘 동네를 돌아다니다가 수많은 임대 건물들과 손님이 없는 가게들을 보았다. 그 손님이 없는 술집, 음식점, 그리고 카페에는 사장님들이 각자 쓸쓸하게 또는 굳건하게 자리를 지키는 모습이 보였다. 어두운 동네에서 따뜻한 주황빛 하나가 사장님을 비추고 있는데, 어떤 사람은 핸드폰만 만지면서 마냥 기다리기만 했고, 어떤 사람은... 2025/11/11 2025-TIL
Bulkhead Pattern Notes Bulkhead Pattern Bulkhead(Partition, 격벽)란 항공기나 선박에서 내부의 구간을 나누는 칸막이 역할을 하는 요소를 말한다. 이는 구획별로 침수 피해를 입어도 다른 구획은 피해를 입지않도록 막아주는 역할을 한다. 서버 설계에서는 서킷 브레이커처럼 다른 분야의 장치 이름을 가져와 쓰는 경우가 많다. Bulkhead도 장애의 ... 2025/11/10 Web
모든 도메인이 100% 정합성을 요구하지는 않는다: Post-Commit 이벤트와 재시도 3회 정책을 정한 기준 실무 사례 Notes 크리에이터 스튜디오는 누구나 오디오 콘텐츠를 만들어 음원 플랫폼에 배포할 수 있게 하는 B2C 제작 플랫폼이었다. 크리에이터는 프로그램, 에피소드, 클립을 만들고 고친다. 그 변경이 생길 때마다 Braze(마케팅 자동화 도구)와 Mixpanel(사용자 행동 분석 도구)에 사실을 알려야 했다. 이 글은 그 외부 호출을 트랜잭션 밖으로 옮긴 과정과, “... 2025/11/08 Common 크리에이터 스튜디오 개발 3편
2025-11-05-TIL TIL Today I Learned 오늘의집 커피챗을 대비하면서 나에게 도움이 될만한 질문을 준비해보았다. 실제로 간단한 커머스 서비스를 설계하고 내부 시스템까지 구축해보면서 커머스의 구조를 대략적으로 파악해보려고 한다. 공고 내용을 바탕으로 보면, 오늘의집 커머스 백엔드 포지션은 트래픽이 높은 커머스 코어 도메인(주문·결제·정산 등)을 다루면서, AI ... 2025/11/05 2025-TIL