더북(TheBook)

3.4 언제, 어디에 사용하나?

 

퍼사드 패턴은 복잡한(비즈니스) 로직을 상위 레벨에서 캡슐화하고 접근 지점을 명확하게 단일화하여 API를 통해서만 접근할 수 있게 유도합니다.

다른 개발자에게 여러분의 인터페이스나 API를 제공할 경우 로직이 얼마나 복잡한지 앞으로 변경될 가능성은 없는지 먼저 잘 따져보세요. 바뀔지 모를 부분은 감추고 깔끔한 API를 제공하는 일이 퍼사드 패턴의 주특기입니다.

쓸데없이 메서드를 퍼사드로 감싸는 건 좋지 않은 습관이고 불필요한 꺼풀만 늘릴 뿐입니다. 섣부르게 캡슐화하면 호출 횟수만 증가하고 별로 가치 없는 레이어만 늘어날지 모릅니다.

세션 퍼사드를 구현할 때엔 유스 케이스에서 상태값을 관리할 필요가 있는지 결정하세요. 메서드 한 개만 호출해서 원하는 서비스를 받는 비대화형(nonconversational) 케이스라라면 굳이 메서드 호출 중간에 대화 상태를 담아둘 필요가 없습니다. 무상태성 세션 빈으로 구현하는 게 맞겠죠.

한편, 메서드를 호출하는 도중 대화 상태를 이어가야 하면 상태성 세션 빈으로 퍼사드를 구현해야 맞습니다.

상태성 세션 퍼사드는 클라이언트가 일부러 대화를 끝내거나 타임아웃이 나기 전에는 서버 리소스를 붙들고 있으므로 주의해야 합니다. 상태성 세션 퍼사드가 클라이언트에 매여 있는 동안은 아무 일도 못 하고 상태값만 유지하면서 리소스를 낭비하니까요. 무상태성 세션 퍼사드와 달리 상태성 세션 퍼사드는 요청할 때마다 클라이언트 세션 상태를 유지한 채 무상태성 퍼사드의 새 인스턴스를 생성하기 때문에 재사용도 안 되고 다른 클라이언트와 공유도 못 합니다.

따라서 퍼사드 패턴은 조심해서 사용하세요. 유스 케이스를 면밀히 검토한 후 최적의 결정을 내리기 바랍니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.