Java Spring Framework MyBatisOracle PostgreSQL RedisJavaScript React Redux Redux-SagaLinux Jenkins Git ELK APMKafkaJira Confluence1) APM 분석
2) Thread 분석
synchronized에 의해 직렬 처리되고 있음을 발견3) 부하 테스트 수행
synchronized 유무만 다른 두 버전 비교4) 추가 병목 검증
1) 보상 트랜잭션 결과 케이스 분석
2) 보상 결과 영속화
3) 자동 재처리 구현
SUCCESS, 실패 시 재시도 횟수 증가4) 최종 실패 대응
FAIL 처리1) 원인 분석
2) 유니크 제약 기반 중복 차단 구조 설계
3) 중복 요청 응답
1) 동시성 재현
2) 원자적 UPDATE로 개선
잔여 > 0)을 WHERE 조건절로 옮겨 차감과 한 문장으로 합치고, 확인과 차감 사이 다른 트랜잭션 개입 방지1) 실행계획 분석
2) 인덱스 분석
3) 인덱스 설계
4) 쿼리 수정
to_timestamp 함수로 감싸져 있어 인덱스 스캔 불가to_timestamp 제거| 항목 | 개선 전 | 개선 후 |
|---|---|---|
| cost | 250만 | 5,000 |
| 시간 | 6,800ms | 9.412ms |
paper_categories)에 뉴스 데이터가 1:N으로 매핑되는 구조1) N:M 매핑 구조의 데이터 모델 재설계
platform_categories 테이블 신설: 자사 서비스 플랫폼별 표준 카테고리 관리categories_mapping 테이블 추가: N:M 관계 구현으로 하나의 언론사 카테고리가 여러 플랫폼 카테고리에 매핑 가능하도록 설계2) 전략 패턴 기반 수집 로직 공통화
1) 캐시 조회 및 갱신 전략
2) 상품 다건 조회 캐싱
3) Cache Stampede 방지
1) Outbox 패턴 적용
2) 메시지 소비 멱등 구조 설계
event_handled에 저장(eventId)eventId를 DB 레벨에서 유니크 제약으로 멱등성 보장eventId + DB 유니크 제약 이중 안전망으로 at-least-once 환경에서 컨슈머 중복 처리 차단