치지직 디스코드 봇 업데이트 내역
📌 [NEW] 20샤드 내부 샤딩 & Dynamic Failover 아키텍처 개편 (2026.06.29)
디스코드 봇의 전면적인 가용성 확보와 인프라 효율 향상을 위해 고정 20샤드 내부 샤딩(Internal Sharding) 및 동적 페일오버(Dynamic Failover) 구조로 전면 개편되었습니다.
- 무정지 고정 20샤드 가동: 서버가 늘어날 때마다 봇을 재기동할 필요가 없도록 20개 샤드(0~19번)를 영구 고정 운영하여 서비스의 연속성을 보장합니다. 최대 20,000~50,000대 서버까지 확장 대응이 가능합니다.
- 초절전형 단일 프로세스 내부 샤딩: 프로세스를 다수 생성하는 기존 외부 샤딩과 달리 단일 Node.js 프로세스 내에서 20개 샤드 웹소켓 세션을 병렬 처리하여, GCP의 955MB 저사양 사양에서도 단 80MB대의 극도의 저전력 메모리로 20개 샤드 전체를 OOM 없이 완벽하게 구동해 냅니다.
- 게이트웨이 플래핑(Gateway Flapping) 원천 방어: 슬레이브 대기 노드(로컬)가 평상시에는 웹소켓 로그인을 하지 않고 메모리 30MB대의 대기 모드로 상주하다가, 마스터(GCP) 장애 시에만
client.login()을 비동기적으로 동적 트리거하여 역할을 승격 인계함으로써 디스코드 본사로부터의 임시 토큰 차단 제재를 100% 차단합니다. - SQLite WAL(Write-Ahead Logging) 모드 도입: 여러 샤드에서 동시에
/등록,/알림메시지설정등의 쓰기 명령을 수행해도 파일 락 충돌(SQLITE_BUSY)이 없도록 순차 비동기 큐잉 및 busy_timeout을 적용하여 DB 가용성을 극대화했습니다. - 한디리(Koreanbots) API 연동 최적화: 불필요한 별도 봇 세션을 제거하고 실제 20샤드가 돌고 있는 마스터 봇 내부에서 직접 실시간 가입 서버 통계와 샤드 수를 한디리에 갱신하게 하여 세션 충돌 차단 및 메모리를 추가로 절약했습니다.
📌 글로벌 네트워크 인프라 대규모 확충 (2026.05.31)
치지직 봇의 안정성과 알림 속도를 극대화하기 위해 서버 아키텍처 및 IP 풀이 대폭 업그레이드 되었습니다.
- 5-Node 분산 아키텍처: 기존 4개 노드에서 GCP 서울 리전 노드가 추가되어 총 5개의 독립된 분산 프록시 노드(한국 GCP 2개, 해외 Oracle 2개, Cloudflare 1개)로 작동합니다.
- 압도적인 IP 풀 활용: GCP 서울 리전의 약 19만 개(193,536개), Cloudflare의 약 152만 개(1,524,736개)에 달하는 방대한 글로벌 IPv4 주소 네트워크를 순환 활용하여 치지직의 각종 차단이나 쓰로틀링(Throttling)을 완벽하게 방어합니다.
- 국내 전용 방송 완벽 지원: 서울 리전 프록시 도입으로 '국내 전용'으로 설정된 스트리머의 방송도 지역 제한 에러 없이 신속하게 감지하고 알림을 전송합니다.
📌 주요 업데이트 내용
치지직 디스코드 봇에 새로운 명령어인 /알림메시지설정이 추가되었습니다!
이제 각 채널에 등록된 스트리머별로, 그리고 알림 종류별(방송시작/커뮤니티)로 멘션 대상과 알림 메시지 문구를 자유롭게 커스터마이징 할 수 있습니다.
- 독립적인 설정: A 스트리머와 B 스트리머의 알림 메시지와 멘션 대상을 서로 다르게 설정할 수 있습니다.
- 통합된 멘션 선택: 역할을 직접 멘션하거나, 기본 내장된
@everyone을 역할 선택칸에서 곧바로 지정할 수 있습니다. - 완벽한 하위 호환성: 기존에 등록해두신 스트리머들의 설정은 자동으로 기본값(
@everyone멘션 + 기본 메시지)이 유지되므로 다시 등록하실 필요가 전혀 없습니다. - 신규 등록 자동 설정: 앞으로 새로
/등록하는 스트리머도 자동으로 기본값(@everyone멘션)이 적용됩니다. - 알림 종류 선택 등록: 이제
/등록명령어 사용 시 커뮤니티 공지, 방송 시작 알림을 각각 선택해서 등록할 수 있습니다.
🛠 사용 방법
디스코드 채팅창에 /알림메시지설정을 입력하면 다음과 같은 설정 항목이 나타납니다.
[NEW] /등록 명령어 옵션 추가
종류옵션: 스트리머 등록 시 모두(기본값) / 커뮤니티만 / 방송시작만 중 원하는 알림 종류를 선택할 수 있습니다.- 만약 기존처럼 이름만 입력하고 등록하시면, 예전과 동일하게 '모두'가 선택됩니다. 기존 설정 변경 시 동일하게
/등록명령어를 사용하여 덮어씌울 수 있습니다.
1. 필수 입력 항목 (/알림메시지설정)
스트리머: 설정을 변경할 스트리머의 닉네임(또는 고유 ID)을 입력합니다. (단, 현재 채널에 먼저/등록되어 있어야 합니다.)종류: 어떤 알림의 메시지를 바꿀 것인지 선택합니다. (방송시작 / 커뮤니티)
2. 선택 입력 항목 (입력하지 않으면 기본값 유지)
멘션역할: 알림이 울릴 때 멘션(호출)할 대상을 역할 리스트에서 선택합니다. (특정 역할 선택 또는 @everyone 가능, 미선택 시 멘션 없음)메시지: 알림과 함께 전송될 커스텀 텍스트를 입력합니다. ({streamer}입력 시 스트리머 이름으로 자동 치환)
💡 활용 예시
🎮 디스코드 알림 시뮬레이터 (미리보기)
옵션을 변경하면 아래 디스코드 화면이 실시간으로 어떻게 보이는지 확인할 수 있습니다.
예시 1: 특정 역할에게만 멘션 보내기
상황: "강소연" 방송이 켜졌을 때 @소연팬 역할에게만 알림을 보내고 싶을 때
/알림메시지설정 스트리머:강소연 종류:방송시작 멘션역할:@소연팬 메시지:강소연 방송 켰다! 다들 모여라!
예시 2: 조용하게 알림만 보내기 (멘션 끄기)
상황: 커뮤니티 새 글 알림은 시끄럽지 않게 멘션 없이 보내고 싶을 때 (메시지도 비워두면 멘션만 빠진 기본 메시지로 자동 전송됩니다)
/알림메시지설정 스트리머:강소연 종류:커뮤니티 멘션역할:(아예 비워둠) 메시지:(원하는 문구 기입 또는 비워둠)
예시 3: 스트리머 이름 자동 치환 ({streamer})
상황: 여러 스트리머에게 일관된 안내 멘트를 설정할 때
/알림메시지설정 스트리머:강소연 종류:방송시작 멘션역할:@everyone 메시지:🎉 드디어 {streamer}님이 방송을 켰습니다!
(실제 발송 결과) 🎉 드디어 강소연님이 방송을 켰습니다!