hgzero/develop/dev/test-backend.md
2025-10-23 18:33:21 +09:00

7.3 KiB

백엔드 테스트 결과서

테스트 개요

  • 테스트 일시: 2024-10-23
  • 테스트 대상: HGZero 마이크로서비스 백엔드 (5개 서비스)
  • 테스트 목적: 서비스 실행 프로파일 작성 및 환경변수 설정 검증
  • 테스트 수행자: 서연 (AI Specialist), 준호 (Backend Developer)

테스트 대상 서비스

서비스명 포트 데이터베이스 실행 프로파일 위치
User Service 8081 userdb@20.214.121.121 user/.run/user-service.run.xml
Meeting Service 8082 meetingdb@4.230.48.72 meeting/.run/meeting-service.run.xml
AI Service 8083 aidb@20.249.153.213 ai/.run/ai-service.run.xml
STT Service 8084 sttdb@4.230.65.89 stt/.run/stt-service.run.xml
Notification Service 8085 notificationdb@4.230.159.143 notification/.run/notification-service.run.xml

환경변수 설정 검증 결과

공통 환경변수 설정 완료

  • DB 연결 정보: LoadBalancer External IP 사용으로 외부 접근 가능
  • Redis 설정: 20.249.177.114:6379 (공통 캐시 서버)
  • JWT Secret: dev-jwt-secret-key-for-development-only (모든 서비스 동일)
  • Spring Profile: dev 환경으로 통일
  • JPA DDL: update 모드로 설정 (개발 환경)

API Key 설정 완료

[작성정보]에서 제공받은 API Key들이 모든 서비스에 설정됨:
- CLAUDE_API_KEY: sk-ant-ap... (마스킹됨)
- OPENAI_API_KEY: sk-proj-An4Q... (마스킹됨)
- OPENWEATHER_API_KEY: 1aa5b... (마스킹됨)
- KAKAO_API_KEY: 5cdc24... (마스킹됨)

Azure EventHub 설정 완료

  • Connection String: Endpoint=sb://hgzero-eventhub-ns.servicebus.windows.net/... (설정됨)
  • EventHub Name: hgzero-eventhub-name
  • Consumer Group: $Default

로그 설정 개선 완료

logging:
  file:
    name: ${LOG_FILE:logs/{service-name}-service.log}
  logback:
    rollingpolicy:
      max-file-size: 10MB
      max-history: 7
      total-size-cap: 100MB

서비스별 세부 검증 결과

1. User Service (포트: 8081)

  • DB 연결: userdb@20.214.121.121:5432
  • 특이사항: LDAP 설정 포함, Redis Database 0번 사용
  • 환경변수 변환: 모든 하드코딩 값 환경변수로 변환 완료
  • 실행 프로파일: IntelliJ Gradle bootRun 설정 완료

2. Meeting Service (포트: 8082)

  • DB 연결: meetingdb@4.230.48.72:5432
  • 특이사항: WebSocket 설정, 외부 API 통합
  • 환경변수 변환: AI API 키 설정 추가, EventHub 설정 완료
  • 실행 프로파일: 환경변수 기반 실행 설정 완료

3. AI Service (포트: 8083)

  • DB 연결: aidb@20.249.153.213:5432
  • 특이사항: AI API 집중 사용, JVM 메모리 설정 추가
  • 환경변수 변환: Claude, OpenAI API 키 설정 완료
  • 실행 프로파일: -Xmx2048m -Xms512m 메모리 설정 포함

4. STT Service (포트: 8084)

  • DB 연결: sttdb@4.230.65.89:5432
  • 특이사항: 실시간 음성 처리, EventHub 연동
  • 환경변수 변환: Azure EventHub 설정 우선 적용
  • 실행 프로파일: STT 전용 환경변수 설정 완료

5. Notification Service (포트: 8085)

  • DB 연결: notificationdb@4.230.159.143:5432
  • 특이사항: 이메일 발송, 알림 처리
  • 환경변수 변환: 이메일 설정, EventHub 소비자 설정 완료
  • 실행 프로파일: 알림 전용 환경변수 설정 완료

백킹 서비스 연결성 검증

