Skip to content

[CHORE] user-service, api-gateway에 Swagger/Prometheus/K6 연동 #130

Description

@riiach

📌 작업 설명

Swagger(springdoc-openapi), Prometheus, K6 부하테스트 기본 인프라(Prometheus 서버, Grafana, k6 스크립트 구조)는
팀원이 이미 세팅 완료했고, store/waiting/payment/reservation 서비스는 이미 연동되어 있습니다.
담당 서비스인 user-serviceapi-gateway만 아직 연동이 안 되어 있어 이번 작업으로 붙입니다.


🎯 목적

  • API 문서화(Swagger)로 프론트/타 서비스 담당자가 user-service, gateway API를 쉽게 확인할 수 있게 함
  • Prometheus/Grafana로 두 서비스의 메트릭을 모니터링 대상에 포함
  • K6로 인증/라우팅 구간(로그인, JWT 검증 등) 부하테스트 가능하게 함

✅ 작업 목록

Swagger

  • user-service build.gradlespringdoc-openapi-starter-webmvc-ui 추가 (다른 서비스와 버전 통일: 2.8.9)
  • api-gateway는 WebFlux 기반이라 springdoc-openapi-starter-webmvc-ui가 아니라
    **springdoc-openapi-starter-webflux-ui**를 써야 함 (버전 호환성 확인 필요)
  • user-service SecurityConfigpermitAll 경로에 /v3/api-docs/**, /swagger-ui/** 추가
  • api-gateway JwtAuthenticationFilter의 인증 제외 경로(EXCLUDE_PATHS, 현재 /actuator/health만 있음)에
    Swagger 관련 경로 추가 — SA 기획서 "Gateway 고도화 개발 > 인증 제외 경로 설정 - Swagger" 항목 그대로 반영
  • Gateway에서 Swagger UI를 어떻게 노출할지 결정 (아래 "확인 필요" 참고)

Prometheus

  • user-service build.gradlemicrometer-registry-prometheus(+ micrometer-tracing-bridge-brave, zipkin-reporter-brave) 추가
  • api-gateway build.gradle에 동일하게 micrometer-registry-prometheus 추가
  • 두 서비스 application.yamlmanagement.endpoints.web.exposure.includemetrics,prometheus 추가 (현재 health,info만 있음)
  • management.metrics.tags.application 설정 추가 (다른 서비스 컨벤션과 동일)
  • docker/prometheus/prometheus.yml
    • 이미 있는 user-service 주석(# - job_name: user-service) 활성화
    • api-gateway용 scrape job 신규 추가 (host.docker.internal:8000)

K6

  • k6/store처럼 k6/user, k6/gateway(또는 k6/auth) 디렉토리 신설
  • 부하테스트 시나리오 확정 (아래 "확인 필요" 참고) 후 스크립트 작성
  • 각 디렉토리에 실행 방법 정리한 README.md 작성 (k6/store/README.md 참고)

📋 완료 조건

  • http://localhost:8001/swagger-ui/index.html (user-service), Gateway 경유 Swagger 접속 정상 확인
  • http://localhost:8001/actuator/prometheus, http://localhost:8000/actuator/prometheus 정상 노출 확인
  • Grafana/Prometheus 타겟 목록에 user-service, api-gateway UP 상태로 표시
  • k6 스크립트 로컬 실행 성공

🔧 작업 범위

  • Docker (prometheus.yml)
  • Kafka
  • Redis
  • PostgreSQL
  • AWS
  • GitHub Actions
  • 기타 (Gradle 의존성, Spring Security 설정, K6)

🔗 관련 문서

  • SA 기획서 > Gateway 고도화 개발 (인증 제외 경로 - Swagger)
  • k6/store/README.md (기존 연동 참고용)
  • docker/prometheus/prometheus.yml

📝 참고 사항 (확인 필요)

  1. Gateway Swagger 노출 방식 미확정 — 둘 중 결정 필요
    • (안1) Gateway는 문서 없이, 각 서비스 swagger-ui로의 라우팅만 열어줌 (JWT 필터 제외 경로만 추가)
    • (안2) Gateway 자체도 springdoc-openapi-starter-webflux-ui로 문서 생성 + 각 서비스 API 문서를 한 곳에 모으는 통합 Swagger 구성
  2. K6 시나리오 미확정 — user-service(로그인/회원가입/JWT 재발급 등), api-gateway(라우팅+JWT 검증 처리량) 중
    어떤 API·시나리오를 부하테스트 대상으로 할지 팀 내 확정 필요

스크린샷

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Fields

    No fields configured for Task.

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions