신규 서비스의 디스코드 채널 연동을 표준 패턴으로 추가
목차
vtuber 프로필 서비스를 위한 디스코드 채널 연동 설정을 추가했다. 핵심은 기존에 kpopdex에서 정립된 설정 패턴을 그대로 따라가기로 결정한 것. 단순히 JSON 한 줄 추가가 아니라, 이미 검증된 구조를 신규 서비스에 적용함으로써 설정 일관성을 유지하고 향후 확장성을 확보하는 작업이었다.
왜 설정 기반으로 접근했나
멀티 서비스 환경에서 각 서비스가 디스코드 채널과 연결되는 방식은 꽤 다양할 수 있다. 어떤 서비스는 단일 채널로 충분하고, 어떤 서비스는 여러 채널을 동시에 관리해야 한다. 이런 매핑 정보를 코드에 하드코딩하면:
- 새 서비스 추가할 때마다 코드 수정 필요
- 채널 ID 변경 시 배포 필요
- 어느 서비스가 어느 채널과 연결됐는지 한눈에 파악 어려움
대신 discord_channels.json 같은 설정 파일에 모든 매핑을 집중시켜두면, 런타임에 이를 읽어서 처리하는 방식이 훨씬 유연하다. 설정 변경만으로 배포 없이 채널 재매핑이 가능하고, 여러 환경(개발/스테이징/프로덕션)에서 다른 설정을 쉽게 관리할 수 있다.
기존 패턴을 그대로 따른 이유
kpopdex에서 이미 같은 방식으로 디스코드 채널 설정을 관리하고 있었다. 처음 봤을 때의 JSON 구조를 보니:
- 서비스별 이름(key)
- 채널 ID 배열 또는 단일 채널
- 선택적 메타데이터 (예: 채널 권한, 공지 템플릿)
이 구조가 간단하면서도 충분히 확장 가능했다. 그래서 팀에서 "새 서비스 추가할 때 이 구조를 표준으로 쓰자"는 암묵적 합의가 있었고, 이번엔 vtuberprofile을 추가할 때 그것을 따랐다.
이렇게 하면:
| 항목 | 장점 | 주의점 |
|---|---|---|
| 표준 패턴 채택 | 팀원들이 새 구조를 학습할 필요 없음 / 코드리뷰 시간 단축 | 나중에 패턴 변경 시 모든 서비스 영향 |
| JSON 기반 설정 | 런타임 변경 가능 / 환경별 다른 설정 용이 | 스키마 검증 필요 (잘못된 JSON이 런타임 에러 유발) |
| 서비스별 독립적 항목 | 각 서비스 담당자가 자신의 채널만 관리 | 채널 중복 할당이나 권한 충돌을 방지하는 검증 필요 |
회고: 일관성의 작은 선택들이 모인다
이런 결정들이 중요한 이유는 기술적 측면도 있지만, 팀 운영 측면도 크기 때문이다.
먼저, 새 개발자가 온보딩될 때를 생각해보자. "우리 회사에서는 신규 서비스 추가할 때 discord_channels.json에 이렇게 항목을 넣으면 알아서 연동돼"라고 5분 안에 설명할 수 있다. 만약 서비스마다 다른 방식을 썼다면, 각각 이해하고 설명하는 데 몇 배의 시간이 걸렸을 것이다.
다음으로, 코드리뷰 관점에서도 좋다. 같은 패턴을 따르면 리뷰어 입장에서 "어, 이 부분이 kpopdex와 다르네?" 같은 불일치를 빠르게 잡아낼 수 있다. 표준화가 있으면 deviation이 눈에 띈다.
마지막으로, 유지보수 시 버그가 생길 가능성도 낮아진다. kpopdex에서 이미 한 번 검증된 구조니까, vtuberprofile도 같은 방식이면 예상 외 엣지 케이스가 적다.
물론 이것도 완벽하지는 않다. 언젠가 디스코드 채널 연동 로직 자체가 바뀔 수도 있고, 그땐 JSON 스키마를 먼저 업데이트하고 모든 서비스가 새 스키마를 따르도록 마이그레이션해야 한다. 하지만 표준화된 지점이 명확하면, 그 변경도 조직적으로 수행할 수 있다.
비슷한 상황이 또 생긴다면 피해야 할 것:
- 각 서비스마다 설정 파일 이름을 다르게 짓기 (vtuberprofile_channels.json, kpopdex_discord.json 등)
- 일부는 JSON, 일부는 YAML, 일부는 환경변수로 섞어서 관리하기
- 설정 검증 로직을 없애고 "runtime에 뭔가 터지면 그때 고치자" 하기
이번 커밋은 기술적으로는 한 줄 추가지만, 팀의 일관성 유지와 확장 가능성을 위한 작은 결정의 누적이다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.