일기 slecs

팀 수칙을 계층적으로 관리하는 캐스케이드 구조 개선

목차

여러 프로젝트와 서버 환경에서 팀의 개발 수칙을 일관성 있게 유지하기 위해 CLAUDE.md 캐스케이드 구조를 정리했다. 지금까지는 각 프로젝트나 디렉토리마다 수칙을 따로 관리했을 텐데, 이번 작업은 전사 수칙 → 사이트별 수칙 → 프로젝트별 수칙으로 계층적으로 상속·우선순위를 지정하는 체계를 명문화한 것이다.

왜 이런 구조가 필요한가

팀이 성장하고 운영하는 프로젝트가 많아지면, 모든 개발자/봇에 동일한 "전역 수칙"을 일관성 있게 적용하고 싶다. 예를 들어:
- "응답은 요청된 형식만 낸다"
- "날짜는 2026년 기준"
- "각 프로젝트의 수칙은 중앙 파일을 참조한다"

이런 "한 번 정의하고 모든 곳에서 자동으로 적용되는" 구조 없이 각 프로젝트마다 수칙을 복사-붙여넣기하면 문제가 생긴다:

  • 전사 정책을 변경할 때 모든 파일을 찾아 수정해야 함
  • 어떤 프로젝트는 최신 정책을 놓칠 수 있음
  • 팀 규칙의 "단일진실(source of truth)"이 분산되고 불일치하기 쉬움

이번 개선은 이런 일관성 문제를 해결하기 위해 캐스케이드 구조를 명확히 정의하고, 각 레벨에서 어떤 수칙이 우선되는지를 문서화한 것이다.

계층 구조와 우선순위

일반적으로 이렇게 설계했을 것 같다:

레벨 범위 역할
전사 중앙 저장소 모든 봇과 팀이 따르는 기본 수칙(토큰, 보안, 출력 형식)
사이트/서버 각 배포 환경 전사 수칙 + 해당 서버에만 적용되는 추가 규칙
프로젝트 각 저장소 상위 수칙 + 프로젝트 고유 사항(언어, 스타일, 라이브러리)

"(서버검증)"이라는 표기는 이 구조를 실제 서버 환경에서 테스트했다는 뜻이다. 단순히 문서를 작성한 게 아니라, symlink가 제대로 해석되고, 각 봇이 올바른 수칙을 받으며, 계층 우선순위가 실제로 작동하는지 검증했다는 의미다.

캐스케이드 패턴의 실전 가치

이런 구조의 이점은 여러 곳에서 본다:

변경 최소화: 전사 정책이 바뀌면 중앙 파일 하나만 수정. 모든 하위 레벨이 자동으로 최신 정책을 받는다.

명확한 우선순위: 같은 규칙이 여러 레벨에 정의될 때, "프로젝트 수칙 > 사이트 수칙 > 전사 수칙" 같이 순서를 명시하면 개발자/봇은 어느 것을 따를지 확실히 안다.

부분 오버라이드: 대부분은 상위 수칙을 따르되, 특정 프로젝트만 예외 규칙을 추가 가능.

신속한 온보딩: 캐스케이드 구조를 명시하는 것만으로도, 새로운 팀원이나 신규 프로젝트가 "내 CLAUDE.md는 뭘 정의해야 하고, 뭘 상속받는가"를 빠르게 파악한다.

이 패턴은 소프트웨어에서 매우 흔하다. .gitignore, ESLint 설정, Kubernetes ConfigMap, 빌드 설정 같은 곳에서 "전역 → 프로젝트 → 로컬 오버라이드" 구조가 표준이다. 팀 규칙 같은 문서도 같은 원칙을 따르는 게 자연스럽다.

회고

이 작업은 "side" 카테고리인 만큼 큰 기능 개발은 아니지만, 팀이 꾸준히 성장할수록 중요해지는 인프라다. 한두 명 팀이라면 "머릿속에 다 있으니까" 문서화를 미뤄도 괜찮다. 하지만 팀이 5명, 10명으로 늘어나고, 운영하는 봇과 서비스가 10개를 넘으면, 이런 "수칙의 단일진실"이 없으면 혼란이 금방 생긴다.

또 하나 배운 점은, 인프라 문서는 "한 번 쓰고 끝"이 아니라는 것이다. 실제 서버에서 검증하는 과정이 있어야 "진짜로 작동하는 구조"라는 확신이 생긴다. 문서상으로만 완벽해 보이는 구조도 실제 디렉토리 구조, 권한, 파일 해석 같은 운영 환경에서 예상 밖으로 동작할 수 있기 때문이다.


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

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

댓글 0

첫 댓글 달아줘.