목표: 네트워크 지연, 429 오류 등 발생 시 요청 유실 없이 재시도 및 복구
문제 추천 기술 설명
재시도 resilience4j-retry 예외 발생 시 자동 재시도 (@Retry 어노테이션 사용 가능)
백오프 재시도 Spring Retry + Exponential Backoff 실패 시 일정 간격 증가시키며 재시도
실패 저장 Redis, Kafka, DB 로그 테이블 실패 요청을 큐 또는 로그 테이블에 저장 후 나중에 재처리
비동기 재처리 Spring @Async, Scheduler 실패 요청은 별도 비동기 태스크로 재시도 또는 알림 전송
알림 Slack Webhook / Email 발송 일정 실패율 초과 시 관리자 알림
목적 추천 기술 설명
Rate Limit 제한 resilience4j-ratelimiter 초당 요청 제한을 구성 (10 req/sec 등)
Queue 기반 처리 Redis Queue, Kafka, RabbitMQ 요청을 큐에 적재 후, 초당 5개씩 꺼내 처리
스케줄러 처리 Spring @Scheduled(fixedRate = 200) 0.2초 간격으로 요청 처리하여 초당 5개 유지
분산 처리 Redis + Lua Script 분산 환경에서도 초당 처리 수 제어 가능 (SETNX + TTL 등 활용)
목적 추천 기술 설명
대기열 구현 Kafka (추천), Redis List, RabbitMQ 고속 대기열 시스템 (다수의 요청을 적재 후 처리)
순차 소비 Kafka Consumer, Redis Consumer 초당 처리량을 제한하면서 순차적으로 요청 처리
모니터링 Prometheus + Grafana 현재 큐 상태, 소비 속도 등을 실시간 모니터링
단순한 구조면 Redis List → BRPOP / LPOP 로 구현하는 것도 가능
문제 추천 기술 설명
동시 실행 방지 Redis SETNX, DB Lock (FOR UPDATE) 배치 시작 시 Lock을 설정, 중복 실행 방지
Spring Batch 병렬 처리 Spring Batch + TaskExecutor or Partitioning 멀티스레드 또는 파티셔닝 처리 시 설정 필요
중복 데이터 제거 Set 저장, DISTINCT, GROUP BY 데이터 레벨 중복 제거
상태 저장 BatchJobStatus Table or Redis Flag 배치 상태를 기록하고 중복 시작 방지
문제 추천 기술 설명
병렬 요청 처리 CompletableFuture, Spring @Async, WebClient 여러 외부 API 병렬로 호출하여 응답 지연 최소화
타임아웃 제어 WebClient / RestTemplate timeout 설정 느린 응답 차단 및 빠른 실패 유도
캐싱 Redis Cache, Caffeine 동일 요청에 대해 캐시 응답 제공
응답 지연 감시 Spring Actuator + Micrometer + Prometheus API 응답 시간 지표 수집, SLA 분석 가능
문제 기술 설명
Fallback 처리 resilience4j-circuitbreaker, fallbackMethod 실패 시 다른 API나 캐시 응답으로 전환
비동기 메시지 처리 Kafka, Redis Stream 요청을 큐에 넣고 나중에 처리
알림 시스템 Slack Webhook, Email, SMS 연동 문제 발생 시 실시간 알림 전송
부하 테스트 k6, nGrinder, JMeter 실 환경 유사 부하 테스트로 병목 파악
요약표
목적 기술 이름
재시도 Resilience4j Retry, Spring Retry
RateLimit 제어 Resilience4j RateLimiter, Redis
요청 대기열 처리 Kafka, Redis Queue, RabbitMQ
배치 중복 방지 Redis SETNX, DB Lock
병렬 API 호출 CompletableFuture, WebClient
응답 캐싱 Redis, Caffeine
장애 대응 CircuitBreaker, FallbackMethod
알림 Slack Webhook, Email, Line Notify
응답 지연 모니터링 Prometheus + Grafana
실패 요청 저장 Redis, Kafka, RDB Log Table
화랑님 4개월 간 수고 많으셨습니다~ 블로그 꾸준히 보러 올게요