박서준

신뢰할 수 있는 시스템을 만드는 백엔드 개발자

📧 seojun.park@example.com

☎️ 010-1234-5678

💻 https://github.com/seojun-park

장애가 터지기 전에 구조를 바꿉니다. 장애 대응보다 장애가 나지 않는 설계가 비용이 적기 때문입니다. 결제 시스템에서 월 평균 12건 발생하던 타임아웃 장애를 비동기 파이프라인으로 전환해 0건으로 만들고, 정산 오차율 0.3%를 이중 원장 구조로 0%까지 낮춘 경험이 있습니다.

운영 부채를 코드로 갚습니다. 반복되는 수작업은 시스템이 미완성이라는 신호이기 때문입니다. CS팀이 매일 2시간씩 수동 처리하던 환불 검증을 자동화하고, 정산 리포트 생성을 배치로 전환해 월 40시간의 운영 공수를 회수했습니다.

최근에는 대규모 트래픽 환경에서의 데이터 정합성에 집중하고 있습니다. Eventually Consistent한 분산 환경에서도 사용자에게는 Strong Consistency처럼 보이게 만드는 것이 핵심이라 보고, 이벤트 소싱과 CQRS 패턴을 실무에 점진적으로 도입하며 운영 안정성과 확장성을 동시에 확보해 가고 있습니다.

기술

Java, Spring Boot, JPA, QueryDSL, Python, FastAPI, MySQL, Redis, RabbitMQ, Kubernetes, ArgoCD, Datadog, Terraform

경력

C사

2023.09 ~ 2025.12

Backend Engineer

B2B SaaS 기반 물류 정산 플랫폼 'Z서비스' 운영

  • 이중 원장 기반 정산 검증 시스템 도입으로 정산 오차율 0.3% → 0%
  • 결제 타임아웃 장애를 비동기 파이프라인으로 전환해 월 장애 건수 12건 → 0건
  • 정산 리포트 자동 생성 배치 구축으로 운영팀 월 40시간 공수 절감

D사

2021.03 ~ 2023.06

Backend Engineer

구독형 식자재 배송 서비스 'W서비스' 운영

  • 구독 갱신 스케줄러 재설계로 갱신 실패율 8% → 0.5%, 이탈 방지 매출 월 2,300만원 회수
  • 배송 경로 최적화 API 연동으로 평균 배송 시간 85분 → 62분 단축
  • 환불 검증 자동화로 CS팀 일 2시간 수작업 제거, 오처리율 주 3건 → 0건
  • 재고 동기화 이벤트 파이프라인 구축으로 품절 표시 지연 5분 → 10초

문제 해결

이중 원장 기반 정산 검증 시스템

C사 · 2024.06 ~ 2024.08

정산 오차율 0.3% → 0%, 수동 대사 작업 제거

Java, Spring Boot, MySQL, RabbitMQ

개요

물류 파트너 200개사 대상 월 정산 금액 80억 원 규모. 분기마다 정산 오차로 인한 클레임이 반복되어 파트너 신뢰도 하락

문제

주문·반품·조정 등 다양한 출처의 금액이 단일 테이블에 누적되는 구조. 중간 데이터 유실이나 중복 반영을 사후에 발견하기 어려워 오차 원인 추적 자체가 불가능한 구조라 정의

해결 과정

  • 이중 원장 구조로 교차 검증. 거래 원장(이벤트 기반 적재)과 정산 원장(배치 집계)을 분리 운영. 매일 새벽 대사 배치가 양 원장의 파트너별 합산액을 비교하여 불일치 건을 자동 감지. 단일 원장 내 체크섬은 유실 자체를 감지 불가, 실시간 검증은 처리량 대비 지연 부담이 과도
  • RabbitMQ로 거래 이벤트 원장 적재. 주문 확정·반품·수수료 조정 등 모든 금액 변동을 이벤트로 발행하여 거래 원장에 append-only로 적재. Consumer 멱등성 키로 중복 처리 방지, 미소비 이벤트는 대사 배치에서 보정
  • 불일치 건 자동 알림 및 보류 처리. 대사에서 1원 이상 차이 발생 시 정산 상태를 보류로 전환하고 Slack 알림 발송. 운영팀이 원인 확인 후 수동 승인하는 안전장치 구성

결과

  • 정산 오차율 0.3% → 0%, 수동 대사 엑셀 작업 완전 제거
  • 파트너 클레임 분기 15건 → 0건

결제 타임아웃 비동기 전환

C사 · 2024.02 ~ 2024.03

월 결제 장애 12건 → 0건, 결제 완료율 97% → 99.8%

Spring Boot, RabbitMQ, Redis, MySQL

문제

PG사 응답 지연 시 결제 API가 30초 타임아웃되며 사용자에게 에러 노출. 월 평균 12건 발생하고 CS 인입으로 이어져 운영 부담 가중

