개발 slecs

신규 서비스의 디스코드 채널 연동을 표준 패턴으로 추가

목차

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

첫 댓글 달아줘.