AI 코딩, 이제 규칙은 코드로! 채널톡의 백엔드 레포 혁신
AI 코딩 도구가 아키텍처 규칙을 준수하지 않는 문제점을 인지하고, CLAUDE.md 등 컨텍스트 파일의 한계를 확인
DDD(Domain-Driven Design) 기반 리팩토링을 통해 코드 구조를 개선하고, God Object 문제를 해결
커스텀 아키텍처 테스트 도입으로 코드 규칙을 강제하고, AI의 코드 생성 정확도 향상
결정론적 코드 제어를 통해 AI가 안정적으로 코드를 생성할 수 있는 환경 구축
AI 코딩 시대, 프롬프트는 무용지물?
본문은 AI 코딩 도구의 성능 향상에도 불구하고, 아키텍처 규칙 준수 문제로 인해 생산성이 저하되는 상황을 지적한다. 특히, CLAUDE.md와 같은 컨텍스트 파일은 자연어의 모호성, AI의 낮은 이해도, 규칙 충돌 등으로 인해 기대만큼의 효과를 거두지 못했다. 연구 결과에 따르면, 컨텍스트 파일 추가는 오히려 추론 비용을 증가시키고, 성능 개선 효과는 미미했다. 채널톡 팀은 이러한 문제점을 인식하고, 결정론적 코드 제어(Deterministic Code Control) 방식으로 전환했다.
DDD 기반 리팩토링: AI를 위한 코드 구조 설계
채널톡 팀은 AI가 예측 가능한 구조를 만들기 위해 DDD(Domain-Driven Design) 기반의 리팩토링을 진행했다. 핵심은 대칭성(Symmetry)을 확보하여, 하나의 패턴을 알면 전체 코드를 이해할 수 있도록 설계하는 것이다. 구체적으로, 각 도메인은 동일한 디렉토리 구조를 가지며, alias.go를 통해 외부 접근을 제한하여 캡슐화를 강화했다. 또한, God Object 문제를 해결하기 위해 Saga 패턴을 도입하여, 모듈 간의 의존성을 명확하게 관리했다. 이러한 구조는 AI가 코드의 의도를 쉽게 파악하고, 규칙을 준수하도록 돕는다.
커스텀 아키텍처 테스트: 규칙을 코드로 강제하는 방법
채널톡 팀은 go/ast 패키지를 활용하여 커스텀 아키텍처 테스트를 개발했다. 기존 도구의 한계를 극복하고, 프로젝트의 세부 규칙을 100% 반영하기 위함이다. 이 테스트는 의존성, 네이밍, 인터페이스 패턴, 구조 규칙 등 4가지 카테고리로 구성되며, 각 규칙 위반 시 CI(Continuous Integration)에서 즉시 감지된다. 특히, 서브도메인 격리(Subdomain Isolation), Saga의 Public Service 사용 강제 등, AI가 쉽게 위반할 수 있는 규칙들을 컴파일 수준에서 강제함으로써, 코드 품질을 획기적으로 개선했다.
자동화된 코드 검증 파이프라인 구축
채널톡 팀은 3단계 enforcement pipeline을 구축하여 코드 품질을 지속적으로 관리한다. Pre-commit, pre-push, CI 단계를 거치며, 가장 빠른 단계에서 아키텍처 위반을 감지하고 수정하도록 유도한다. 특히, pre-push hook을 통해, 아키텍처 테스트를 통과하지 못한 코드는 push 자체가 불가능하도록 설정했다. 이러한 자동화된 검증 시스템은 AI가 생성한 코드의 품질을 보장하고, 개발 생산성을 향상시키는 데 기여한다. 또한, golangci-lint를 활용하여 코드 스타일 일관성을 유지한다.
AI와 함께 성장하는 백엔드 시스템
채널톡 팀은 이번 작업을 통해 AI가 안정적으로 코드를 생성할 수 있는 환경을 구축했다. 핵심 교훈은 '규칙을 문서로 적는 것'보다 '코드로 강제하는 것'이 AI의 코드 생성 정확도를 높이는 데 효과적이라는 것이다. DDD의 이점인 명확한 경계, 일관된 패턴, 모듈의 자체 완결성은 AI에게도 동일하게 적용된다. 향후, 지식 그래프 통합, 멀티 에이전트 시스템 연동 등을 통해 AI 활용 범위를 더욱 확대할 계획이다. 궁극적으로, AI와 개발자가 함께 성장하는 백엔드 시스템을 구축하는 것을 목표로 한다.