About me
운영/성능/데이터 신뢰도를 증명하는 백엔드 엔지니어
개발과 운영의 결과물을 숫자로 증명하는 5년차 백엔드 엔지니어입니다.
핀테크(보험) 및 재무, 자산(SAP연동) 백오피스를 개발 및 운영했으며
MAU 200만 서비스(신한카드, NH 등 카드사 연동)를 경험 했습니다.
Tech Stack

Engineering Principles
문제 정의부터 검증까지, 증명 가능한 방식으로 개발합니다.
AI가 발전할수록 사람의 핵심은 호기심·문제정의·컨텍스트·검증이라고 믿습니다.
질문을 만들고(호기심), 명확히 문제를 규정하며(문제정의), 현실 제약을 엮어 설계하고(컨텍스트), 데이터 및 테스트로 증명하는(검증) 방식으로 제품을 완성합니다.
SLI/SLO와 p99 지표로 목표를 수치화하고 에러버짓·관측가능성(로그/메트릭/트레이스, e.g Datadog, Grafana)
기반의 실험 → 검증 → 개선을 반복해 데이터/테스트로 끝까지 증명하는 것을 지향합니다.
Case Studies (실무)
회사 업무에서 해결한 핵심 문제 사례
Case
정산 시즌 조회 p99 20s → 500ms (실행계획 + LATERAL JOIN)
- • 정산 시즌 조회 성능 병목을 MySQL 실행계획으로 규명
- • subquery join 병목 제거, LATERAL JOIN 중심으로 쿼리 개선
Case
워크스페이스 문서 조회 22s → 300ms
- • 문서 조회가 22초까지 지연되는 병목 발생
- • 인덱스/쿼리 최적화로 응답 300ms 달성
Case
고QPS 조회 API Redis 캐시 도입기
- • 고QPS 조회 API에 Redis Cache-aside를 도입해 DB 부하를 완화 시도
- • PK 리스트 캐시 + Outbox/SQS invalidation 자동화를 적용
Research Notes (개인)
기술 연구 노트
개인적으로 정리한 기술 리서치와 운영 학습 노트입니다.
View all research →Research
Kafka는 결국 At-Least-Once다: 멱등성(idempotency) + processed_event + dedupe로 “운영 가능한 정확성” 만들기
Kafka 운영의 현실을 At-Least-Once로 정의하고, 멱등 키(dedup_key), processed_event, DB 트랜잭션 기반 dedupe로 중복에 안전한 파이프라인을 설계하는 전략을 정리.
Deep diveResearch
Spring Boot에서 CQRS + (MyBatis, JPA) 하이브리드로 개발하기
쓰기(JPA)와 읽기(MyBatis)를 분리하는 논리적 CQRS 실전 가이드: 트랜잭션 전략, 패키지 구조, 함정과 해결, 확장 로드맵까지 포함.
Deep diveResearch
Kafka 스키마 전략: 호환성 규칙으로 “배포 사고”를 막고, DLQ/Replay로 “복구 가능”하게 만들기
Avro와 Protobuf 중 하나를 선택해 표준화하고, 호환성 규칙을 강제하며, 실패 메시지를 DLQ로 격리하고 Replay로 복구할 수 있는 운영 체계를 정리.
NotesProjects (개인)
개인 사이드 프로젝트
Project
Book Search Labs
2025~현재 | 통합검색·주문/결제/환불·RAG 챗봇을 하나의 마이크로서비스 플랫폼으로 운영하고, 자동완성/추천/리랭킹을 오프라인 학습 루프로 지속 개선한 Book Search 시스템 구축
- BFF 단일 진입점 위에 QS/SR/RS/MIS/Commerce를 분리하고 JSON Schema/OpenAPI + CI compatibility gate로 서비스 경계를 계약 중심으로 고정
- Hybrid Search 고도화: BM25 + Vector(kNN) 후보를 생성하고 RRF/가중치 fusion으로 결합해 검색 전략 실험·전환 비용을 낮춤
- 통합검색 Query Understanding(ISBN/저자/시리즈/권차/언어 파싱 + 필드 라우팅/부스팅)과 조건부 2-pass enhance로 품질 개선과 비용 상한을 동시에 제어
- MIS 모델 서빙 계층 도입: embedding/spell/rerank를 독립 서비스화하고 model registry 기반 active/canary 라우팅으로 무중단 롤아웃 구현
- 검색/재랭킹/챗 공통 budget governor, timeout budget, circuit breaker, degrade 정책(벡터 실패→BM25 only, rerank 실패→fusion 유지)으로 p95/p99 guardrail 구축
- 주문·결제·환불을 Order 상태머신 + Inventory Ledger(reserve/release/deduct/restock)로 연결해 재고·결제 정합성을 일관되게 유지
- 중복 주문/중복 결제를 Order/Payment/Refund 전 구간 idempotency key + DB unique 제약으로 차단하고 재시도 시 동일 결과를 반환하도록 멱등 처리
- 결제 확정 경로를 webhook 중심으로 표준화하고 duplicate webhook 판별, 서명 검증, 자동/수동 재처리(retry) 체계를 구현해 비동기 결제 실패 내성을 강화
- 부분환불/중복환불 초과 검증, 정책 기반 환불금 계산(배송비·반품비), 환불 후 재고 복원 및 주문 상태 전이까지 포함한 환불 파이프라인 완성
- RAG 챗봇 파이프라인(Rewrite→Retrieve(Hybrid)→(선택)Rerank→Generate)과 citation 필수·citation-to-chunk 검증·근거 커버리지 임계치로 환각 리스크를 제어
- 챗봇을 툴 오케스트레이션으로 확장해 주문/배송/환불 조회, 문의 생성/조회, 주문취소·환불신청까지 대화형 인터랙션으로 연결
- 민감 액션은 2-step 확인 토큰(만료/사용자 바인딩/중단 처리)과 chat 전용 idempotency key를 적용해 안전한 실행·재시도 보장
- SSE(meta/delta/done) 스트리밍과 reason_code/recoverable/next_action/retry_after/fallback_count/escalated 계약으로 실패 시 사용자 복구 경로를 명시
- 세션별 fallback 누적·unresolved context 상태 API와 임계치 기반 OPEN_SUPPORT_TICKET 에스컬레이션으로 챗 운영 안정성을 강화
- LLM provider 라우팅에 intent 기반 정책, health/cost steering, stream/json failover를 적용해 품질·비용·가용성을 운영 정책으로 제어
- 자동완성 품질 루프 구축: ac_impression/ac_select 이벤트를 Outbox→Kafka로 수집하고 시간감쇠 CTR·인기도 집계를 Redis/OpenSearch 랭킹에 반영
- 추천/리랭킹 학습 루프 구축: search/click/dwell/cart/purchase 신호를 implicit label로 정규화하고 ClickHouse/Feature Store에 적재
- Feature parity 체계화: features.yaml 단일 스펙 + point-in-time join으로 online/offline feature 일치성을 보장해 학습-서빙 skew 최소화
- LTR 기반 reranking 고도화: LightGBM LambdaMART 학습 파이프라인과 모델 레지스트리 연동으로 배포 가능한 재랭킹 모델 운영
- Offline eval 회귀 게이트를 CI에 적용해 자동완성/하이브리드 검색/리랭킹 변경 시 품질 하락 배포를 사전에 차단
Project
AutoDoc Tree
2025~Present. 업로드/작성 문서를 자동으로 가상 폴더 트리로 정리하고, 사용자 피드백으로 개인화되는 멀티테넌트 문서 자동 정리 서비스.
- 문서 메타/텍스트 기반 신호(lexical)로 2-depth 자동 트리 스냅샷(ACTIVE/RECOMMENDED)을 생성하고, 드래그/폴더명 수정 이벤트를 수집해 피드백 기반 분류 개인화로 수렴하도록 설계/구현
- Workspace 단위 멀티테넌시를 API/DB/Search/Cache/ObjectStorage까지 일관 적용해 테넌트 간 데이터 누수 방지
- Outbox(At-least-once) + Worker 파이프라인으로 ingest→(embedding)→index→tree 단계를 분리하고 stage-level idempotency key로 재처리 안전성 확보
- PDF/DOCX/TXT/MD를 파싱해 section/chunk 단위로 구조화하고 doc-level/section-level representation을 저장해 검색과 트리 생성에 활용(임베딩은 오프라인 로컬 모델 bge-m3로 고도화 중)
- 문서 배치 결과에 키워드/유사문서/신호 근거를 함께 제공하는 explainable placement로 자동 정리 결과 신뢰도 및 디버깅 가능성 확보
- 트리 스냅샷 버전(ACTIVE/RECOMMENDED), 변경폭 제한, rebuild debounce/coalesce, locked 노드로 구조 안정성 강화
- 민감정보 본문/첨부 로그 금지 정책과 trace_id/request_id 전파(OTel), stage 메트릭으로 운영 추적 및 품질 튜닝 기반 확보
Project
Distributed Systems Reliability Lab
2025~Present. Kafka/Redis/MySQL 기반으로 유실·중복·정합성·복구 시나리오를 실험 코드로 재현하고 운영 가이드를 정리하는 신뢰성 실험 프로젝트.
- Outbox/Relay/Processed Event 조합으로 at-least-once 환경의 유실·중복·정합성 리스크를 실험 케이스(E-001~)로 검증
- DLQ/Retry/Replay 운영 흐름을 실험화해 transient/permanent 실패 분류와 재처리 runbook을 문서화
- Kafka HW/LEO/LSO, read_committed, ISR/min.insync.replicas/acks 관점에서 가시성/내구성/순서 보장 특성을 재현 검증
- Redis cache stampede, cluster slot/CROSSSLOT, hot key/hot shard 이슈를 재현하고 singleflight/TTL jitter 등 완화 전략 비교
- consumer rebalance storm, MySQL deadlock/lock wait 시나리오를 재현하고 retry/backoff 튜닝으로 수렴성 확인
- Prometheus/Grafana + chaos 스크립트 + k6를 연계해 lag/outbox age/DLQ rate/cache hit/miss를 수치로 검증
- 대량 backfill 시 batch/rate/backpressure/checkpoint 제어와 정합성 샘플링 검증으로 안전한 재처리 기준 수립
Project
StayVista
2025~Present. 숙소/티켓/체험/패키지를 단일 예약 도메인으로 통합하고 동시성·정합성·실시간성을 함께 고려한 OTA 아키텍처 설계 프로젝트.
- 숙소/티켓/체험/패키지 예약을 단일 Booking 도메인으로 수렴시키고 상품 카탈로그와 예약 정합성 책임을 분리
- 룸타입 재고형 모델에서 조건부 원자 UPDATE(reserved+sold < total)와 HOLD→CONFIRM 전환으로 과판매 방지
- 예약/결제 요청에 idempotency key를 적용하고 소비자 측 Processed-Event dedup으로 중복 예약·중복 결제 위험 차단
- 패키지 예약을 Saga 오케스트레이션으로 설계해 부분 실패 시 보상(Release) 트랜잭션으로 정합성 유지
- Outbox 기반 비동기화를 통해 외부 효과(알림/정산/로그) 처리와 트랜잭션 경계를 분리
- AI 컨시어지(로컬 LLM) 도입: 슬롯 추출→RAG 검색→LLM 오케스트레이션으로 추천 카드/일정을 생성하고, 모든 카드에 근거(source)와 후속 질문을 구조화 응답(JSON)으로 제공
- RAG 검색 계층(OpenSearch + (선택) vector retrieval)으로 POI/숙소/티켓/체험 컨텐츠를 통합 인덱싱하고, 0-result 시 보완 질문/트렌딩 fallback으로 degrade-safe 처리
- LLM 병목 제어: 'RAG/템플릿 우선 + 필요 시만 LLM' 라우팅과 inflight 제한·짧은 큐·hard timeout·fallback으로 폭주 상황에서도 p95/p99 latency 보호
- OpenSearch + Redis 읽기 경로 최적화와 singleflight/TTL jitter로 캐시 스탬피드 및 비용/지연 제어
- trace_id/request_id 전파와 RED 메트릭(p95/p99, error rate), 재고/대기열/LLM 큐 지표로 운영 모니터링 기준 정의
Project
Crypto Exchange Platform (Spot)
2025~Present. 저지연 매칭 엔진과 복식부기 원장을 분리해 체결 무손실·결정적 복구·실시간 시세 파이프라인을 구현하는 암호화폐 거래소 실험 프로젝트.
- Matching/Risk hot-path를 Rust 단일-writer 이벤트 루프로 구성하고 WAL + snapshot + replay로 결정적 복구 모델 설계
- WAL durable write 이후에만 체결 이벤트를 publish하는 commit line 규칙으로 유실/순서 역전 리스크를 제어
- PostgreSQL append-only double-entry ledger로 Σdebit-credit=0 불변식을 강제하고 멱등 정산 consumer 구현
- Kafka/Redpanda 체결 스트림을 Flink로 집계해 candles/ticker를 생성하고 Redis hot snapshot + ClickHouse history로 조회 분리
- WebSocket fan-out에 snapshot+delta, seq gap recovery, per-conn queue limit, conflation 정책을 적용해 폭주 대응
- OTel end-to-end tracing(Edge→Core→Kafka→Ledger)과 settlement lag/불변식 위반/split-brain 감지 지표 체계화
- 운영 안전장치로 CANCEL_ONLY/HALT 정책 및 runbook을 정리해 장애 시 손실 최소화 경로를 마련