구본승

무거운 트랜잭션, 이벤트로 가볍게 만들기

2.8초짜리 트랜잭션 주문 생성 API의 응답 시간을 측정했더니 2.8초가 나왔습니다. 트랜잭션 안에서 일어나는 일들을 나열해봤습니다. 주문 생성 트랜잭션 (2.8초) ├── 재고 차감 (150ms) - 핵심 비즈니스 ├── 주문 생성 (100ms) - 핵심 비즈니스 ├── 쿠폰 사용 처리 (200ms) - 부가 작업 ├── 결제 데이터 전송 (2...

10만 건 상품 데이터 조회 성능 개선기 - 인덱스와 캐시 전략

문제 정의 상품 목록 조회 API가 느렸습니다. 10만 건의 데이터를 기준으로 브랜드별 가격 범위 필터링 + 정렬 + 페이징을 처리하는데 체감상 느리다는 피드백이 있었습니다. 측정을 시작했습니다. 현실적인 테스트 데이터 생성 성능 테스트는 실제 데이터와 유사한 분포로 해야 의미 있습니다. -- 10만 건 데이터 생성 프로시저 DELIMITER ...

복잡한 설계, 한 번에 이해하기 - 클래스 다이어그램과 시퀀스 다이어그램으로 요구사항 명세 작성하기

요구사항만으로는 부족했다 새로운 서비스 설계 과정에서 요구사항만 정리하면 충분하다고 생각했습니다. - 사용자는 상품을 주문할 수 있다 - 주문 시 재고가 차감된다 - 쿠폰이 있으면 할인이 적용된다 - 포인트로 일부 금액을 결제할 수 있다 문서로 정리하고 바로 구현에 들어갔습니다. 그런데 구현 단계에서 문제가 생겼습니다. 구조와 역할이 불...

1주차 WIL Facade 패턴 도입해보기

처음엔 왜 이렇게 복잡하게 만들었나 싶었습니다 과제 템플릿 프로젝트가 Facade 패턴으로 구성되어 있었습니다. Service 하나에 다 넣으면 되지 않나? 그래서 멘토한테 직접 물어봤습니다. 돌아온 비유가 기가 막혔습니다. “검지 서비스, 중지 서비스, 약지 서비스 — 각각 손가락을 펴는 순수한 서비스들이 있다. 이게 순수한 도메인 비즈니...