아래 내용은 Yak shaving으로 인한 문제점을 반성하며 정리한 회고이다.
cache-manager-redis-store 라이브러리가 노후화되어 Keyv로 교체하는 과정에서 여러 이슈가 발생했다. Nest.js v11에서는 Keyv가 기본 캐시 저장소로 채택되었지만, Keyv는 keys
인터페이스를 지원하지 않아 기존에 사용하던 패턴 매칭 기반의 캐시 삭제 로직을 대체할 수 없었다. 여러 시도 끝에 결국 node-redis 라이브러리를 설치하여 직접 캐시 로직을 감싸는 구조로 전환하게 되었다.
기존에는 TTL 기능이 있었기에 이를 재구현하기 위해 node-redis 기반의 추상화된 인터페이스를 작성하게 되었고, 해당 로직은 테스트 코드로 보완되었다. AI 도구를 활용했음에도 많은 시간이 소요되었고, 결과적으로 드는 생각은 "정말로 이렇게까지 해야 했을까?"였다. 해당 로직은 기존 코드에 새로운 의존성을 도입했으며, 유지보수성과 장애 가능성을 높일 수 있다는 점에서 회의적이었다.
이 경험을 통해 얻은 가장 큰 교훈은 문제를 해결할 때 항상 ‘가장 심플한 방법은 무엇인가’를 자문해야 한다는 것이다. 우리는 기술적인 완성도나 외부 과시보다는, 조직 전체에 도움이 되는 진짜 문제를 해결해야 한다. 복잡한 기술 스택이나 과도한 추상화는 때로는 본질에서 벗어나는 선택일 수 있다.
나는 다음과 같은 기준을 통해 Yak shaving을 피하고자 한다:
가장 큰 문제는, 해결해야 하는 일을 미루기 위해 의식적 혹은 무의식적으로 부가적인 일을 처리하고 있다는 것이다.