inflearn logo
강의

Course

Instructor

A developer's cheat sheet for adding Java/Spring tests

How to handle external linking

UserService, CertificationService 책임 분리 기준 질문

20

yhr050085115

20 asked

0

UserService 가 회원 생성이라는 유즈케이스를 담당하는데, 인증 url 생성이나 메일 발송 정책까지 함께 가지고 있기 때문에 책임이 섞여있다고 판단하여 CertificationService 를 분리하신걸까요?

 

단순히 외부 의존성 분리하려는 목적보다는

인증메일 정책 이라는 별도의 변경 이유를 분리하려는 의도가 맞는지 궁금합니다

spring tdd jpa 소프트웨어-테스트 unittest

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다.

바나나님께서 질문하신 내용은 서비스의 책임을 명확히 하고, 변경의 이유를 분리하는 아키텍처 설계의 중요한 부분입니다. UserService와 CertificationService의 책임 분리는 단순히 외부 의존성을 분리하려는 것이 아니라, 변경 이유를 명확히 하기 위해서입니다.

UserService는 회원 생성과 관련된 주된 비즈니스 로직을 처리하고, CertificationService는 인증과 관련된 로직을 중심으로 하여, 두 서비스의 목적과 책임을 명확히 구분할 수 있습니다. 이렇게 하면 각각의 서비스는 자신의 역할에 집중하여 보다 강한 응집력과 낮은 결합도를 유지할 수 있게 됩니다.

이를 통해, 예를 들어 인증 정책 변경이 필요할 때, CertificationService만 수정하면 되므로 시스템 전체에 걸쳐 불필요한 영향을 줄일 수 있습니다. 이러한 분리는 좋은 객체 지향 설계 원칙인 단일 책임 원칙(Single Responsibility Principle)을 준수하게 해주며, 응집력 있는 설계를 가져올 수 있습니다.

관련하여 더 확인하고 싶으시다면, “서비스 레이어와 책임 분리” 게시물을 참고하셔서 아키텍처 상의 서비스 분리에 관한 다양한 의견을 확인하실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

service.port 패키지로 이동한 UserRepository가 infrastructure에 있는 UserEntity에 의존

0

56

1

Service 소형 테스트 질문

0

76

1

조회 시 엔티티를 조회하는 것이 아닌QueryDSL을 많이 사용 시 Dto는 어떻게 하나요?

0

114

1

controller 의 port 패키지의 service 인터페이스 사용

0

70

1

빌드 문제

0

90

1

빌드 안 되시는 분들 참고

0

101

1

update에서 Repository.save

0

103

1

최종 완성된 코드를 받아 볼 수 있을까요?

0

153

1

의존성 역전으로 해결한 외부의존성?

0

160

1

좋은 설계

0

176

1

Controller에 테스트

0

137

1

JPA가 아닌 Mapper 아키텍처 기반 테스트 코드 작성

0

238

0

영속성 객체 구분으로 인한 JPA와 Querydsl의 Projection 사용

0

221

1

인프라계층 구현체와 테스트 구현체에 대한 질문

0

220

1

실습 코드 커밋

0

369

1

UserEntity 메서드

0

291

2

CertificationServiceTest에서 MailSender 인터페이스가 아닌 FakeMailSender를 이용하는 것

0

215

1

레이어드 아키텍처 개발에 대하여

0

229

1

BDDMockito의 when을 사용한 코드가 given 절에 있는 이유가 궁금합니다.

0

222

1

테스트에서 주입과 생성

0

197

1

프로젝트 코드는 제공해주시지 않는건가요?

0

377

2

개선된 아키텍처의 구조

0

274

1

서비스 레이어의 단위 테스트 범위 고민

0

184

1

도메인 객체 / entity 객체 / requset, response 객체 간 mapping 시 mapper 사용

1

338

1