Skip to content

대학 상세 페이지 정적 생성으로 인한 웹 빌드 시간 개선 #542

@manNomi

Description

@manNomi

어떤 기능인가요?

웹 앱 빌드 시간에서 대학 상세 페이지 정적 생성(SSG)이 차지하는 비중을 줄이는 개선 작업입니다.

최근 GitHub Actions Web - Build 기준으로 전체 build job은 약 40 ~ 48초, 실제 Build web application 단계는 약 25~27초 정도 걸리고 있습니다. 현재 절대 시간이 아주 크지는 않지만, 대학 카탈로그가 늘어날수록 정적 생성 대상이 선형으로 증가하는 구조라 장기적으로 빌드 시간이 계속 느려질 가능성이 있습니다.

확인한 내용

  • 최근 CI Web - Build job 소요 시간
    • 26803027151: Web Build job 42초, Build web application 27초
    • 26802563215: Web Build job 48초, Build web application 25초
    • 26802151654: Web Build job 46초, Build web application 25초
    • 26800113782: Web Build job 40초, Build web application 26초
  • Next build 로그 기준
    • Generating static pages using 3 workers (188/188) in 5.6s
    • ● /university/[homeUniversity]/[id]generateStaticParams 기반 SSG로 빌드됨
    • 로그상 대학 상세 경로가 /university/inha/2166, /university/inha/2167, /university/inha/2168, +139 more paths로 표시되어 약 142개 대학 상세 페이지가 빌드 타임에 미리 생성됨
  • 관련 코드
    • apps/web/src/app/university/[homeUniversity]/[id]/page.tsx
    • revalidate = false
    • generateStaticParams()에서 getAllUniversities() 결과를 순회하며 모든 homeUniversity + id 조합을 정적 경로로 생성함

문제점

  • 대학 데이터가 늘어날수록 generateStaticParams() 대상 경로가 같이 늘어납니다.
  • 대학 상세 페이지가 빌드 시점 API 응답에 의존하므로, API 지연/실패가 빌드 안정성에도 영향을 줄 수 있습니다.
  • SEO/GEO를 위해 상세 페이지 노출은 유지해야 하지만, 모든 대학 상세를 매 빌드마다 정적으로 생성하는 방식이 최선인지 재검토가 필요합니다.

작업 상세 내용

  • 대학 상세 페이지 정적 생성 대상 수와 빌드 시간의 관계를 추가 측정한다.
  • /university/[homeUniversity]/[id]를 전량 SSG로 유지할지, ISR/온디맨드 생성/부분 pre-render 방식으로 바꿀지 검토한다.
  • SEO 영향 범위를 확인한다. 특히 canonical, sitemap, OpenGraph, structured data 유지 여부를 확인한다.
  • 가능한 개선안 중 하나를 선택해 PoC를 만든다.
    • 예: 주요/최근 조회 대학만 generateStaticParams로 pre-render
    • 예: generateStaticParams 제거 또는 축소 후 ISR로 전환
    • 예: sitemap에는 유지하되 상세 페이지는 최초 요청 시 생성
  • 개선 전후 GitHub Actions Web - Build 시간과 Generating static pages 시간을 비교한다.

완료 기준

  • 빌드 로그에서 대학 상세 정적 생성 경로 수와 시간이 명확히 줄어든다.
  • 대학 상세 페이지의 SEO 메타데이터와 접근성은 유지된다.
  • GitHub Actions 기준 Web Build 시간이 개선 전후로 비교 가능하게 기록된다.

참고할만한 자료(선택)

  • CI run: 26803027151
  • Web Build job: 79013870383
  • 해당 로그 발췌
    • Generating static pages using 3 workers (188/188) in 5.6s
    • ● /university/[homeUniversity]/[id]
    • /university/inha/2166, /university/inha/2167, /university/inha/2168, +139 more paths

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions