반응형
Notice
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 컴퓨터비전
- 컴퓨터공학
- 알고리즘
- 자료구조
- Yes
- springboot
- 빅데이터
- 웹개발
- 파이썬
- 보안
- 머신러닝
- 컴퓨터과학
- 디자인패턴
- 클라우드컴퓨팅
- 딥러닝
- 사이버보안
- 소프트웨어
- 네트워크
- I'm Sorry
- 자바스크립트
- 인공지능
- 데이터구조
- 프로그래밍언어
- 네트워크보안
- 데이터분석
- 프로그래밍
- 소프트웨어공학
- 버전관리
- 데이터베이스
- 데이터과학
Archives
- Today
- Total
스택큐힙리스트
Facade 패턴: 복잡한 서비스, 한 줄 인터페이스로 끝! 본문
반응형
왜 또 Facade인가?
서비스 레이어에 Repository가 열 댓 개씩 붙고, 컨트롤러가 여러 서비스·유틸을 직접 호출하기 시작하면 의존성 지옥이 열린다. Facade 패턴은 이런 상황을 ‘CS 상담원’처럼 중간에 세워 단순한 진입점 하나로 묶어 결합도를 확 줄인다.
1️⃣ Facade 패턴, 핵심 개념
- 정의 : 서브시스템의 여러 인터페이스를 하나로 통합해, 고수준 인터페이스만 노출하는 구조 패턴.
- 효과 : 클라이언트는 내부 구조를 몰라도 되고, 변경은 Facade 뒤에서만 일어나므로 유지보수 위험이 급감한다.
2️⃣ 언제 쓰면 딱 좋을까?
- 서브 시스템·Repository가 과다해 테스트, 모킹 비용이 폭증할 때
- 컨트롤러가 순환 참조를 유발할 만큼 많은 서비스를 부르는 상황
- 레거시·외부 라이브러리 API를 숨겨 계약만 안정적으로 유지하고 싶을 때
3️⃣ Spring Boot 실전 – 주문 처리 Facade 예시
@Service
@RequiredArgsConstructor
public class OrderFacade {
private final InventoryService inventory;
private final PaymentService payment;
private final ShippingService shipping;
@Transactional
public OrderReceipt placeOrder(OrderRequest req) {
inventory.reserve(req.items()); // 재고 차감
PaymentResult paid = payment.charge(req); // 결제
shipping.requestPickup(req, paid); // 배송
return new OrderReceipt(paid.getId(), "READY");
}
}
컨트롤러는 orderFacade.placeOrder() 한 줄이면 끝이다. 내부 서비스가 얼마나 바뀌든 Facade 시그니처만 지키면 상위 계층은 안전하다. 실무에서도 Repository 20여 개를 Facade로 정리하며 테스트 난이도를 대폭 낮춘 사례가 보고됐다.
4️⃣ 구현 꿀팁
- 도메인별 Facade 분리 : MemberFacade, PaymentFacade처럼 책임을 작게 나눠 거대 클래스화를 방지.
- 트랜잭션 경계는 Facade에 : 여러 서비스 호출을 하나의 트랜잭션으로 묶어 일관성을 확보한다.
- 테스트 더블 : Facade를 Mock 교체하면 하위 의존성을 일일이 Mock 하지 않아도 단위 테스트가 가능하다.
- 과도한 래핑 주의 : 모든 것을 Facade로 숨기면 또 다른 ‘블랙박스 괴물’이 된다. 변경 가능성이 높은 흐름만 추려 적용한다.
5️⃣ 장·단점 스냅샷
- 👍 결합도↓ / 응집도↑ : 클라이언트 코드가 얇고 읽기 쉬워진다.
- 👍 변경 파급 최소화 : 서브시스템 교체·API 통합이 수월.
- ⚠️ Facade 비대화 : 책임 분리가 안 되면 또 다른 레거시가 된다.
한 줄 요약
Facade 패턴은 “복잡함은 안으로 숨기고, 밖으론 단 하나의 깔끔한 문만 남기는” 가장 현실적인 의존성 다이어트다.
반응형
'개발' 카테고리의 다른 글
Facade vs Adapter: 언제 퍼사드, 언제 어댑터? (0) | 2025.07.18 |
---|---|
Facade 패턴 이름의 비밀: ‘건물 외관’에서 온 한 줄 인터페이스 (0) | 2025.07.18 |
데코레이터 패턴: 핵심 기능에 ‘슈퍼파워’를 덧입히는 법 (0) | 2025.07.18 |
Composite 패턴으로 백엔드 트리 구조 깔끔하게 다루기 (2) | 2025.07.18 |
Bridge 패턴: 기능·구현을 갈라놓는 비밀 통로 (0) | 2025.07.17 |
Comments