더북(TheBook)

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

 

일반적으로 싱글톤을 과용한 건 오용을 의미합니다. 싱글톤은 읽어들이는 비용이 적잖은, 그러면서도 자주 접근하는 데이터를 캐시하거나 전역 범위에서 접근할 수 있게 데이터를 공유한다든지, 소통의 단일 지점으로 쓰는(예: 로깅) 등 유의미한 경우에만 쓰세요.

불필요한 리소스를 생성하고 캐시하는 건 메모리, CPU, 서버 시동에 부정적인 영향을 끼치기 때문에 데이터 캐시 용도로 싱글톤을 사용할 때엔 잘 살피세요. 물론, 싱글톤은 쓰기 편하고 자바 EE 컨테이너에서 설정이 쉬운 건 사실입니다. 그럼에도 캐시를 진지하게 고려해야 한다면 잘 알려진 Ehcache(http://www.ehcache.org)나 아파치에서 만든 분산 캐시 시스템인 자바 캐싱 시스템(Java Caching System)(http://commons.apache.org/proper/commons-jcs/)을 알아보세요.

스레드-안전하지 않거나 라이선스 문제가 있는 백앤드 시스템에서는 싱글톤을 접근 통제 용도로 쓸 수 있습니다. 메서드에 LockType.WRITE를 붙이면 여러 스레드가 동시 접근할 경우 성능이나 라이선스가 문제 될지 모를 시스템에 차례대로 접근하게 조치할 수 있습니다.

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