- 의존성은 무료 기능처럼 보이지만, 실제로는 다양한 비용과 복잡성을 동반함
- 잘못된 의존성은 러닝커브, 갑작스런 인터페이스 변경, 배포·설치 문제 등 다양한 리스크를 초래함
- 대표 사례로 TigerBeetle은 보안·성능·운영 단순성을 위해 "제로 의존성" 정책을 지향함
- 저자는 의존성 평가 프레임워크(보급성, 안정성, 깊이, 사용성, 완전성) 를 제안함
- 좋은 의존성과 나쁜 의존성을 구별하는 비판적 사고와 의존성 선택 시 단기 생산성만이 아니라 전체 비용과 위험을 감안한 신중한 판단이 필수임
NIH(Not Invented Here)보다 잘못된 의존성이 더 큰 비용임
의존성의 단점과 숨겨진 비용
- 많은 개발자들이 의존성 추가를 "공짜 기능" 처럼 여기지만, 실제로는 다음과 같은 비용이 발생함
- 배우는 데 드는 시간과 복잡성
- 의존성 설치 자체가 어려운 경우도 빈번함
- 주요 버전 업그레이드 시 내 코드까지 크게 수정해야 하는 부담
- 의존성이 결국 배포/설치 환경에 반드시 들어가야 함 (컨테이너, 번들링 등 복잡성 유발)
- 잘못된 의존성 도입으로 인해 핵심 기능과 관계없는 복잡한 배포 구조가 만들어지기도 함
TigerBeetle의 제로 의존성 원칙
- Tigerbeetle은 Vanilla Zig 기반의 재무 데이터베이스로, 제로 의존성 정책을 채택함
- Zig 언어만으로 개발하며, Zig 툴체인 외의 외부 의존성을 두지 않음
- 의존성으로 인한 공급망 공격 위험, 성능 저하, 설치 시간 증가 등 문제를 피하려는 목적
- 인프라에 깊게 뿌리내린 소프트웨어일수록 의존성으로 인한 비용이 전체 스택에 증폭됨
- 표준화된 작은 툴박스 활용이 유지보수와 개발 능률에 유리함
- Zig 하나로 새로운 문제를 빠르게 다루고 복잡도를 줄이는 데 집중함
의존성 평가 프레임워크
- 모든 개발자가 완전한 무의존은 불가능함을 인정하면서도, 의존성은 신중히 평가해야 함을 강조함
- 저자는 다음 5가지 기준으로 의존성 평가를 제안함
- 보급성(Ubiquity): 대상 환경에 얼마나 흔하게 존재하는가? 별도 배포/설치 필요성 여부
- 안정성(Stability): 하위 호환성, API 변경 빈도, 지원 중단 등 이슈 발생 빈도
- 깊이(Depth): API 아래 숨어있는 실제 기능량, 직접 구현 시 대체 난이도
- 사용성(Ergonomics): API가 직관적/선언적이며 쓰기 쉬운지, 문서화 현황
- 완전성(Watertightness): 추상화가 얼마나 잘 동작하는가, 하부 기술을 얼마나 신경 쓰지 않아도 되는가
- 개발 커뮤니티는 주로 사용성만 논의하며 나머지 네 가지는 간과되는 경우가 많음
좋은 의존성 사례
-
POSIX 시스템 호출
- 보편성: Linux, Android, macOS, BSD 등 거의 모든 플랫폼에서 사용 가능함
- 안정성: 인터페이스 호환성이 매우 높고 변화 거의 없음
- 깊이: 단일 API로 수십만 줄의 커널 코드 감춤
- 사용성: 다소 전통적인 C 스타일이기는 하나 사용에 큰 무리는 없음
- 완결성: 대부분 문제 없으나 저장 장치의 데이터 영속 처리 등 세부 이슈 있음
-
ECMA-48 터미널 제어 코드
- 보편성: Windows의 cmd.exe를 제외하면 대부분의 터미널에서 지원함
- 안정성: 1991년 이후 변경 없음
- 깊이: 직접 표준을 만드는 것이 터무니없이 힘듦
- 사용성: Esc 캐릭터로 인한 난독성을 제외하면 무난함
- 완결성: 하드웨어 의존성 걱정이 매우 적음
-
웹 플랫폼 (Web API, HTML, JS, CSS 등)
- 보편성: 웹 브라우저가 전 세계 거의 모든 환경에 설치됨
- 안정성: 강력한 하위 호환성 정책
- 깊이: 자체 브라우저 제작은 현실적으로 불가능할 정도로 깊음
- 사용성: 약간의 복잡함 있으나 문서화와 개발 도구 우수함
- 완결성: 파일, 오디오, 비디오 등 특이 상황 제외하면 매우 완결성이 높음
결론
- 카피-앤-페이스트, 의존성 남용 대신 비판적 사고와 총체적 비용 분석이 필수임
- 의존성을 도입할 때는 모든 의존성의 비용과 이득을 비판적으로 평가하고,
전체 시스템의 잠재적 위험과 비용도 반드시 고려해 신중하게 선택하는 것이 장기적으로 훨씬 저렴하고 안전함