코드를 역할별로 분리하면 AI 응답 속도가 빨라지고 에러 원인이 투명해져서, 바이브 코딩 효율이 극적으로 개선된다. 1,400줄짜리 파일을 288줄로 80% 줄인 이야기다.

스파게티 코드를 어떻게 박멸할 수 있을까?

2부에서 끈질기게 괴롭혔던 기다림의 주범, '스파게티 코드' 박멸 작전에 돌입했다.

이 과정을 전문 용어로는 '비즈니스 로직 분리'나 '리팩토링'이라고 한다.

아무것도 모르지만, 나에겐 AI가 있으니까 또 질문한다.

이 코드를 어떻게 관리하면 효율적으로 관리할 수 있는지 제안해 줘.

그랬더니 종목을 고르고, 위험을 관리하고, 은행과 통신하고, 진짜로 주식을 샀다 파는 모든 과정을 분리하는 것을 제안해 줬다.

서비스 계층 분리와 Orchestrator 패턴이란?

TradingExecutor의 1,400줄을 3개의 전문 서비스로 분리

SignalProcessor: 신호 생성 전담

OrderProcessor: 주문 실행 전담

RiskService: 리스크 관리(손절/익절/MDD) 전담

TradingExecutor는 이들 서비스를 조율하는 Orchestrator 역할로 변경

Application Services 레이어 도입

비즈니스 흐름 오케스트레이션을 담당하는 상위 서비스 계층

TradingApplicationService: 스크리닝 → 신호 생성 → 주문 실행 전체 흐름

ValuationApplicationService: 재무 수집 → 내재가치 계산 → 리밸런싱 제안

더 전문적인 말로 답변을 줬지만 결국 위와 같이 진행하는 이유는 다음과 같다.

**단일 책임 원칙 **: 각 서비스가 하나의 책임만 가지면 테스트와 유지 보수가 쉬워짐

**테스트 가능성 **: Port 인터페이스 덕분에 인프라 없이 Mock으로 단위 테스트 가능

변경 용이성 : 인프라 변경(예: KIS API → 다른 증권사 API)이 도메인 코드에 영향 없음

**코드 복잡도 감소 **: TradingExecutor 1,400줄 → Orchestrator 288줄 (약 80% 감소)


역할을 나누고 코드를 레고 블록처럼 쪼개어 놓으니 AI 답변도 간결해지고 아래의 효과를 볼 수 있었다.

에러의 원인이 투명해짐

무한 대기 시간 끝

AI가 읽고 파악해야 할 파일 내용 자체가 1/5 수준으로 가벼워졌기 때문에, 지시를 내리면 빠르게 수정함

부품 교체의 자유로움

이건 AI가 한다고 하길래 하라고 했지만... 여하튼 한국투자증권에서 갑자기 키움증권으로 쉽게 변경할 수 있는 구조가 되었다. AI는 이걸 'Hexagonal 아키텍처에 Port를 도입했다'라며 설명해 줬지만... 그런가 보다 했다.

여러 AI들을 돌려쓰며 "계획 세우고 -> 리뷰하고 -> 코딩하고 -> 검증하는" 반복적인 여정 끝 1부에서 공유했던 대시보드 화면까지 구현했다.

https://www.youtube.com/@programgarden

프로그램 동산

내용을 참고해서, YAML 형식으로 다양한 전략을 조합해서 쉽게 종목 스크리닝을 할 수 있도록 내용을 반영했다.

아직까지 실전 투자까지는 이어지지 못했다. 정작 투자 공부를 해야 하는데 하지를 못했다.

지금 주식 시장을 보면 공부보다는 타이밍인데.... 개발하지 않고 투자부터 했으면 돈 벌었을 것 같은데...

아마 위의 구현된 내용은 많이 부실할 것이다. 하지만 시간은 있으니까...

바이브 코딩은 계속된다.

불러오는 중...