인프런 커뮤니티 질문&답변

우럭아왜우럭님의 프로필 이미지
우럭아왜우럭

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

회원 서비스 개발

서비스 계층 질문

작성

·

174

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
안녕하세요. 서비스 계층에 대해 질문이 있습니다.

강의 내용에선 서비스는 비즈니스 로직을 처리하는 역할이라고 해 주셨고, 저도 계속 스프링의 전체적인 흐름은 컨트롤러 -> 서비스 -> DB접근 계층으로 설계해놓고 가는걸로 알고 있었습니다.

[상황]

최근 취업한 회사에서 제가 맡게되는 시스템의 코드도 강의 내용처럼 컨트롤러 -> 서비스 -> DB접근 계층으로 설계되어있을줄 알았는데, 코드를 보니 흐름의 설계가 컨트롤러 -> 서비스 -> 프로세스 -> DAO 더라구요.
(시스템은 10년이상 되었고, 전자정부1 버전인 것 같습니다.)
서비스는 단순히 프로세스 클래스의 메서드를 호출하고, 그 값을 바로 리턴만 해주는 형식으로 작성되어 있습니다.
예시)
@Service("XXXService")
public class XXXServiceImpl implements XXXService {
    
    @Resource("XXXProcess");
    private XXXProcess xxxProcess; // 구현체인 XXXProcessImpl 을 주입받는 인터페이스 타입 입니다.

    public List method() {
        return xxxProcess.method();
    }

}
위처럼 작성되어 있던 것 같아요.
그래서 실질적인 비즈니스 로직은 프로세스 클래스에 있습니다.
어노테이션은 Service, Process 클래스 모두 @Service 라고 붙어있었습니다.

[궁금한 점]

왜 서비스에 로직을 넣지 않고 단순히 호출만 하는 계층으로 만들고, 굳이 프로세스 라는것을 하나 더 만들어서 여기에 비즈니스 로직을 작성하는 식으로 설계를 한 것인지 궁금해서 선배님께 물어봤는데, 오래전 시스템 만들어질때 설계하신 분이 아니다보니 확실한 답을 못 주시는 것 같더라구요.
 
강사님께서는 SI부터 현재 서비스기업 기술이사까지의 경험이 있으신 분이기에 시원한 답을 주실 것 같아서 질문 드립니다...
질문이 계층에 대해 설명해주신 강의내용과 관련된 질문이라고 판단해서 올리지만, 혹시 관련없는 질문이라면 죄송합니다.

답변 1

1

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 우럭아왜우럭님

저도 정확한 의도는 잘 모르겠는데요. 아마 이런 경우는 있을 수 있을 것 같아요.

AService, BService, CService가 있는데요. 이러한 서비스들도 공통으로 사용하는 비즈니스 로직이 있는 것이지요. 그래서 그것을 Process라고 이름을 만들고 호출했을 수는 있을 것 같아요.

감사합니다.

감사합니다 :)

우럭아왜우럭님의 프로필 이미지
우럭아왜우럭

작성한 질문수

질문하기