팀 프로젝트 경험
팀 프로젝트에서 Spring MVC 기반 커뮤니티 서비스를 만들었습니다. 사용자 수가 늘어날 것을 가정하고 Controller-Service-Repository 계층을 명확히 분리해서 설계했습니다. 초반에 Controller에 비즈니스 로직이 섞이기 시작했는데, 테스트 코드를 짜면서 의존성이 얽혀 있다는 걸 발견하고 리팩토링했습니다. 이후부터는 Service 계층에서만 트랜잭션을 처리하는 원칙을 팀 내에서 합의했고, 코드 리뷰에서도 그 기준으로 피드백을 줬습니다. 규모가 커질수록 계층 경계를 지키는 게 얼마나 중요한지를 직접 체감한 프로젝트였습니다.
계층 경계를 지키지 않으면 테스트가 먼저 어려워진다는 걸 직접 경험했고, 코드 구조가 테스트 가능성을 결정한다는 원칙이 이 프로젝트에서 자리 잡았습니다.