NestJs에서 SRP
안녕하세요 Nest.js를 공부 중인 학생입니다. 이번에 공부한 내용들을 가지고 사이드 프로젝트를 하던 중 SRP와 관련한 의문이 생겨 질문남깁니다 ㅠㅠ nestjs를 공부할 때 컨트롤러는 유저와 서비스를 이어주는 역할이고 서비스는 비즈니스 로직을 담당하는 것이라고 배웠습니다. 그리고 컨트롤러는 너무 커지지 않도록 하는 것이 좋다고 들었습니다. 이를 고려해서 코드를 짜다보니 한 서비스 내에 너무 많은 로직이 몰리는 듯한 느낌이 들었습니다. 여러 모듈로 분리하고 필요한 서비스를 하나의 서비스 내에 몰아서 사용하다보니 의존성이 커지고 재사용성이 없다고 느껴졌습니다.. 그래서 SRP를 고려하여 코드를 짜려다 보니 하나의 서비스는 하나의 기능만을 담당해야 하고, 그렇게 구현한 서비스들을 컨트롤러에 주입하여 사용하는 것이 맞다고 하더군요.. 그렇게 코드를 짜다보니 이번엔 컨트롤러가 너무 비대해지고, 정작 비즈니스 로직을 담당한다던 서비스 쪽은 너무 작아져서 재사용하기도 애매하고 오히려 불필요하다고 느껴질 정도입니다. 사진 속 코드가 바로 그 예시입니다. 이메일 인증이 필요한 회원가입 기능을 구현하는 코드이고 플로우는 다음과 같습니다. 입력받은 이메일, 이름, 전화번호에 해당하는 유저가 존재하는지 확인 -> 없다면 해당 유저 정보를 DB에 저장 -> 이메일 인증에 사용할 token 생성 후 DB에 저장 -> 이 token을 입력받은 이메일로 발송 위 기능 구현을 위해 auth serrvice, users service, email service로 분리하였습니다. 하지만 보시다시피 컨트롤러에 오히려 로직이 몰려있는 느낌이고, 정작 auth service 내의 register 함수는 전달받은 token과 userId를 바탕으로 DB에 저장하는 로직만을 담당하게 됩니다.. 이렇게 짜는게 정말 맞는지 아니라면 피드백 부탁드립니다 ㅠㅠ