개발 slecs

Discord 채널 자동 구성으로 팀별 메시지 흐름 정리

목차

Discord를 통해 특정 팀 관련 메시지를 자동으로 수집하고 전달하는 시스템에 팀 전용 채널을 추가하고, 채널-도메인 매핑 기능을 구축했다. 변경 파일은 discord_channels.json과 discord_post.py로, 기존 단순한 메시지 전달 방식에서 도메인 기반 라우팅 체계로 한 단계 진화시킨 작업이다.

배경: 커뮤니케이션 효율의 병목

처음 Discord 연동을 만들 때는 몇 개 채널만 있어도 충분했다. 전체 팀이 공통 채널에서 메시지를 수신하는 단순한 구조였다. 하지만 조직이 성장하면서 다양한 팀별로 관심사가 분화되기 시작했다. 결제팀은 결제 관련 메시지만 받고 싶어 했고, 운영팀은 운영 이슈만 받고 싶어 했다. 그런데 모든 메시지가 한 채널에 쌓이다 보니 필요 없는 정보의 노이즈가 늘어났다.

이런 상황이 반복되면서 개발팀에는 매번 같은 요청들이 들어오기 시작했다: "이 기능은 어느 채널로 가야 하나", "특정 팀 전용 채널을 만들어줄 수 있나", "메시지가 잘못된 채널에 가고 있다." 수동으로 판단하거나 팀마다 개별 요청을 받는 방식은 근본적인 해결이 아니었다. 시스템이 어느 정도 자동으로 판단해야 할 규모에 도달한 것이다.

구현한 방식

두 가지 핵심 변경을 했다:

파일 역할 변경 내용
discord_channels.json 설정 계층 채널별 메타데이터와 도메인 매핑 정의
discord_post.py 실행 계층 메시지 발송 시 매핑 기반 라우팅 로직 추가

discord_channels.json은 각 채널과 도메인의 관계를 선언적으로 정의한다. 기존에는 하드코딩된 채널명이 코드 여러 곳에 흩어져 있었다면, 이제는 한 파일에서 모든 매핑을 관리할 수 있다. 새로운 팀이나 도메인이 추가될 때도 이 설정 파일만 수정하면 된다.

{
  "channels": {
    "team-payment": {
      "domain": "payment",
      "description": "결제팀 전용"
    },
    "team-operations": {
      "domain": "operations", 
      "description": "운영팀 전용"
    }
  }
}

discord_post.py의 메시지 발송 로직은 이 설정을 읽어 메시지의 도메인 속성과 매칭한다. "payment" 도메인 메시지가 들어오면, 자동으로 team-payment 채널을 찾아서 보낸다. 더 이상 코드에서 "이건 A로", "저건 B로" 같은 분기 로직이 필요 없다.

팀 관점에서의 고민들

이 변경을 하면서 얻은 장점과 고려사항들을 정리하면:

좋은 점:
- 코드 수정 없이 설정 파일만으로 채널 추가 가능 → 배포 주기 단축
- 비개발자도 설정 파일의 의도를 파악하고 관리 가능 → 팀 리더 권한 분산
- 도메인-채널 매핑이 명시적으로 드러남 → 새로 온 사람도 시스템 이해 쉬움

주의사항:
1. 버전 관리와 충돌: 여러 팀이 동시에 설정 파일을 수정하면 merge conflict이 생긴다. 초기에는 한 사람이 gatekeeper 역할을 하거나, PR 리뷰 프로세스를 명확히 정의해야 한다.

  1. 기존 메시지 처리: 이 변경은 앞으로의 메시지부터 적용된다. 이미 발송된 메시지는 자동으로 옮겨지지 않는다. 필요하면 마이그레이션 스크립트를 따로 만들어야 한다.

  2. 예외 처리: 도메인이 명시되지 않은 메시지나 매핑되지 않은 새로운 도메인은 어떻게 할지? 기본 채널로 보낼지, 에러 채널로 보낼지를 미리 정의해야 한다.

  3. 설정 파일의 검증: 누군가 오타로 잘못된 채널명을 입력하면 시스템이 조용히 실패할 수 있다. 파일 로드 시점에 검증 로직이 있으면 좋다.

개발 팀으로서의 배운 점

이런 기능을 만들면서 느낀 점은, 초기에 사소해 보이는 요청들이 모이면 반드시 시스템화가 필요하다는 것이다. "이것도 해줄 수 있나" 같은 요청이 월 3-4번 들어오는 순간, 그건 명백한 신호다. 차라리 처음부터 확장 가능한 구조를 만들어두는 게 나중에 시간을 훨씬 많이 아낀다.

또 하나는, 이런 자동화를 하면서 "설정 vs 하드코딩"의 트레이드오프를 자주 마주친다는 것. 설정이 많아질수록 관리 복잡도도 늘어난다. 하지만 완전히 하드코딩하면 매번 배포해야 한다. 어디까지 설정으로 만들고 어디부턴 코드로 유지할지는 팀과 함께 결정하는 게 중요하다. 이번 경우엔 도메인-채널 매핑이 자주 변할 것 같아서 설정으로 분리했는데, 만약 거의 안 바뀐다면 코드에 남겨둬도 문제 없었을 것.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.