🤖
2274 in / 1495 out / 3769 total tokens
게임 서버에 텔레그램 봇 설정 페이지, 알림 유틸리티, 라우팅까지 다 박아놨던 걸 전부 제거했다. 총 435줄 삭제, 16줄 추가. 삭제가 압도적으로 많은 게 포인트다.
LAMDiceBot 프로젝트 자체가 주사위/경마 게임 서버인데, 개발 편하다고 텔레그램 알림이랑 봇 설정 HTML 페이지를 게임 서버 안에 넣어놨었다. utils/telegram.js에서 토큰 읽어오고, config/telegram.에 chatId 저장하고, bot-settings.html에 설정 UI까지 264줄이나 있었다. 생각해보면 말이 안 되는 구조다. 게임 클라이언트가 서버에 연결할 때 텔레그램 설정 페이지 라우팅이 같이 올라가 있는 거다.
UE5로 치면 게임 모드 블루프린트 안에 에디터 툴 위젯 코드를 넣어놓은 거랑 비슷하다. 빌드할 때마다 같이 컴파일되고, 런타임에도 메모리에 남아있는 셈. 서버 코드는 서버 코드대로, 개발 도구는 개발 도구대로 분리해야 하는데 "나중에 분리하지 뭐" 하다가 계속 방치됐다.
그래서 CLAUDE.md에 두 가지 규칙을 명시적으로 추가했다.
- "나중에 하면 되니까 지금은 쉽게 가자" 금지. 지금 해야 할 것은 지금 한다.
- 게임 서버에 개발 지원 코드 삽입 금지
첫 번째 규칙이 핵심이다. "나중에"는 영영 오지 않는다. 분리가 필요하면 당장 분리하고, 구조가 잘못되면 지금 고친다. 솔직히 이 규칙을 CLAUDE.md에 적은 이유는 내가 스스로에게도 못하게 하려는 거다. AI 어시스턴트한테도 이 규칙을 강제해놨으니, 이제 작업할 때마다 이 규칙이 걸린다.
routes/api.js에서 /botpage 라우트 제거, routes/server.js에서 telegram 임포트와 관련 로직 58줄 삭제, utils/telegram.js 통째로 삭제, bot-settings.html 264줄 삭제, config/telegram. 삭제. 깔끔하게 6개 파일 변경으로 끝냈다.
텔레그램 봇 기능 자체는 LAMDice-Pilot이라는 별도 프로젝트로 이관했다. 게임 서버는 게임 로직만, 개발 도구는 별도 서비스로. 서버 아키텍처에서 관심사의 분리(Separation of Concerns)는 선택이 아니라 필수다. 한 서버에 여러 역할이 뒤엉켜 있으면 배포도, 테스트도, 디버깅도 다 꼬인다.
"나중에"는 오지 않는다. 지금 분리해야 하면 지금 한다.