Next.js와 38언어 번역을 사용해 8,000개 이상의 게임이 포함된 게임 포털을 구축한 방법

발행: (2026년 4월 6일 PM 05:56 GMT+9)
4 분 소요
원문: Dev.to

Source: Dev.to

Cover image for How We Built a Gaming Portal with 8,000+ Games Using Next.js and 38-Language Translation

스택

  • Framework: Next.js 16 with App Router
  • Database: Neon PostgreSQL with Prisma 7 ORM
  • Hosting: DigitalOcean VPS + Cloudflare CDN
  • Image CDN: Custom nginx‑based CDN (img.sonsaur.com) serving pre‑resized AVIF thumbnails
  • Search: PostgreSQL trigram indexes (pg_trgm) for fuzzy game search
  • AI Translation: Gemini API with 60‑key rotation for rate‑limit management
  • Process Manager: PM2 with auto‑restart and memory limits

이미지 CDN 도전 과제

8,000개가 넘는 게임에 각각 썸네일이 필요하므로 이미지 최적화가 핵심이었습니다. 우리는 맞춤형 이미지 파이프라인을 구축했습니다:

  • 원본 이미지는 512 px AVIF 형식으로 저장
  • 128 px (~6 KB)와 256 px (~13 KB) 변형으로 사전 리사이즈
  • 전용 nginx 서브도메인 (img.sonsaur.com)을 통해 제공
  • JavaScript 없이 이미지 컴포넌트 사용 (순수 “ 태그만으로 수분 히드레이션 비용 0)

결과: 게임 카드 이미지 페이로드가 84 % 감소했습니다.

8,000개 게임을 38개 언어로 번역하기

가장 흥미로운 도전 과제였습니다. UI는 next-intl 로 처리했지만, 게임별 콘텐츠(설명, 플레이 가이드, 팁, FAQ)도 번역해야 했습니다.

우리의 접근 방식:

  • 여러 프로젝트에 걸쳐 60개의 Gemini API 키 배포
  • 2 분마다 실행되는 크론 작업, 배치당 60개 게임 처리(키당 1개)
  • Node.js 스트리밍 충돌 방지를 위한 순차 처리
  • 키당 2분 쿨다운, 모든 키가 소진되면 10분 대기
  • Tier 1 레이트 제한: 프로젝트당 키당 하루 1,500 요청

전체 용량에서는 모든 언어에 대해 하루에 약 43,200개의 게임 페이지를 번역합니다.

성능 결과

  • Lighthouse: Performance 79, Accessibility 93, Best Practices 100, SEO 100
  • 첫 번째 게임 로드: 3 초 이하
  • 이후 탐색: 거의 즉시 (Next.js 프리패칭)
  • 이미지 CDN: 128 px 썸네일 평균 6 KB (원본 34 KB 대비)

앞으로의 계획

  • 네이티브 Android 및 iOS 앱 출시
  • 38개 언어 전체에 대한 번역 커버리지 완성
  • 라이브러리에 새로운 게임 지속적으로 추가

확인해 보세요: sonsaur.com

스택 전반에 대한 질문이 있으면 언제든 답변해 드리겠습니다. Next.js + Neon PostgreSQL + 맞춤형 이미지 CDN 조합은 이 사용 사례에 매우 적합했습니다.

0 조회
Back to Blog

관련 글

더 보기 »

Power BI 보고서 게시 및 웹사이트에 삽입

소개: 계절적으로 Power BI를 사용하는 사람으로서, 나는 항상 이것이 사용하기 쉽고 간단한 도구라고 생각했다. 이러한 관점은 내가 이를 얼마나 활용할 수 있었는지에 영향을 미쳤다,…