안녕하세요,
박수현 입니다

창의적인 문제 해결과 효율적인 코드로
더 나은 서비스를 만들어갑니다

소개

프로필 사진

논리적인 선택을 하는 개발자 박수현입니다.

수학 전공을 통해 다진 논리적 사고력으로 복잡한 요구사항을 명확한 구조와 설계로 풀어내는 데 강점이 있습니다.

기술적 선택에는 항상 이유가 있어야 한다는 원칙 아래, 성능 개선과 시스템 안정성을 지속적으로 고민합니다.

깔끔하고 유지보수가 쉬운 코드를 작성하기 위해 노력합니다.

함께 일하고 싶은 개발자가 되는 것을 목표로 합니다.

  • 이름: 박수현
  • 위치: 대한민국
  • 이메일: sooh59599@gmail.com
  • GitHub: github.com/sooh59599

기술 스택

다양한 기술을 활용하여 문제를 해결합니다

주력 기술

Java Java
MySQL MySQL
SpringBoot SpringBoot
RabbitMQ RabbitMQ
Redis Redis
Elasticsearch Elasticsearch
JPA JPA

자주 사용하는 기술

AWS AWS
Docker Docker
Swagger Swagger
PostgreSQL PostgreSQL
Prometheus Prometheus
Grafana Grafana

배워보고 싶은 기술

Jenkins Jenkins
Kibana Kibana
Kotlin Kotlin
Webflux Webflux
Kafka Kafka
Kinesis Kinesis
Kubernetes Kubernetes
Logstash Logstash

자주 쓰는 도구

Git Git
GitHub GitHub
IntelliJ IntelliJ

경험해본 기술

HTML5 HTML5
Maven Maven
MyBatis MyBatis
React React
Oracle Oracle
JSP JSP
JavaScript JavaScript
jQuery jQuery

다양한 경험을 했어요

스파르타 코딩클럽 | 2025.06 - 2025.11

2025.10 - 2025.11

UP-PICK

5인 팀 프로젝트(BE) 부팀장