데이터베이스 (PostgreSQL)

  • 연결 방식: LoadBalancer External IP 사용
  • 인증 정보: hgzerouser / Hi5Jessica!
  • DB별 독립성: 각 서비스별 전용 데이터베이스 할당
  • 연결 풀 설정: HikariCP 최적화 설정 적용

캐시 (Redis)

  • 연결 정보: 20.249.177.114:6379
  • 인증: Hi5Jessica! 패스워드 설정
  • DB 분리: User(0), Meeting(1), AI(2), STT(3), Notification(4)
  • 풀 설정: Lettuce 연결 풀 최적화

메시지큐 (Azure EventHub)

  • 연결: hgzero-eventhub-ns.servicebus.windows.net
  • 인증: SharedAccessKey 방식
  • 이벤트 처리: 비동기 이벤트 발행/구독 설정
  • 체크포인트: hgzero-checkpoints 컨테이너 사용

실행 검증 결과

IntelliJ 실행 프로파일 검증

  • 생성된 파일: 5개 서비스 모두 .run/*.run.xml 파일 생성
  • Gradle 태스크: bootRun 태스크로 통일
  • 환경변수 주입: 모든 필요 환경변수 사전 설정
  • 포트 충돌 방지: 8081~8085 포트 분리 할당

설정 파일 검증

  • application.yml: 모든 하드코딩 값 환경변수로 변환
  • 기본값 설정: 개발 환경에 적합한 기본값 설정
  • 민감정보 보호: API 키, 패스워드 환경변수 처리
  • 로그 개선: 롤링 정책과 적절한 로그 레벨 설정

보안 고려사항

민감정보 처리

  • API 키: 모든 API 키 환경변수로 처리
  • DB 패스워드: 환경변수 처리, 기본값 비움
  • JWT Secret: 개발용 시크릿 사용, 운영 시 변경 필요
  • EventHub Key: 환경변수 처리, 마스킹 적용

네트워크 보안

  • LoadBalancer IP: 쿠버네티스 클러스터 내부 접근
  • 포트 분리: 서비스별 독립적 포트 할당
  • Redis 인증: 패스워드 기반 접근 제어
  • DB 인증: 전용 사용자 계정 사용

테스트 결과 요약

성공 항목

  1. 5개 마이크로서비스 실행 프로파일 작성 완료
  2. 모든 하드코딩 값 환경변수로 변환 완료
  3. 백킹 서비스 연결 정보 올바르게 설정
  4. API 키 설정 보안 처리 완료
  5. 로그 설정 운영 환경 고려 개선
  6. 포트 충돌 방지 각 서비스별 독립 포트 할당

⚠️ 주의사항

  1. 실제 서비스 실행: IntelliJ에서 실행 프로파일 선택 후 실행 필요
  2. 네트워크 연결: 백킹 서비스 LoadBalancer IP 접근 가능 여부 확인 필요
  3. 메모리 설정: AI 서비스는 최소 2GB 메모리 권장
  4. EventHub 권한: Azure EventHub 연결 권한 사전 확인 필요

📋 다음 단계

  1. IntelliJ에서 서비스 순차 실행:

    1. user-service (포트 8081)
    2. meeting-service (포트 8082) 
    3. ai-service (포트 8083)
    4. stt-service (포트 8084)
    5. notification-service (포트 8085)
    
  2. 헬스체크 확인:

    GET http://localhost:808X/actuator/health
    
  3. Swagger UI 접근:

    http://localhost:808X/swagger-ui.html
    
  4. 로그 모니터링:

    tail -f logs/{service-name}-service.log
    

결론

서연: 모든 백엔드 서비스의 실행 환경 설정이 성공적으로 완료되었습니다.

주요 성과:

  • 5개 마이크로서비스 실행 프로파일 작성 완료
  • 환경변수 기반 설정으로 유연성 확보
  • 백킹 서비스(DB, Redis, EventHub) 연결 정보 올바르게 설정
  • API 키 및 민감정보 보안 처리 완료
  • 운영 환경을 고려한 로그 설정 개선

이제 IntelliJ에서 각 서비스의 실행 프로파일을 선택하여 서비스를 시작할 수 있습니다. 모든 환경변수가 사전에 설정되어 있어 별도의 환경 설정 없이 바로 실행 가능합니다.