Loopers

TDD, 꼭 해야 해?

그zi운아이 2025. 7. 17. 01:57

부정에서 시작한 Loopers 1주차 회고

😵 도입 – ‘이게 맞나?’ 싶지만 해보기로 했다

사실 나는 TDD에 부정적인 시선을 갖고 있다.
할 줄은 안다. 하지만 “굳이 그걸 꼭 해야 하냐?”는 질문엔 여전히 확신이 없다.
테스트 코드 짜는 데 들어가는 시간 대비 가성비가 너무 떨어진다고 생각했기 때문이다.

이번 루퍼스 1주차 과제를 하면서도
“왜 이걸 해야 하지?”라는 생각은 계속 들었다.

하지만 _이유도 모르고 안 하는 것보단, 해보고 판단하자_는 마음으로 시작했다.
부정적이었지만, 그래서 더 해보려 했다.


❓ 시작 전, 내가 가졌던 고민들

  • 테스트 코드를 잘 짤 수 있을까?
  • 오랜만에 짜는 테스트, 내가 짜는 방식이 맞는 걸까?
  • 객체는 어떻게 설계해야 하지?

‘테스트를 어떻게 잘 짤까?’보다는
언제, 어떤 흐름으로 짜야 하지?”, “테스트 먼저? 구현 먼저?
이런 고민이 더 컸다.


🧪 테스트 흐름에서 부딪힌 현실

나는 평소처럼
Service → Repository → Controller 순서로 개발하는 방식에 익숙했다.
그런데 TDD는 거꾸로 간다. 테스트부터 시작한다.

이걸 기능 단위로 어떻게 커밋하지?
테스트 Green 만들려다 구조가 엉키는 건 아닌가?
계속 충돌이 생겼다.

예를 들어,

  • 테스트 → 구현 → Repository까지 쭉 만들다 보면
  • 한 커밋이 너무 많은 책임을 가지게 됐다.
  • save, find 같은 메서드를 빠르게 쓰기 위해 일단 뭉쳐 놓았다가,
    나중에 다시 분리 리팩터링하느라 시간이 두 배로 들기도 했다.

📦 구조 설계, 끝없는 고민들

1. 패키지 구조

처음에는 모든 클래스를 한 패키지에 모아 두었다.
“요구사항도 단순하니까 괜찮겠지” 싶었지만, 금방 한계를 느꼈다.

“나중에 확장되면 이 구조로 유지보수가 가능할까?”
→ 결국, 패키지를 책임 단위로 나누기 시작했다.

이 과정에서 객체를 어디까지 쪼개야 하는지,
어떤 수준까지 분리하는 게 과한지 아닌지 직접 실험해 보며 기준을 잡아갔다.
작은 도메인이라도 책임과 흐름을 명확히 나누는 것이
확장성과 테스트 용이성 측면에서 큰 차이를 만든다는 걸 체감했다.

2. Facade가 필요할까?

처음엔 요구사항이 단순해서 굳이 Facde까지 도입해야 하나 싶었다.

로직이 복잡하거나 의존관계가 얽힌 건 아니었지만...

앞으로의 확장 가능성을 고려해 흐름을 담당할 Facade를 먼저 정의 해두었고 
무엇보다 Facade 중간 인터페이스를 통해 의존성 역전이 가능하다는 점이 크게 와닿았다.

3. 도메인 객체 vs Entity

JPA Entity를 도메인 모델에 넣고 싶지 않았다.
기술에 종속되면 유지보수가 어렵다는 생각 때문.

도전해보자.
도메인을 순수하게 유지해보자.

4. Validation 위치

  • Entity에 validation 넣는 건 싫었다.
  • DB에 맡기고, 예외는 DB가 던지게 했다.
  • 영속성 객체는 원자값만 조립,
    비즈니스 예외는 도메인 레벨에서 처리.

5. 연관관계 (FK)

  • FK는 걸지 않았다.
  • FK 관리가 오히려 양쪽 다 복잡하게 만든다고 생각했다.
  • 대신 인덱스를 활용하고,
    개발자가 책임지고 관리하는 방향을 택했다.

⏳ 리팩토링은 못 했지만

시간은 부족했다. 설계도, 고민도 많이 했지만 깊이 파고들진 못했다.

  • 강의도 보고
  • 요구사항도 다시 정리하고
  • 도메인도 새로 짜봤지만

벌써 수요일,
제출을 위해 리팩토링은 포기했다.


💡 그리고 느낀 점

하지만 이건 적응 주차였다.
퇴근 후 매일 5~6시간씩 이렇게 몰입해서 개발해본 게 정말 오랜만이었다.

진짜 오랜만에 “개발이 재밌다”는 감정을 느꼈다.
멘토님의 라이브 코딩을 보며
나도 저 자리에 서보고 싶다”는 생각도 들었다.


🚀 다음을 향해서

이번 주는 TDD가 왜 어렵고, 왜 해보기 전엔 모르는지
몸으로 느낀 한 주였다. TDD가 정답이라고 말할 수는 없다.
하지만 한 가지는 확실하다.

해보지 않고 판단하지 말자.
그리고 재밌게 고민하자.

이게 바로 Loopers 1주차에서 내가 얻은 가장 큰 수확이다.