[개인] Steam 데이터 분석 서비스 - 1. 개요
1. 프로젝트 개요
왜 만들었는가
Steam은 전 세계 PC 게임 시장 1위 플랫폼이며, 리뷰·동시접속자·가격·뉴스 등 풍부한 공개 데이터를 제공합니다. 그러나 이 데이터를 마케팅·운영 인사이트로 가공해 의사결정에 쓸 수 있는 형태로 묶어둔 서비스는 거의 없습니다. 대부분 정적 차트를 보여주는 수준이고, “이 게임의 리뷰 추세가 평소와 다른가?”, “세일이 실제로 동접을 끌어올렸나?” 같은 질문에 답을 주지 않습니다.
이 프로젝트는 그 빈자리를 채우는 데이터 서비스를 직접 구현해본 결과물입니다. 단순 시각화가 아니라 자동 수집 → 분석 → AI가 자연어 인사이트로 변환하는 end-to-end 파이프라인을 목표로 잡았습니다.
핵심 가치 — “의사결정 보조 도구”
대시보드의 카드 한 칸에 “긍정률 87%”만 적혀 있으면 그냥 숫자입니다. 이걸 “긍정률 87%인데 헤비유저 코호트는 67%로 낮으니 후기 콘텐츠 보강이 필요해 보입니다” 식으로 풀어 쓰면 액션 시그널이 됩니다. 이 프로젝트의 모든 화면과 AI 코멘트는 이런 의사결정 보조의 관점에서 설계됐습니다.
2. 5포스트 로드맵
| # | 포스트 | 다루는 내용 |
|---|---|---|
| 1 | 개요 (이 글) | 동기, 협업 방식, 시리즈 안내 |
| 2 | 데이터 수집 & GCP 자동화 | Steam·ITAD API + Cloud Functions/Scheduler/BigQuery |
| 3 | 데이터 구조 & 분석 흐름 | 8개 BQ 테이블, Kiwi 형태소 분석, 24축 카테고리 분류 |
| 4 | Streamlit 대시보드 | 3탭 구조, anchor 기능, 라이브 데모 |
| 5 | AI 코멘트 (통계 검정 + Gemini) | 3섹션 9항목, 두 비율 z-test, baseline z-score, 프롬프트 설계 |
3. 협업 방식 — Claude Code 페어 프로그래밍
이 프로젝트는 혼자 진행했지만 구현 단계에서 Claude Code(Anthropic의 CLI 도구)를 페어 프로그래밍 파트너로 활용했습니다. 역할 분담은 명확했습니다.
본인 역할 (기획·결정권자)
- 문제 정의 — 어떤 인사이트가 필요한지, KPI를 어떻게 잡을지
- 데이터 모델 설계 — BQ 테이블 구조, 적재 방식(append vs overwrite), KST 기준 처리
- 분석 방법론 결정 — TF-IDF 차별화 키워드, 코호트 정의(0-10h/10-50h/50h+), 통계 검정 방식(z-test, baseline z-score), 5단계 카테고리화 임계값
- UX 설계 — 3탭 구조, anchor 기능, AI 코멘트 popover 흐름, 단일 트리거 + 병렬 실행
- AI 프롬프트 설계 — 3섹션 분리, “구체 숫자 → 통계 결론 → 따라서 ~ 액션” 패턴, 통계 용어 화이트/블랙리스트
- 모든 트레이드오프 결정 — 비용 vs 정확도, 단순함 vs 표현력, 캐싱 전략 등
Claude Code 역할 (구현 파트너)
- 결정된 설계를 코드로 옮기는 페어 프로그래밍
- BQ 쿼리 작성·디버깅, Python/Streamlit 구현, 정규식 작성 같은 보일러플레이트
- 코드 리뷰 및 리팩토링 제안 (3-에이전트 병렬 리뷰 활용)
협업 결과로 얻은 것
혼자 했다면 한 달 이상 걸렸을 분량을 압축적으로 끝낼 수 있었고, 그 시간을 방법론 자체를 다듬는 데 더 쓸 수 있었습니다. 예를 들어 “단순 +15% 임계값 vs z-score baseline 비교”의 트레이드오프를 실제 데이터에서 검증하고 후자로 통일한 결정 같은 것 — 구현 시간이 짧으니 두 번 만들어보고 비교하는 시도가 가능했습니다.
4. 핵심 기능 미리보기
이후 4개 포스트에서 자세히 다룰 내용을 한 줄씩만:
- 자동 데이터 수집 — Cloud Scheduler가 매일/3시간 단위로 Cloud Functions 5개를 트리거 → Steam/ITAD API 호출 → BigQuery에 직접 적재
- 3탭 대시보드 — 종합 / 리뷰&플레이타임 / 가격&동접 분석. anchor 기능으로 패치노트 클릭 시 전 탭이 해당 시점 ±N일로 자동 연동
- AI 코멘트 9항목 — 감성·키워드 요약 / 유저 세그먼트 시그널 / 변화 알림 3섹션, 통계 검정 결과를 자연어 인사이트로 변환
- 통계적 유의성 — 단순 % 비교의 함정을 z-score 기반 판단으로 자동 회피
- 비용 통제 — 이중 캐싱(
@st.cache_data+st.session_state), 자연 트래픽 기준 월 < $1
5. 결과물 링크
- 라이브 대시보드: steam-service-fdahblckatkerfeawgd5s5.streamlit.app
- GitHub 저장소: Whitenut200/steam-service
다음 포스트에서는 데이터 수집과 GCP 자동화 흐름을 다룹니다.