생일·컴백·신곡을 한눈에
목차
팬들이 자주 놓치는 정보들—생일 축하, 컴백 카운트다운, 최근 발매—을 한곳에서 보도록 /today 페이지를 새로 만들었다. "라이브 레이어"라고 부르는 이 기능은 단순한 정보 나열이 아니라, 자동화 봇이 지속적으로 데이터를 보강하고, 캘린더 구독(.ics)까지 지원하는 통합 대시보드다.
왜 이 기능이 필요했나
팬 커뮤니티 플랫폼을 운영하다 보니 명확한 문제가 보였다. 같은 정보인데도 사용자들이 여러 채널을 오갔다. 누군가는 프로필에서 생일을 확인하고, 누군가는 소식 피드를 뒤지고, 공지사항을 놓친 사람은 컴백 일정을 몰랐다.
팀 입장에선 이런 정보를 매번 수동으로 업데이트하는 게 비효율적이었다. 데이터가 흩어져 있으면 누군가는 빠뜨리게 되고, 결국 팬 경험이 떨어진다. 그래서 "한번에 보는 대시보드"를 만들기로 했고, 여기에 자동화를 얹으면 운영 부담까지 줄일 수 있겠다고 판단했다.
라이브 레이어 아키텍처
| 파일 | 역할 | 의미 |
|---|---|---|
src/pages/[lang]/today.astro |
다국어 라우팅 & SSR | 어떤 언어든 /today 접근 가능 |
src/components/pages/TodayPage.astro |
UI 컴포넌트 | 생일, 컴백, 발매 데이터 시각화 |
src/layouts/Base.astro |
전역 레이아웃 | 네비게이션, 헤더, 푸터 |
src/lib/db.ts |
DB 쿼리 레이어 | 오늘 생일·컴백·신곡 조회 최적화 |
src/i18n/ui.ts |
국제화 문자열 | 각 언어별 UI 라벨 관리 |
bot/autofill_groups.py |
자동보강 봇 | 데이터 신뢰도 유지 |
페이지는 Astro의 동적 라우팅을 활용했다. [lang]/today 라우트가 다국어를 지원하고, 각 언어별로 그날의 이벤트 데이터를 받아온다. TodayPage 컴포넌트는 그 데이터를 받아서 시각적으로 정렬한다. 중요한 건 db.ts의 쿼리가 얼마나 빠른가인데, 매일 방문하는 페이지니까 응답 시간이 직결된다.
자동보강 봇으로 정보 신뢰도 올리기
이 기능이 진짜 "라이브"가 되려면 데이터가 항상 최신이어야 한다. 수동 업데이트는 스케일 안 되니까 autofill_groups.py 봇을 만들었다.
봇의 역할:
- 각 아티스트·그룹의 생일 정보 누락 여부 확인
- 컴백 일정이 DB에 있는지 체크
- 신곡 정보 수집 여부 검증
- 빠진 데이터는 외부 API나 내부 소스에서 자동 채우기
이런 자동화 봇은 관리 피로도를 줄이는 핵심이다. 운영팀이 매일 확인할 필요 없이, 봇이 주기적으로(예: 매일 새벽) 실행돼서 데이터를 깔끔하게 유지한다. 게다가 빠진 부분이 로그로 남으니 어디가 문제인지 빨리 파악할 수 있다. 팀 규모가 커지면서 이런 자동화의 중요성이 더 커진다.
다국어 지원과 캘린더 구독
팬들이 여러 국가에서 접속하니 다국어는 필수였다. src/i18n/ui.ts에 각 언어별 라벨을 정의해두고, [lang]/today 라우트에서 받아서 렌더링한다.
더 흥미로운 기능은 캘린더 구독(.ics)이다. 사용자가 좋아하는 아티스트의 생일·컴백을 자신의 캘린더 앱(Google Calendar, Outlook 등)에 추가할 수 있게 했다. 이건 마케팅 입장에선 훌륭한 리텐션 수단이고, UX 입장에선 "우리 서비스를 너의 일상에 끼워넣기" 전략이다.
구독 흐름:
1. /today 페이지에서 [구독] 버튼 클릭
2. .ics 파일 생성 (아티스트 생일·컴백 일정)
3. 사용자가 자신의 캘린더에 추가
4. 이벤트 날 알림 → 서비스 재방문
회고: 이런 기능 만들 땐
이 작업을 통해 배운 패턴들:
첫째, 정보 중앙화의 힘. 팬들이 찾아다니지 않아도 되는 경험은 생각보다 강력하다. 마케팅팀과 협력할 때 강조했다. "더 많은 데이터를 보여드린다"가 아니라 "필요한 정보를 이미 정렬해서 보여드린다"는 차이.
둘째, 자동화 봇의 우선순위. 기능 론칭 초기엔 수동 관리로 시작할 수 있지만, 그 순간부터 "언제까지 수동으로 할 건가"를 명확히 해야 한다. 우리는 1주일로 정했고, 이후론 무조건 봇이 데이터를 관리하도록 했다. 그래야 팀 스케일이 안 깨진다.
셋째, 다국어와 구독은 "나중에"가 아니라 MVP부터. 사용자 확장을 고려한 설계는 처음부터 하는 게 리팩토링 비용을 줄인다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.