JIN.PROC // v3.1
~/ / AI 활용법 / 2026-04-29-ai-guide-7-modularization

[AI 활용법 7] 모듈화 임계값 — AI가 짠 코드를 쪼개는 시점

300줄, 50줄, 3단계. 숫자로 합의하면 논쟁이 줄어든다

DATE 2026.04.29 UPDATED 2026.04.29 READ ~ 3 MIN WORDS 525

시리즈 7편. “이 파일 너무 커요”는 의견이다. 숫자가 들어가면 합의가 된다.

왜 숫자가 필요한가

LLM은 한 파일에 모든 걸 몰아넣는 경향이 있다. 그게 첫 응답에 잘 작동하기 때문이다. 그런데 그 파일이 다음 PR에서 모두를 괴롭게 만든다.

“좀 쪼개 줘”라고만 하면 LLM은 두 개로 쪼갠다. 어떻게 쪼개야 하는지에 대한 합의가 없으면 결과가 들쭉날쭉이다. 숫자 기반 임계값 이 가장 단순한 합의다.

임계값 4종

단위 임계값 의미
파일 300~500줄 분리 검토 시작
함수 50줄 책임 분리 검토
중첩 3단계 조기 반환 / 헬퍼 분리
컴포넌트 책임 2개 이상 분리

이 숫자는 절대 진리 가 아니라 공용 트리거 다. “넘었으니 자동으로 쪼갠다”가 아니라 “넘었으니 쪼갤지 의논한다”.

컴포넌트 책임의 분리

프런트엔드에서 가장 자주 발생하는 패턴 — 한 컴포넌트가 다음 셋을 동시에 한다:

  1. 렌더 (UI)
  2. 데이터 페칭 (서버 통신)
  3. 전역 상태 변경

이 셋은 각자 다른 이유로 변한다. 하나가 바뀌면 다른 둘도 흔들린다.

분리 후:

Page                  ─ 데이터 페칭 + 라우팅 책임
└─ FeatureContainer   ─ 비즈니스 로직, 상태 조립
   └─ FeatureView     ─ 렌더, 입력만 (props만 받는 순수)
      └─ <Button/>    ─ 디자인 시스템 단위

테스트와 재사용성이 동시에 올라간다. 가장 위 두 계층은 AI에게 시키기 좋고, 가장 아래는 디자인 시스템에 들어간다.

백엔드 — 5계층 분리

계층 책임
Controller / Route 요청 수신, 입력 검증, 응답 포맷
Service / UseCase 비즈니스 로직
Repository / DAO 데이터 접근
Domain / Entity 핵심 도메인 규칙
DTO / Schema 입출력 계약

LLM에게 “이 엔드포인트 만들어 줘”라고만 시키면 5계층을 하나의 함수 로 합치기 쉽다. 명시적으로 5계층 구조를 알려 주면 결과가 달라진다.

SOLID — 외워야 할 5글자

원칙 한 줄
S Single Responsibility 한 클래스/함수는 한 가지 이유로만 변한다
O Open/Closed 확장에는 열려 있고, 수정에는 닫혀 있다
L Liskov Substitution 자식이 부모 자리에 들어가도 동작한다
I Interface Segregation 안 쓰는 메서드를 강요하지 않는다
D Dependency Inversion 추상에 의존하라, 구체에 의존하지 마라

LLM에게 “이 코드 SOLID 위반 있나?”라고 질문하기 전에, 먼저 어떤 변경이 자주 일어나는가 를 묻는 게 더 유용하다. SOLID는 변경에 반응하는 능력 을 다룬다.

DRY · KISS · YAGNI — 그러나 균형

  • DRY — 중복을 피하라. 단, 섣부른 추상화 가 더 나쁘다 (Rule of Three: 같은 패턴이 3번 보이면 그때 추상화)
  • KISS — 단순한 것을 우선 (Keep It Simple, Stupid)
  • YAGNI — 필요하지 않은 것은 만들지 마라 (You Aren’t Gonna Need It)

LLM은 과도한 추상화 를 사랑한다. 인터페이스, 추상 클래스, 팩토리. 명시적으로 막아 두자: “현재 문제보다 2단계 이상 앞선 추상화 금지”.

순환 의존성 금지

이건 협상 불가다. 모듈 A가 B에 의존하면, B는 A에 의존하지 않는다.

순환 의존성이 보이면:

  • 공통 추상 을 위로 끌어올린다 (third module C로 추출)
  • 또는 이벤트/콜백 으로 방향을 한쪽으로 만든다

LLM이 무심코 순환을 만든다면, 그건 경계가 잘못 그려졌다 는 신호다. 임시 패치 말고 구조를 본다.

단일 파일이 허용되는 경우

다음 셋이 다 만족되면 단일 파일이 합리적일 수 있다:

  • 사용자가 명시적으로 그렇게 요청
  • 100줄 미만의 단일 목적 스크립트
  • 빌드 도구 없이 그대로 실행 되어야 함

그 외엔 분리가 디폴트.

예시 — LazyClaude의 단일 HTML

LazyClaude는 배포 단위 가 단일 HTML이지만, 개발 시점 에는 논리적으로 여러 섹션으로 나뉜다 (탭별 모듈, 상태 관리, API 클라이언트, 디자인 토큰). 배포의 단일성개발의 모듈화 는 다른 차원의 문제다.

한 줄 요약

“쪼개세요”는 의견. 300줄 / 50줄 / 3단계 / 2책임 은 합의.


다음 편: AI 활용법 8 — 성능 예산과 측정 우선 최적화 이전 편: AI 활용법 6 — ADR