spring boot 3.5 Java 21 mysql 8.x jpa elasticsearch Redis 7 RabbitMQ 3.x
  • 프로젝트 개요
    • 서비스: 실시간 경매형 중고 거래 플랫폼으로, 가격 흥정 없이 입찰로 공정하게 거래
    • 목표: 실시간 입찰 처리 및 가격 변동 환경에서 고동시성과 빠른 응답 속도 확보
    • 역할: MSA 아키텍처 설계, Redis/RabbitMQ/OpenSearch 기반 성능 최적화, AWS 인프라 구축
  • 핵심 구현 기능
    • 실시간 경매 입찰: Redisson 분산 락으로 동시성 제어, 자동 낙찰/유찰 판정
    • 이벤트 기반 알림: RabbitMQ 비동기 처리로 입찰/낙찰 알림 전송
    • 검색 엔진: OpenSearch 형태소 분석 기반 실시간 검색 및 다중 필터링
  • 핵심 구현 기술 상세
    🔴 Redis — 실시간성·동시성·부하 분산을 위한 핵심 인프라
    문제 인식
    • 입찰 트래픽 집중 시 DB 트랜잭션 경합으로 CPU 80~90% 급등
    • 읽기 많은 데이터가 반복적으로 DB에 전달되어 병목 발생
    • 분산 환경에서 안전한 동시성 제어 필요
    해결 전략

    ⚡ 입찰 핵심 로직을 DB에서 Redis로 분리

    문제: 입찰가 읽기·쓰기 요청이 단일 DB에 집중되며 CPU 80~90% 급등 및 TPS 저하 발생. 트랜잭션 충돌 및 Race Condition 위험 존재

    해결: Redis Write-Behind 패턴으로 입찰 가격 검증·갱신 로직 분리, Redisson 분산 락으로 동시 요청 직렬화

    ⚡ 변경 빈도 낮은 데이터 캐싱

    문제: 변경이 거의 없는 카테고리 조회가 모두 DB에 전달되어 반복 Read I/O 누적, 트래픽 증가 시 병목 발생

    해결: Redis 캐싱 도입으로 조회 요청을 캐시 계층에서 처리하고 DB 직접 접근 제거

    ⚡ 트랜잭션 전파 문제 해결

    문제: 클래스 레벨 @Transactional(readOnly=true)로 인해 분산 락 내부의 쓰기 트랜잭션이 같은 컨텍스트를 공유하여 동시성 제어 무효화

    해결: 입찰 로직에 REQUIRES_NEW 전파 속성 적용하여 독립된 쓰기 트랜잭션으로 분리

    성과 요약
    • 분산 락 기반 동시성 제어: Redisson을 활용해 동시 입찰 경쟁 상황에서도 정합성 유지
    • 캐싱으로 DB 부하 절감: 변경 빈도 낮은 데이터(카테고리 등)를 Redis 캐시로 처리하여 DB 접근 최소화
    • 실시간 입찰가 Redis 캐시: 입찰가 조회/갱신을 Redis로 분리해 DB I/O 감소 및 처리량 향상
    • 조회수 증가 로직 Redis 전환: DB 락 경합(낙관적 락 실패) 문제를 인메모리/원자적 처리로 전환
    성과

    DB CPU 사용률 감소 (카테고리 API 기준)

    캐싱 전
    3~6%
    캐싱 후
    0.3~0.8%

    약 80~90% 감소

    조회수 처리 (5,000 동시 요청)

    낙관적 락
    2.474s (실패 3,533건)
    Redis
    1.014s (성공 5,000건)

    처리 시간 59% 감소, 100% 성공률

    입찰 API TPS 향상

    적용 전
    7.9 TPS
    적용 후
    12.2 TPS

    약 1.5배 증가

    🟠 RabbitMQ — 후처리 비동기화로 응답성·내결함성 확보
    문제 인식
    • 입찰 이후 후처리를 동기 처리 시 응답 지연 및 서비스 결합도 증가
    • 장애 발생 시 전체 요청 실패 위험
    성과 요약
    • 이벤트 기반 비동기 처리: 입찰 성공/실패, 경매 종료, 낙찰 알림을 메시지로 발행/소비
    • 핵심/비핵심 로직 분리: 사용자 응답에 필요한 핵심 로직을 먼저 완료하고, 후속 작업은 MQ로 위임
    • DLQ(Dead Letter Queue) 고려: 실패 메시지 추적/복구 가능하도록 운영 관점의 안정성 확보
    • 장애 사례 기반 개선: 이벤트 타입 매핑 오류로 발생한 무한 재시도/로그 폭주를 분석해 매핑 수정 + 예외 핸들링 강화
    성과

    API 평균 응답시간 개선

    동기 처리
    240ms
    비동기 처리
    153ms

    약 36% 감소

    🟢 Elasticsearch — 검색 품질과 속도를 동시에 개선
    문제 인식
    • RDB LIKE 검색은 %keyword% 패턴으로 풀스캔이 발생하기 쉬워 대량 데이터에서 성능 한계가 명확
    • 한국어 검색은 형태소/조사 처리 이슈로 정확도가 떨어질 수 있어 전문 검색 엔진이 필요
    • 경매 특성상 검색 결과에 실시간 데이터(입찰가 등)가 반영될수록 DB/검색엔진 부하가 급증 → 동기화 전략 필요
    해결 전략

    ⚡ 검색 성능 병목 해결

    문제: MySQL LIKE 검색으로 인한 Full Table Scan 발생, 복합 조건 검색 시 평균 690ms 소요

    해결: OpenSearch 도입 및 nori 형태소 분석기 적용, 역 인덱스 기반 검색 구조로 전환

    ⚡ 검색 엔진 선택과 성능 개선

    문제: LIKE 기반 Full Scan 구조로 평균 690ms 지연 발생, Full-Text Search(N-gram) 적용 후에도 302ms 수준으로 목표 성능 미달

    해결: Elasticsearch 도입 및 Nori 형태소 분석기 적용, 검색 엔진을 DB에서 분리

    성과 요약
    • Elasticsearch 기반 전문 검색 + 필터링: 카테고리/가격대/상태 등 다중 조건 조합과 페이지네이션 지원
    • 키워드 수집/랭킹 기반: 검색 키워드를 자동 수집하여 랭킹 집계에 활용
    • 배치 동기화 전략: 실시간 입찰가는 Redis에 우선 반영하고, Elasticsearch는 배치/서버리스로 동기화해 부하 분산
    • 불필요한 업데이트 제거: "입찰 발생 시에만" 동기화 플래그를 생성하는 방식으로 중복 색인 방지
    성과

    검색 성능 비교 (100만 건 데이터 기준)

    MySQL LIKE
    690ms (+638ms)
    Full-Text (N-gram)
    302ms (+250ms)
    Elasticsearch
    52ms

    약 13배 개선 (92% 감소)

  • 시스템 아키텍처
    UP-PICK 시스템 아키텍처

    MSA 기반 마이크로서비스 아키텍처 (Auction, Main, Batch 서비스 분리)

    AWS ECS Fargate + RDS Aurora + ElastiCache + OpenSearch + RabbitMQ

  • 주요 성과
    • 검색 성능 92% 개선 — 690ms → 52ms (OpenSearch 형태소 분석 적용)
    • DB 부하 80~90% 감소 — Redis 캐싱으로 Master CPU 과부하 제거
    • TPS 2.7배 증가 — Virtual Thread 적용 (146 → 395)
    • 응답 속도 36% 단축 — RabbitMQ 비동기 처리 (240ms → 153ms)
    • CPU 사용률 96% 감소 — Replication 적용 (800% → 30%)
    • 배치 처리 성능 20~25% 개선 — Spring Batch 청크 최적화
    • Lambda 실행 시간 91.5% 감소 — SnapStart 적용 (47.83ms → 4.06ms)
    • CloudFront 응답 속도 45배 개선 — CDN 캐싱 (1,232ms → 27ms)

경력 및 교육

스파르타 코딩클럽

내일배움캠프 백엔드

2025.06 - 2025.11
  • Java, Spring Boot, JPA 기반 백엔드 개발
  • Spring Security를 활용한 인증/인가 시스템 구축
  • Redis 캐싱 및 Docker 컨테이너화
  • AWS 클라우드 인프라 기초 학습

이젠아카데미컴퓨터학원

풀스택 자바웹개발자 양성과정

2023.09 - 2024.02
  • Java 기반 웹 애플리케이션 개발
  • JavaScript, HTML, CSS를 활용한 프론트엔드 개발
  • MySQL, Oracle 데이터베이스 설계 및 쿼리 작성
  • RESTful API 설계 및 구현
  • JSP, Servlet 기반 웹 프로그래밍

수학과 학사

덕성 여자 대학교

2014.03 - 2019.06
  • 수학과 전공 심화/ 경영학과 복수 전공
  • 수치해석학, 이산수학, 암호학, 선형대수학, 확률 통계 등 이수

자격증

  • MOS 마스터 (2020)
  • 컴퓨터 활용 능력 1급 (2020)

연락하기

함께 일하고 싶으신가요?

언제든지 연락주세요!