About Me
Project
문답 기반으로 CS 학습을 돕는 모바일 애플리케이션
팀 프로젝트 · 백엔드 기여 30% · Kotlin, Spring Boot, MySQL
사용자별 일일 질문 중복 발급 방지
- 문제 · 동일 사용자의 동시 요청으로 하루 1회 질문 발급 정책이 깨질 수 있었습니다.
- 판단 · 질문 발급 여부를 판단하는 전체 과정을 사용자 단위로 보호해야 한다고 보았습니다.
- 해결/결과 · MySQL Named Lock과 Spring AOP로 동시 발급을 제어해, 3개 동시 요청이 동일한 질문 ID를 반환함을 확인했습니다.
신고 알림 누락의 추적·복구 구조 구축
- 문제 · 운영 중 신고는 저장됐지만 Slack 알림이 누락되어 신고를 인지하지 못하는 사례가 발생했습니다.
- 판단 · 신고 저장과 외부 알림의 실패를 분리하고, 실패한 알림을 추적·복구할 수 있어야 한다고 보았습니다.
- 해결/결과 · Spring 트랜잭션 이벤트와 Outbox 상태 기록, 스케줄러 재처리로 Webhook 실패 알림을 복구하는 흐름을 구축했습니다.
사용하지 않거나 만료가 임박한 기프티콘을 사고파는 중고거래 플랫폼
Java 17, Spring Boot, MyBatis, MySQL, Redis, Redisson
선착순 쿠폰 발급의 동시성 정합성 개선
- 문제 · 동시 발급 요청에서 재고 초과 발급과 사용자별 중복 발급이 발생할 수 있었습니다.
- 판단 · 분산락의 만료·장애 상황에서도 재고와 중복 발급 규칙은 DB에서 지켜야 한다고 보았습니다.
- 해결/결과 · Redisson 분산락과 MySQL의 원자적 갱신·유니크 제약을 함께 적용해, 재고 100개 조건에서 발급 100개·잔여 재고 0개·중복 0건을 확인했습니다.
인기순 조회 성능 개선
- 문제 · 좋아요 100만 건을 실시간 집계하는 인기순 Top 20 조회가 4.6초까지 느려졌습니다.
- 판단 · 인덱스 추가 후에도 남는 반복 집계 비용을 줄이려면, 집계값을 관리하는 구조를 바꿔야 한다고 보았습니다.
- 해결/결과 · 사전 집계 메타 테이블과 MySQL 커버링 인덱스로 조회 비용을 줄여, 상품 10만 개 기준 4.6초 → 145ms로 약 96% 개선했습니다.
Certifications
SQLD
취득
정보처리기사
취득
Education
f-lab
2023.07 ~ 2024.01
깊이있게 학습하는 방법을 익혀 사수가 없어도 혼자 성장할 수 있는 개발자로 성장할 수 있도록 멘토링을 진행하여, 자바의 기본 개념들을 학습한 후 프로젝트를 통해 설계, 구현, 문서화를 포함한 전체적인 과정에 참여하여 문제 해결 능력과 소프트 스킬을 배웠습니다.
멋쟁이 사자처럼 백엔드
2022.09 ~ 2023.02
Java/Spring을 배우고 프로젝트에 적용하는 부트캠프로 회고 문화와 효울적인 스터디 진행하는 방법을 배웠습니다. 또한, 프로젝트를 진행할 떄 구현 뿐 아니라 프로젝트 일정 관리, 협업 방식, API 설계 등을 배웠습니다.