피드로 돌아가기
Dev.toBackend
원문 읽기
Cobra CLI 의존성 제거를 통한 Library API 기반 아키텍처 전환
The Airgap Test: Refactoring a Cobra CLI into a Library API
AI 요약
Context
CLI 프레임워크인 Cobra가 비즈니스 로직 전반에 침투하여 Library로서의 재사용성이 상실된 상태. 11개 파일에서 25건의 Contamination이 발견되어 단위 테스트 및 외부 프로그램 연동 시 가짜 Cobra 객체를 생성해야 하는 비효율 발생.
Technical Solution
- RunE 클로저만을 Cobra Command 접점으로 제한하여 프레임워크 유출을 차단한 Adapter 패턴 적용
- Cobra 파라미터를 대체하는 전용 Input Struct를 정의하여 비즈니스 로직에 순수 데이터만 전달하는 구조 설계
- stdout/stderr 출력을 io.Writer 인터페이스로 추상화하여 터미널 의존성을 제거하고 테스트 가능성 확보
- 내부 로직을 internal/에서 pkg/로 이동시켜 외부 임포트가 가능한 공개 API 계약으로 전환
- Global 설정 객체의 전이적 임포트(Transitive Import) 문제를 해결하여 라이브러리 의존성 그래프 최적화
실천 포인트
1. 비즈니스 로직 내 프레임워크 전용 객체(예: *cobra.Command) 사용 여부 전수 조사
2. 프레임워크 진입점(Entry point)에서 데이터를 추출하여 순수 Go 타입의 Input Struct로 변환하는 단계 추가
3. 콘솔 출력 로직을 io.Writer 기반으로 리팩토링하여 출력 대상의 추상화 구현
4. 라이브러리 패키지가 프레임워크 패키지를 역으로 임포트하는 전이적 의존성 관계 확인