미리보기
기본 정보
안녕하세요! Java, Spring을 주력으로 사용하는 9개월 차 백엔드 개발자로, 현재 누적 회원 수 40만의 글로벌 게임 테스팅 서비스를 제공하는 시리즈 A 규모의 스타트업에서 근무하고 있습니다. 지속적으로 성장하기 위하여 꾸준하게 개인 공부를 하며, 공부한 내용은 언제든지 업무에 적용할 수 있도록 반드시 직접 적용해보거나 블로그에 정리하여 기록하고 있습니다.
기술 스택
Java, Spring, JPA, nginx, AWS, Github
경력
GXC
사원 | 백엔드 개발팀 | 재직 중
2023.11. ~ 재직 중 (11개월)
신규 서비스 xCBT 개발 2024.07 ~ 2024.09
유저들이 클로즈 베타 테스트에 참여하고, 참여 후 게임 랭킹을 통해 보상을 받을 수 있는 신규 서비스 개발
Client 전용 프로젝트 생성부터 배포까지 백엔드 개발 담당
Test Code 120개, Line Coverage 100%
프론트엔드 개발자와 소통 비용 감소 목적으로, Spring RestDocs 활용 API 문서화
Composite 패턴을 활용한 OAuth2.0 인증 구현 (구글 / 트위터 / 디스코드)
스토어 상품 관련 테이블 구조 개선 및 데이터 이관 2024.04 ~ 2024.07
상품 종류 별 테이블 혼합으로 인하여 신규 기능 개발의 어려움을 해결하기 위하여 테이블 구조를 개선하고, 관련 데이터 이관 및 로직 수정 프로젝트
5개의 상품 및 주문 관련 테이블, 로직 수정
Mysql dump를 통하여 로컬 환경에 데이터를 dump 한 뒤, 설계대로 작성한 DDL 스크립트 및 데이터 이관 SQL 실행 이후 개발 서버에 적용하여 QA 이후 이슈 없이 안전하게 배포
PG 연동 결제 서비스 개발 2024.02 ~ 2024.04
글로벌 PG사 Stripe를 연동하여 현금 결제를 통해 포인트를 구매할 수 있는 서비스 개발
결제 완료 이벤트를 웹훅으로 받아 결제내역 저장 이후 별도의 쓰레드에서 10초간 5번의 재조회를 해도 조회가 되지 않는 버그 발생 → 트랜잭션 격리 수준이 Repeatable Read였기에 발생했던 문제로, 재조회 시 매번 새로운 트랜잭션에서 수행하도록 수정하여 해결 (자세히 보기)
스토어 / 포인트 레거시 개편 및 주문 안정화 2023.11 ~ 2024.02
외주를 통해 개발된 스토어 / 포인트 시스템의 코드 품질 개선 및 불안정한 주문 기능 안정화 프로젝트
[레거시 개편]
Mybatis로 개발 된 55개의 API JPA로 재개발
에러 로그 모니터링의 어려움으로, Logback을 통해 로그를 Json으로 남기도록 하고, Filebeat + ELK를 활용하여 에러 로그 발생 시 슬랙 채널 알림 기능 개발
Controller에서 try-catch를 통하여 Error Response를 반환하는 방식에서 RestControllerAdvice를 통한 예외 처리로 변경하여 관리 포인트 최소화
불필요 14개 의존성 및 5개 모듈 제거
[주문 안정화]
N+1 문제 해결 및 불필요 쿼리 발생 로직 개선을 통한 주문 API 수행 속도 개선 (30초 → 6초)
Race Condition으로 인한 상품의 재고 데이터가 실제 재고와 맞지 않았던 문제를 Pessimistic Lock을 활용하여 재고감소 로직 안정화
다중 데이터 소스로 인한 여러 Transaction Manager를 Chained Transaction Manager를 통하여 하나로 묶어 트랜잭션 보장 처리
기타 업무
프로젝트
JustShop
개인
2023.09. ~ 2023.11.
MSA 학습 이후 학습한 내용을 실제로 적용해보기 위하여 진행한 쇼핑몰 API 서버 구현 개인 프로젝트
Spring Cloud Gateway 활용 인증/인가 처리
동시성 이슈 방지를 위한 Pessimistic Lock 활용 재고 감소 구현
Docker 활용 서비스 아키텍처 구성 및 배포
92개의 통합/단위 테스트코드 작성
Github Action + Jenkins 조합 CI/CD 파이프라인 구축
Kafka 활용 Event-Driven Architecture 구현
분산 트랜잭션 처리 구현에 대한 고민을 Saga Pattern을 활용하여 실패 시 보상 트랜잭션을 실행하는 방향으로 해결
Spring RestDocs 활용 API 문서 작성
Prometheus + Grafana 조합 서버 매트릭 수집 및 모니터링 시스템 구축