소개

만든 사람

소개

실무와 개인 프로젝트에서 무엇을 맡아 어떤 판단을 했는지, 그 근거가 된 글과 함께 정리했습니다.

Career Projects

실무 프로젝트

(주)드림어스컴퍼니(FLO) 재직 중(2021.12 – 2025.2) 수행한 프로젝트입니다. 각 항목의 상세 과정은 연결된 글에서 다룹니다.

음원 콘텐츠 플랫폼(MCP) 전면 개편

2024.1 – 2024.11

백엔드 리딩(3인 팀) — 배포 전략·도메인 규칙 설계 및 공유, 공통 기능·ArchUnit 아키텍처 규칙·핵심 도메인 API 개발

복잡한 상태 전이와 검증 규칙을 가진 콘텐츠 플랫폼을 도메인 중심 아키텍처로 재설계해 성능, 정합성, 확장성을 개선했습니다.

  • API 응답 1.5초 300ms
  • 계약 생성 2분 10초
  • 정적 분석 위반 480건 75건
JavaSpring BootJPAQueryDSLMyBatisMapStructMySQLRabbitMQArchUnit

지분율 시스템 트랜잭션 안정성 및 동시성 개선

2022.8 – 2022.11

단독 설계 및 구현

저작권·실연권 지분율을 대량으로 처리하는 정산 시스템에서 동시성 문제와 배치 병목을 개선해 데이터 정합성과 처리 성능을 높였습니다.

  • 대량 삭제 2시간 5분
  • 대량 등록 40분 12분
JavaSpring BootRedisMySQLAWS

글로벌 유통 시스템(MDS) 구축

2023.1 – 2024.1

시니어 개발자가 설계한 ArchUnit 기반 공통 인터페이스 계약에 따라 콘텐츠·라이선스 관리 API 개발, 이후 계약 관리까지 인수인계받아 정담당자로 유지보수

글로벌 파트너사가 앨범을 등록하고 관리자가 검수하는 음원 유통 시스템을 구축하고, DDEX 기반 자동 전송으로 해외 플랫폼과의 직접 유통·정산 구조를 지원했습니다.

  • 처리 대기 3~5분 1분 내외
JavaSpring BootJPASpring BatchMySQLAmazon SQSArchUnit

대용량 배치·Excel 처리 최적화

2022.9 – 2022.12

단독 수행

대용량 Excel과 배치 처리에서 반복되던 메모리 급증과 장기 트랜잭션 문제를 청크 기반 배치와 스트리밍 구조로 개선해 OOM을 제거했습니다.

  • 배치 메모리 피크 3.8GB 1.6GB
  • Excel 생성 메모리 1.2GB 180MB
JavaSpring BatchJPAMySQLApache POI (SXSSF)

Personal Projects

개인 프로젝트

주식 관찰 앱, 개발자 Q&A, 백엔드 실습 서비스, 결제 시스템을 만들었습니다. 모두 1인 개발이고 코드와 테스트는 GitHub에 공개되어 있습니다.

Monticker — 이벤트 중심 주식 관찰 앱

2026.1 –

관심 종목의 가격과 거래량 변화를 시간순으로 모아 보는 앱입니다. 종목마다 거래 규모가 달라 지수이동평균(EMA) 대비 배율로 급증을 판단하고, 같은 변화가 1분 안에 반복되면 한 번만 기록하도록 저장 전 검사와 DB 제약을 함께 뒀습니다. 실시간 시세 경로는 WebSocket과 폴링을 클라이언트 1만 개에서 비교하고, Kafka 파티션·컨슈머 격자에서 종목별 순서와 리밸런스·핫 종목의 대가를 직접 재어 결함 6건을 고쳤습니다. 직접 생성한 시세 데이터 기준입니다.

KotlinSpring BootPostgreSQLRedisNext.js

Quno — 변경 이력을 남기는 개발자 Q&A

2026.8 –

질문을 계속 수정할 수 있고 이전 내용과 버전별 차이를 보존하는 Q&A입니다. 동시에 수정해도 버전 번호가 겹치지 않도록 질문 행을 잠그고(SELECT FOR UPDATE) 다음 버전을 계산하며, 질문 변경과 알림 요청을 한 트랜잭션에 묶었습니다. 8개 요청을 동시에 실행하는 통합 테스트로 누락과 중복이 없음을 확인했습니다.

KotlinSpring BootPostgreSQLMongoDBRedisReact

SysDrill — 백엔드 장애 대응 훈련 플랫폼

2026.8 –

요청 폭주나 작업 실패 같은 상황을 다루는 실습 6개를 풀고, 코드는 단계별 테스트로, 설계 설명은 AI 평가로 피드백을 받는 학습 서비스입니다. AI 응답은 정해진 항목과 점수 범위만 읽어 서버가 총점을 다시 계산하고, 평가는 Redis 대기열에서 별도 작업이 처리하며 반복 실패는 재시도 상한 뒤 실패 상태로 남깁니다.

KotlinSpring BootPythonRedisPostgreSQLNext.js

ParityPay — 결제·원장 백엔드

2026.9 –

선불 지갑의 결제 내역과 이중부기 원장을 함께 관리하는 백엔드입니다. 같은 결제가 두 번 들어오거나 은행 응답이 끊겨도 중복 차감되지 않도록, 응답 유실은 실패로 단정하지 않고 미확정 상태로 보관한 뒤 별도 조회로 확정합니다. DB 커밋과 Kafka 발행 사이는 Transactional Outbox로 잇고, 브로커 강제 종료·파티션 키 오설정·느린 외부기관까지 직접 만들어 벌크헤드·차단기·리미터가 각각 무엇을 막는지 실측했습니다. 잔액 차감 순서를 바꿔 같은 지갑의 잠금 시간을 줄였고, 부하·장애 실험이 찾은 결함 14건을 전부 수정했습니다.

JavaSpring BootPostgreSQLKafkaTestcontainersArchUnit

대표 글

역량을 보여주는 대표 글

이 블로그에는 그 과정에서 얻은 실무적 판단과 실험 결과를 남깁니다. 데이터베이스 내부 동작, Spring 백엔드, 아키텍처 의사결정, 성능 개선, 동시성 제어, 배치 및 정산 시스템 운영처럼 실제 시스템을 더 정확하고 견고하게 만드는 데 필요한 주제를 주로 다룹니다.