서비스 계층은 왜 인터페이스를 사용하는가?

Reading-Snail·2023년 12월 13일
1

💡 Qurious 팽이! 💡

목록 보기
1/14

두 질문의 정확한 의미를 이해하고 해답을 찾기 위해서는 먼저 어떤 조건에서라는 전제가 매우 중요해 보입니다. 토비의 스프링 3.1 vol.1의 후반부에 아키텍처에 대해 설명하는 부분에서 저는 나름의 해답을 찾은 것 같습니다. 데이터 중심 아키텍처와 오브젝트 중심 아키텍처 중 어떤 방식을 따른 것인가의 문제 인것 같습니다.

  • 데이터 중심 아키텍처의 경우 대부분의 비즈니스 로직이 SQL과 프로시저에서 이루어지기에 서비스 계층가 갖는 역할이 작은 것 같습니다. 그렇다보니 중복되는 코드도 없고, 테스트할 코드도 없으니 추상화 하는 것이 오히려 낭비인것 같습니다. (YAGNI: You Aint Gonna Need it)
  • 오브젝트 중심 아키텍처의 경우 비즈니스로직이 도메인 (계층) 또는 서비스 계층으로 옮겨옴에 따라 서비스 계층의 역할이 더 증가합니다. 중복되는 코드가 생기니 추상화하거나 AOP를 적용할 코드도 더 많을 것이고, 뿐만 아니라 테스팅도 SQL구문과 달리 더 적극적으로 가능하기에 여러 장점들을 가져가기 위해 인터페이스로 구현하기를 선호 하는 것 같습니다.
    또한 오브젝트 중심 아키텍처는 테스트가 매우 중요한 가치입니다. 서비스를 테스트하기 위해서는 인터페이스로 구현하였을 때 목 오브젝트와 같은 추가적인 기능들을 함께 사용할 수 있어 필수적입니다.

여러 포럼에서 사람들마다 입장이 다른 것도 그 사람들마다 익숙해져있는 아키텍처가 서로 달랐기 때문인 것 같습니다. 자신이 익숙한 방식으로 설명하게 되니 서로의 이게맞다 저게맞다 갈렸던 것 같습니다.

profile
책읽는 달팽이 || 공학도에서 개발자로! || 결국 과거의 흐름을 이해했을 때 지금의 것들을 통찰력있게 바라볼 수 있다고 믿습니다.

0개의 댓글

관련 채용 정보