[커널아카데미] 백엔드 12기 25주차 - 파이널 프로젝트

jh5959·2025년 9월 13일

파이널 프로젝트

  1. 시스템 상태 조회
    통합 상태 (status)
  • healthy → 전부 up
  • degraded → 일부 down, 일부 up
  • unhealthy → 전부 down

개별 서비스가 boolean 만 반환 → 통합 서비스에서 "up"/"down" 변환

통합 헬스 체크 service - up/down

  • 개별 헬스체크 service - T/F
  • 개별 헬스체크 service - T/F

코드흐름

[Controller]
   |
   |  (GET /v1/system/health)
   v
[SystemHealthService]  ← 통합 서비스
   |
   |--- 호출 ---> [DatabaseHealthCheckService] → "up"/"down"
   |
   |--- 호출 ---> [LLMHealthCheckService] → "up"/"down"
   |
   |--- 호출 ---> [CrawlerHealthCheckService] → "up"/"down"
   |
   |--- 호출 ---> [SchedulerHealthCheckService] → "up"/"down"
   |
   v
 집계 로직 (aggregateStatus)
   |
   ├─ 모두 up      → status = "healthy"
   ├─ 일부 down    → status = "degraded"
   └─ 모두 down    → status = "unhealthy"
   |
   v
[DTO 생성] → { status, services }
   |
   v
[Controller 응답] → JSON 반환
  1. 대시보드 통계 조회
  • (추가 필요) USERS: COUNT(*)totalUsers
  • SCHEDULED_TASKS: COUNT(*) WHERE is_active='Y'activeSchedules
  • (추가 필요) TREND_KEYWORDS: COUNT(*)totalKeywords
  • (추가 필요) BLOG_PUBLISH_LOGS: COUNT(*) WHERE status='PUBLISHED'publishedContent
  • SYSTEM HEALTH: 직접 /v1/system/health API 호출 결과 활용 → systemStatus
  1. 모니터링 대시보드 데이터
  • AI_GENERATED_CONTENT: COUNT(*)totalContent
  • BLOG_PUBLISH_LOGS: COUNT(*) WHERE status='PUBLISHED'publishedContent
  • (추가 필요) CONTENT_METRICS 같은 집계 테이블 (없으면 설계 필요):
    • ~~totalViews, totalLikes, conversionRate (조회수/좋아요 데이터가 없다면 로그 기반 집계 필요)~~
  • UNIFIED_LOGS 또는 기능별 테이블(AI_GENERATED_CONTENT, BLOG_PUBLISH_LOGS):
    • 최근 생성/실행 내역을 가져와 recentActivity 채움
    • log_message, status_code, created_at 활용
  1. 알림/로그 조회
  • UNIFIED_LOGS
    • log_id → id
    • log_level → level
    • log_message → message
    • log_type (또는 step_code) → module
    • created_at → timestamp
    • log_detail (JSON) → details
  • 페이징: ROWNUM, OFFSET/FETCH 쿼리 활용

회고

keep

  • API 구현 중
  • 로직을 먼저 글로 쓰고 정리하면서 만든 다음에 코드로 적용하고 있다

problem

  • 데이터가 없어서 데이터를 넣어서 테스트해야 하는지 아니면 dual로 할 수 있는지 어떤 방식이 맞는지 고민 중이다

Try

  • 일단 하드코딩으로 로직을 구현 후 샘플 데이터를 넣어서 테스트 하거나 dual을 이용할 수 있다면 그렇게 테스트 해야 겠다

0개의 댓글