- hee-commerce는 티몬 과 같은 이커머스 서비스에서 운영될 수 있는 타임딜 서버로, 10분동안 TPS 3000를 감당할 수 있도록 구현 중입니다.
- 서버 시나리오를 구글 Docs에 상황을 구체화한 후 프로젝트를 시작하였고, 특히 “주문 API”에 집중하여 프로젝트를 진행했습니다.
- JAVA 17, SpringBoot 3, MyBatis 3.5, MySQL 8, Redis 7.0, Flyway 9.5.1, RestDocs, Docker
트랜잭션이 필요한 엔티티 구조
을영속성이 필요 없는 필드
를 제거하고새로운 클래스
를 만들어서트랜잭션 필요 없는 엔티티 구조
로 변경(#81)- 다중 서버 환경에서 재고 차감과 관련된
동시성 이슈 문제
를분산락
이 아닌딜 상품과 재고 분리형 저장 구조
와재고 사후 검증 단계 도입
으로 해결(wiki)
- RestDocs를 이용하여 API 개발 시 TDD 원칙 적용 (초기 주문 완료 API, 주문 사전 저장 API, 주문 승인 API, 딜 상풍 목록 조회 API, 딜 상품 상세보기 API)
테스트 코드
로비즈니스 로직의 문서화
를 위해서비스 클래스
가 아닌도메인 모델
에게비즈니스 로직 책임
변경(#167)가독성
과유지보수성
을 고려해서fixture
과함수
활용해서 테스트 코드 리팩토링(#146)
유지보수성
을 고려해서 재고 증가/감소 및 재고 히스토리 저장 로직을응집력
있게 묶어서 관리(#158)유지보수성
을 고려해서 RedisUtils 클래스를 만들어서 Redis의 key를 한 곳에서응집력
있게 관리 (#153)유연한 코드
를 위해의존성 주입
을 활용하여 인증 로직 구현(#171)- int 대신 Integer 사용하여
동적쿼리
를 단순한정적 쿼리
로 변경(#133, #144)
- PR에 이 작업이 무엇인지, 왜 그렇게 했는지 등 맥락을 전달하기 위해 노력했습니다. (예시 : #72)