좋아—“죽지 않는” 부하테스트용 Kafka+Aurora 파이프라인으로 안정성 위주 세팅을 딱 잡아줄게. (속도 < 안정성)

1) 인프라 티어(안정성 기준)

2) 브로커 안전 설정(요약)

server.properties 핵심:

process.roles=broker,controller
num.partitions=6                # 시작은 넉넉히(토픽 당). 필요 시 더 높여도 OK
default.replication.factor=3
min.insync.replicas=2
unclean.leader.election.enable=false
auto.create.topics.enable=false

# 내부 토픽도 안전하게
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=2

# 쿼터(붕괴 방지)
quota.producer.default=50MB
quota.consumer.default=80MB

# 로그/보존 (테스트 중 과도 적체 방지)
log.retention.hours=24
log.segment.bytes=1GB

파티션 수 가이드: 파티션 1개당 수천~수만 TPS 정도가 실전 범위. 목표 TPS / 5,000 ≈ 파티션 수로 대략 잡고 시작한 뒤 늘리면 됨. 안정 우선이면 “조금 많은 파티션”이 유리(컨슈머 병렬성↑).

3) 프로듀서(결제 파드) 안전 설정

Spring Kafka (application.yml) 예:

spring:
  kafka:
    bootstrap-servers: broker1.internal:9092,broker2.internal:9092,broker3.internal:9092
    producer:
      acks: all                      # ISR 충족 시에만 성공 처리
      enable-idempotence: true       # 중복 방지(필수)
      retries: 2147483647            # 사실상 무제한 재시도
      delivery-timeout-ms: 120000    # 전체 전송 타임아웃(2분)
      max-in-flight-requests-per-connection: 5
      compression-type: lz4          # 압축으로 네트워크/디스크 부담 감소
      batch-size: 65536              # 64KB
      linger-ms: 20                  # 배치 대기(집중시켜 효율↑)
      request-timeout-ms: 30000
      buffer-memory: 67108864        # 64MB

코드에서 토픽·키 설계: 동일 주문ID를 로 주어 파티션 내 순서 보장.

4) 컨슈머(Aurora 저장 파드) 안정 설정

Spring Kafka:

spring:
  kafka:
    consumer:
      group-id: payment-writer
      enable-auto-commit: false
      max-poll-records: 500
      fetch-max-bytes: 52428800      # 50MB
      fetch-min-bytes: 1048576       # 1MB
      heartbeat-interval: 3000
      session-timeout-ms: 30000
      isolation-level: read_committed
    listener:
      ack-mode: MANUAL
      concurrency: 6                 # 파드당 스레드 6개(파티션 수에 맞춰 조정)