해결 과정

  • 결제 요청을 비동기 파이프라인으로 분리. 사용자 요청 시 결제 의도만 기록하고 즉시 응답, 실제 PG 호출은 Consumer에서 처리. 동기 호출에 retry를 추가하는 방식은 타임아웃 자체를 해소하지 못하고, 폴링 방식은 사용자 경험 저하
  • 상태 머신으로 결제 생명주기 관리. PENDING → PROCESSING → COMPLETED/FAILED 상태 전이를 명시적으로 정의. 비정상 상태 체류 건은 5분 주기 스케줄러가 감지하여 자동 재처리 또는 취소
  • WebSocket 기반 실시간 결제 결과 Push. 비동기 전환으로 결과 전달이 지연되는 문제를 WebSocket으로 해소. 연결 실패 시 폴링 fallback

결과

  • 월 결제 타임아웃 장애 12건 → 0건, 결제 완료율 97% → 99.8%

회고

  • WebSocket 연결 관리가 운영 복잡도를 높임. SSE로 전환하면 연결 관리 부담을 줄이면서 동일한 UX 제공 가능
  • 상태 머신의 전이 규칙이 코드에만 존재하여 추적이 어려움. 상태 전이 이력 테이블을 도입하면 디버깅 효율 개선 가능

구독 갱신 스케줄러 재설계

D사 · 2022.08 ~ 2022.10

갱신 실패율 8% → 0.5%, 월 2,300만원 이탈 방지 매출 회수

Spring Boot, MySQL, Redis

개요

구독자 1.2만 명 대상 주간 갱신 처리. 매주 월요일 새벽 갱신 배치가 실행되나 실패율이 높아 구독 이탈로 직결

문제

전체 구독자를 단일 트랜잭션으로 일괄 처리하는 구조. 중간 1건 실패 시 전체 롤백되어 실패 1건이 나머지 전원의 갱신을 막는 구조가 문제

해결 과정

  • 건별 독립 트랜잭션으로 격리. 구독자별 개별 트랜잭션으로 전환하여 실패 건이 다른 구독자에 영향을 주지 않도록 격리. 전체 배치를 작게 나누는 방식은 경계에 걸린 건의 처리가 복잡
  • 3단계 재시도 + 결제 수단 순회. 1차 실패 시 30분 후 재시도, 2차 실패 시 등록된 보조 결제 수단으로 전환, 3차 실패 시 사용자 알림 후 유예 기간 부여. 즉시 구독 해지는 복구 가능한 일시적 실패(카드 한도, 네트워크)까지 이탈로 전환
  • 갱신 예정 알림으로 사전 차단. 갱신 3일 전 Push 알림으로 카드 유효성·잔액 문제를 사용자가 미리 해결하도록 유도

결과

  • 갱신 실패율 8% → 0.5%, 월 이탈 방지 매출 2,300만원 회수

재고 동기화 이벤트 파이프라인

D사 · 2022.04 ~ 2022.05

품절 표시 지연 5분 → 10초, 초과 주문 주 15건 → 0건

Spring Boot, RabbitMQ, Redis, MySQL

문제

주문 확정 후 재고 차감이 5분 주기 배치로 반영. 인기 상품에서 실 재고 0인데 화면에 구매 가능으로 표시되어 초과 주문 후 취소가 주 15건 발생

해결 과정

  • 주문 확정 이벤트로 즉시 재고 차감. 주문 확정 시 이벤트를 발행하고 Consumer가 재고를 즉시 차감. 배치 주기를 단축하는 방식은 DB 부하 증가와 여전한 지연 존재
  • Redis 선차감 + DB 후반영 이중 구조. 주문 접수 시 Redis에서 먼저 차감하여 동시 주문 시 초과 판매 방지, 이벤트 Consumer가 DB 재고를 후반영. Redis 장애 시 DB 직접 차감으로 fallback

결과

  • 품절 표시 지연 5분 → 10초, 초과 주문 주 15건 → 0건

회고

  • Redis-DB 간 불일치가 누적될 수 있어 매 시간 대사 배치로 보정 중. 이벤트 소싱으로 전환하면 원천 데이터 기반 재구성이 가능해져 보정 로직 제거 가능

스터디 활동

분산 시스템 논문 리딩 스터디

2025.06 ~

  • Raft, Paxos, CRDT 등 합의 알고리즘 논문을 읽고 구현체를 분석하여 분산 환경 설계 역량 강화
  • 논문의 핵심 아이디어를 실무 시나리오에 매핑하여 발표, 이론과 실전의 간극을 좁히는 데 집중
  • etcd, CockroachDB 등 오픈소스의 합의 구현을 트레이싱하며 장애 시나리오별 동작 검증

시스템 설계 인터뷰 스터디

2024.08 ~ 2025.01

  • 「가상 면접 사례로 배우는 대규모 시스템 설계 기초 1·2」를 읽고 매주 하나의 시스템을 설계하며 토론
  • 각 설계에 대해 병목 분석과 트레이드오프 문서를 작성, 실무 정산 시스템 재설계에 직접 활용

JPA 딥다이브 스터디

2021.06 ~ 2021.12

  • 「자바 ORM 표준 JPA 프로그래밍」을 읽으며 영속성 컨텍스트, 지연 로딩, N+1 문제 등 핵심 개념 학습
  • 스터디장을 맡아 실무 코드의 JPA 안티패턴을 수집하고 개선안을 도출, 팀 쿼리 성능 가이드 문서화

학력

△△대학교

2015.03 ~ 2021.02

소프트웨어학과 학사