0. 들어가기 전에지난 글에서는 Spring Boot가 왜 등장했고, 어떤 철학으로 스프링 프로젝트의 기본값을 정리했는지를 중심으로 정리해보았다. 그런데 막상 프로젝트를 시작하려고 하면, Boot의 자동 설정이 “무슨 일을 해주는지”보다 더 먼저 다가오는 고민이 있다. 바로 어디에 코드를 두어야 하는가, 그리고 어디까지가 한 요청의 책임인가 같은 질문이다. 컨트롤러에 코드를 쓰기 시작하면 가장 빠르게 결과는 나오지만, 그만큼 빠르게 비대해진다. 서비스는 비즈니스 로직을 모으는 곳이라고들 하지만, 막상 “비즈니스 로직”이 무엇인지 정의가 흐려지면 다시 컨트롤러로 되돌아간다. 저장소(Repository/DAO)는 DB만 보면 된다고 생각하지만, 트랜잭션과 예외가 섞이는 순간 경계는 다시 흔들린다. 그래서 이..