mirror of
https://github.com/ktds-dg0501/kt-event-marketing.git
synced 2025-12-06 10:06:24 +00:00
- API-TEST-RESULT.md → test/ - content-service-integration-analysis.md → test/ - content-service-integration-test-results.md → test/ - test-kafka-integration-results.md → test/ 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
9.4 KiB
9.4 KiB
Kafka 통합 테스트 결과 보고서
테스트 일시: 2025-10-30 테스트 담당: Backend Developer 테스트 환경: 개발 환경 (Mock 모드)
1. 테스트 개요
테스트 목적
- event-service의 Kafka Producer/Consumer 기능 검증
- Kafka 브로커 연결 상태 확인
- 서비스 간 메시지 통신 흐름 검증
테스트 범위
- ✅ Kafka 브로커 연결 테스트
- ✅ event-service Producer 테스트 (이미지 생성 Job 발행)
- ✅ event-service Consumer 테스트 (이미지 생성 Job 수신)
- ⚠️ content-service Consumer 테스트 (미구현으로 인한 제외)
2. 테스트 환경 설정
Kafka 브로커 정보
Cluster ID: DoD3g79BcWYex6Sc43dqFy
Bootstrap Servers:
- 20.249.182.13:9095
- 4.217.131.59:9095
Kafka Version: 3.7.0
event-service 설정
spring.kafka:
bootstrap-servers: 20.249.182.13:9095,4.217.131.59:9095
producer:
key-serializer: StringSerializer
value-serializer: JsonSerializer
consumer:
group-id: event-service-consumers
key-deserializer: StringDeserializer
value-deserializer: JsonDeserializer
auto-offset-reset: earliest
enable-auto-commit: false
listener:
ack-mode: manual
app.kafka.topics:
ai-event-generation-job: ai-event-generation-job
image-generation-job: image-generation-job
event-created: event-created
Mock JWT 토큰 생성
# Secret Key
secret = "default-jwt-secret-key-for-development-minimum-32-bytes-required"
# Payload
{
"sub": "test-user-123",
"userId": "test-user-123",
"storeId": "STORE-001",
"storeName": "테스트 매장",
"iat": 1761750751,
"exp": 1761837151
}
# Generated Token
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0LXVzZXItMTIzIiwidXNlcklkIjoidGVzdC11c2VyLTEyMyIsInN0b3JlSWQiOiJTVE9SRS0wMDEiLCJzdG9yZU5hbWUiOiJcdWQxNGNcdWMyYTRcdWQyYjggXHViOWU0XHVjN2E1IiwiaWF0IjoxNzYxNzUwNzUxLCJleHAiOjE3NjE4MzcxNTF9.0TC396_Z-Wh45aK23qPvy-u9I8RXrg5OYqdVxqvRI0c
3. 테스트 시나리오 및 결과
3.1 Kafka 브로커 연결 테스트
테스트 절차:
- event-service 시작 (포트 8081)
- Kafka 연결 로그 확인
테스트 결과: ✅ 성공
로그 확인:
2025-10-30 00:09:35 - Kafka version: 3.7.0
2025-10-30 00:09:36 - Cluster ID: DoD3g79BcWYex6Sc43dqFy
2025-10-30 00:09:36 - Discovered group coordinator 4.217.131.59:9095
2025-10-30 00:09:37 - Successfully joined group with generation Generation{
generationId=58,
memberId='consumer-event-service-consumers-4-1022b047-d310-4743-a743-6bdd0ccfa380',
protocol='range'
}
2025-10-30 00:09:37 - Successfully synced group
2025-10-30 00:09:37 - Notifying assignor about the new Assignment(
partitions=[image-generation-job-0]
)
검증 사항:
- ✅ Kafka 3.7.0 버전 확인
- ✅ 클러스터 ID 확인
- ✅ Consumer Group 가입 성공
- ✅ Partition 할당 성공 (image-generation-job-0)
- ✅ 6개 Consumer 연결 확인
3.2 이벤트 생성 테스트
테스트 절차:
- Mock JWT 토큰 생성
- POST
/api/v1/eventsAPI 호출 - 이벤트 생성 확인
API 요청:
curl -X POST http://localhost:8081/api/v1/events \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-H "Content-Type: application/json" \
-d '{
"objective": "NEW_CUSTOMER",
"storeName": "Test Cafe",
"storeCategory": "CAFE",
"storeDescription": "A nice coffee shop for testing"
}'
테스트 결과: ✅ 성공
응답:
{
"success": true,
"data": {
"eventId": "EVT-str_dev_test_001-20251030001311-70eea424",
"objective": "NEW_CUSTOMER",
"status": "DRAFT",
"createdAt": "2025-10-30T00:13:11"
}
}
생성된 Event ID: EVT-str_dev_test_001-20251030001311-70eea424
3.3 Kafka Producer 테스트 (이미지 생성 요청)
테스트 절차:
- POST
/api/v1/events/{eventId}/imagesAPI 호출 - Kafka 메시지 발행 확인
API 요청:
curl -X POST http://localhost:8081/api/v1/events/EVT-str_dev_test_001-20251030001311-70eea424/images \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-H "Content-Type: application/json" \
-d '{
"prompt": "Modern cafe promotion event poster with coffee cup",
"styles": ["MODERN"],
"platforms": ["INSTAGRAM"]
}'
테스트 결과: ✅ 성공
응답:
{
"success": true,
"data": {
"jobId": "JOB-IMG-1761750847428-b88d2f54",
"eventId": "EVT-str_dev_test_001-20251030001311-70eea424",
"status": "PENDING",
"message": "이미지 생성 작업이 시작되었습니다."
}
}
Kafka Producer 로그:
2025-10-30 00:14:07 - 이미지 생성 작업 메시지 발행 완료
jobId: JOB-IMG-1761750847428-b88d2f54
2025-10-30 00:14:07 - 이미지 생성 작업 메시지 발행 성공
Topic: image-generation-job
JobId: JOB-IMG-1761750847428-b88d2f54
EventId: EVT-str_dev_test_001-20251030001311-70eea424
Offset: 0
발행된 메시지 정보:
- Topic:
image-generation-job - Partition: 0
- Offset: 0
- Key:
JOB-IMG-1761750847428-b88d2f54 - Status: PENDING
3.4 Kafka Consumer 테스트 (메시지 수신)
테스트 절차:
- event-service의 ImageJobKafkaConsumer가 메시지 수신 확인
- 메시지 파싱 및 처리 확인
테스트 결과: ✅ 성공
Kafka Consumer 로그:
2025-10-30 00:14:07 - 이미지 생성 작업 메시지 수신
Partition: 0, Offset: 0
2025-10-30 00:14:07 - 이미지 작업 메시지 파싱 완료
JobId: JOB-IMG-1761750847428-b88d2f54
EventId: EVT-str_dev_test_001-20251030001311-70eea424
Status: PENDING
검증 사항:
- ✅ 메시지 수신 성공 (Partition 0, Offset 0)
- ✅ JSON 메시지 파싱 성공
- ✅ JobId, EventId, Status 정상 추출
- ✅ Manual Acknowledgment 처리 완료
4. 발견된 문제점
⚠️ content-service Kafka Consumer 미구현
문제 설명:
- 논리 아키텍처에서는 content-service가
image-generation-jobtopic을 구독하도록 설계됨 - 실제 구현에서는 content-service에 Kafka Consumer 코드가 없음
- content-service의
application.yml에 Kafka 설정이 없음
현재 메시지 흐름:
Event-Service (Producer) → Kafka Topic → Event-Service (Consumer)
↓
자신이 발행한 메시지를
자신이 소비하고 있음
설계된 메시지 흐름:
Event-Service → Kafka → Content-Service → 이미지 생성 → Kafka → Event-Service
(Producer) (Consumer) (Producer) (Consumer)
영향:
- content-service는 현재 Redis 기반으로만 Job 관리
- 서비스 간 Kafka 기반 비동기 통신이 불가능
- 이미지 생성 작업이 content-service에 전달되지 않음
권장 사항:
- 옵션 A: content-service에 Kafka Consumer 구현 추가
- 옵션 B: 설계 문서 수정 (Redis 기반 통신으로 변경)
- 옵션 C: event-service가 content-service REST API 직접 호출
5. 테스트 결과 요약
성공한 테스트 항목
| 항목 | 결과 | 비고 |
|---|---|---|
| Kafka 브로커 연결 | ✅ 성공 | 클러스터 ID 확인, Consumer Group 가입 |
| Event 생성 | ✅ 성공 | Event ID: EVT-str_dev_test_001-20251030001311-70eea424 |
| Kafka Producer (이미지 생성) | ✅ 성공 | Topic: image-generation-job, Offset: 0 |
| Kafka Consumer (메시지 수신) | ✅ 성공 | 메시지 파싱 및 처리 완료 |
| Manual Acknowledgment | ✅ 성공 | 수동 커밋 처리 완료 |
미검증 항목
| 항목 | 상태 | 사유 |
|---|---|---|
| content-service Kafka Consumer | ⚠️ 미구현 | Kafka Consumer 코드 없음 |
| AI Service Kafka Consumer | ⚠️ 미확인 | AI Service 미테스트 |
| Analytics Service Kafka Consumer | ⚠️ 미확인 | Analytics Service 미테스트 |
| 서비스 간 메시지 전달 | ⚠️ 불가 | content-service Consumer 미구현 |
6. 테스트 데이터
생성된 테스트 데이터
Mock JWT Token:
userId: test-user-123
storeId: STORE-001
storeName: 테스트 매장
Event:
eventId: EVT-str_dev_test_001-20251030001311-70eea424
objective: NEW_CUSTOMER
storeName: Test Cafe
storeCategory: CAFE
status: DRAFT
Image Generation Job:
jobId: JOB-IMG-1761750847428-b88d2f54
eventId: EVT-str_dev_test_001-20251030001311-70eea424
prompt: Modern cafe promotion event poster with coffee cup
styles: [MODERN]
platforms: [INSTAGRAM]
status: PENDING
Kafka Message:
topic: image-generation-job
partition: 0
offset: 0
key: JOB-IMG-1761750847428-b88d2f54
7. 결론
주요 성과
-
event-service Kafka 통합 검증 완료
- Producer: 메시지 발행 성공
- Consumer: 메시지 수신 및 파싱 성공
- Kafka 브로커 연결 안정
-
Manual Acknowledgment 패턴 검증
- 메시지 처리 후 수동 커밋 정상 작동
- 장애 시 메시지 재처리 방지 메커니즘 확인
-
JSON Serialization/Deserialization 검증
- 메시지 직렬화/역직렬화 정상 작동
- Type Header 사용하지 않는 방식 확인
다음 단계
- content-service Kafka Consumer 구현 여부 결정
- AI Service Kafka 통합 테스트
- Analytics Service Kafka 통합 테스트
- 전체 서비스 간 End-to-End 메시지 흐름 테스트
테스트 담당자: Backend Developer 검토자: System Architect 승인일: 2025-10-30