HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
[New] 아만드팀
[New] 아만드팀
/
🔏
팀 스터디
/
🪵
클린 아키텍처
/
🔫
24장 부분적 경계
🔫

24장 부분적 경계

발표자
Date
Jul 20, 2022
Tags
5부
아키텍처
완벽한 경계의 비용문제마지막 단계를 건너뛰기 일차원 경계 퍼사드 결론
 

완벽한 경계의 비용문제

경계를 완벽하게 만드는 데는 비용이 많이 든다.
많은 경우에, 뛰어난 아키텍트라면 이러한 경계를 만드는 비용이 너무 크다고 판단하면서도, 한편으로는 나중에 필요할 수 도 있으므로 이러한 경계에 필요한 공간을 확보하기 원할 수 도 있다.
이를 부분적 경계로 구현해볼 수 있다.
 

마지막 단계를 건너뛰기

독립적으로 컴파일하고 배포할 수 있는 컴포넌트를 만들기 위한 작업은 모두 수행하되, 단일 컴포넌트 즉, 모노리틱한 구조로 그대로 두는 것이다.
부분적 경계를 만들려면 완벽한 경계를 만들때 만큼의 코드량과 사전 설계가 필요하지만 다수의 컴포넌트를 관리하는 배포 관점이나 추적을 할 필요가 없다.
하지만 FitNesse 이야기를 본다면 이 접근법가 위험할 수 있다고 한다.
 
 

일차원 경계

notion image
Client를 ServiceImpl로 부터 격리시키는 데 필요한 의존성 역전을 적용하였다. ( 전통적인 전략 패턴 ) → DIP가 아닌가…?
하지만 점섬 화살표에서 보듯이 비밀 통로가 생기는 일을 막을 방법이 없다.
→ 어떤 비밀 통로를 의미하는 걸까? 쌍방향 인터페이스는 Mapper 클래스와 동일한 의미라면 client에 있어야 하는 Dto를 ServiceImpl이 의존하는 것이 비밀 통로일까?
 

퍼사드

훨씬 더 단순한 경계는 퍼사드 패턴이며 의존성 역전까지 희생하게 된다.
경계의 경우 퍼사드 클래스로만 간단히 정의된다.
퍼사드 클래스에는 모든 서비스 클래스를 메서드 형태로 정의하고, 서비스 호출이 발생하면 해당 서비스 클래스로 호출을 전달한다.
퍼사드 클래스가 여러 서비스를 의존하게 되는 것이다.
Spring Service Layer에 대한 고찰
오늘은 주로 사용하던 Spring Framework의 Layer인 Controller, Service, Repository 중 Service Layer에 대해 고민했던걸 써보려고 한다. 이미 흔히 알고 있지만 간략하게 설명하자면 Client가 이용할 End Point Client의 요청을 어떻게 처리할지 정의하는곳 Client의 요청을 처리하고 어떻게 응답할지 결정하는 곳 DAO Layer 각종 다양한 Storage에 데이터를 조회, 저장, 수정, 삭제하기 위한 모든 객체들의 Layer이다.
Spring Service Layer에 대한 고찰
https://velog.io/@sumusb/Spring-Service-Layer%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B3%A0%EC%B0%B0
Spring Service Layer에 대한 고찰
 

결론

위의 세 전략은 각 나름의 비용과 장점을 지닌다. 고로, 각 접근법은 해당 경계가 실제로 구체화될 때 적절하게 사용하는 것이 좋아보인다.