좋아—“죽지 않는” 부하테스트용 Kafka+Aurora 파이프라인으로 안정성 위주 세팅을 딱 잡아줄게. (속도 < 안정성)
m6i.xlarge(4vCPU/16GB) 또는 m6i.2xlarge(8vCPU/32GB).
default.replication.factor=3, min.insync.replicas=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 ≈ 파티션 수로 대략 잡고 시작한 뒤 늘리면 됨. 안정 우선이면 “조금 많은 파티션”이 유리(컨슈머 병렬성↑).
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를 키로 주어 파티션 내 순서 보장.
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개(파티션 수에 맞춰 조정)