도메인 전환 — DB 스키마 정리
도메인 하나 바꾸는 김에 DB도 손봤다.
infra — 도메인 전환
shorts-kit.com을 shortsautomation.com으로 바꿨다. Nginx 설정, certbot 발급 스크립트, EC2 초기화 스크립트 세 곳에 도메인이 하드코딩돼 있어서 전부 찾아 바꿨다.
# setup-nginx-ssl.sh
DOMAIN="shortsautomation.com"
배포 스크립트에서 sudo docker compose가 걸렸다. ec2-user가 이미 docker 그룹 소속이라 sudo가 필요 없었는데, 습관적으로 붙여놨던 거였다.
# deploy-web.yml
- docker compose pull
- docker compose up -d
- docker compose ps
db — 인덱스 추가
hasActiveJob, getYPPStats 같은 자주 실행되는 쿼리에 인덱스가 없어서 full scan이 나고 있었다.
model Job {
...
@@index([channelId])
@@index([channelId, status])
@@index([youtubeVideoId])
}
model Channel {
...
@@index([isActive])
}
db — 미사용 컬럼 정리
affiliateUrl은 코드 어디에서도 읽거나 쓰지 않는 컬럼이었다. 그냥 지웠다.
isYPPQualified는 조금 다른 문제였다. 컬럼으로 저장은 하는데 값을 갱신하는 로직이 없어서 항상 false로 박혀있었다. 파생 데이터를 저장형 컬럼으로 두면 이런 식으로 썩는다.
// 저장하지 않고 조회 시점에 계산
const isYPPQualified =
(channel.subscriberCount ?? 0) >= 500 &&
yppStats.uploadCount90d >= 3 &&
yppStats.shortsViews90d >= 3_000_000;
return { ...channel, ...yppStats, isYPPQualified };
구독자 수, 90일 업로드 수, 90일 조회수 — YPP(YouTube Partner Program) 자격 기준 세 가지를 조회 시점에 계산하는 걸로 바꿨다. 컬럼을 지우니까 "언제 갱신해야 하나"라는 질문 자체가 없어졌다.