Spring/Spring Core

Web Application & Singleton

민철킹 2021. 3. 11. 16:48

Singleton pattern을 정보처리기사 시험을 준비하며 디자인 패턴의 생성패턴 중 하나로 알고 있었는데 이것은 객체 인스턴스가 오직 1개만 생성되야하는 경우에 사용하는 패턴이다.

 

예를 들어, 설정 파일같은 경우에는 객체가 여러 개 생성되면 설정 값이 변경될 위험이 생기므로 싱글톤을 사용해야한다. 싱글톤을 이용하게 되면 하나의 인스턴스를 메모리에 등록해서 여러 스레드가 동시에 해당 인스턴스를 공유하여 사용하게끔 할 수 있으므로, 요청이 많은 곳에서 사용하면 효율성이 높아지는 장점이 있다. (하지만 동시성 문제 고려해야함)

 

 


웹 애플리케이션과 싱글톤

  • 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 하게 된다.
  • 요청이 들어오면 AppConfig는 직접 객체를 만들어 반환시켜준다.

  • 클라이언트 B(다른고객)가 똑같은 요청을 해도 새로 객체를 만들어 반환해준다
  • 즉, 고객에 10번 요청하면 객체가 10개가 생성되는 구조이다.

 

진짜 매번 새로 생성되는지 테스트해보자!

객체의 참조값을 확인해보면 서로 다른 객체임을 알 수 있다. ==> 요청이 올때마다 새로 객체 생성

JVM메모리에 요청이 들어올 때 마다 객체가 생성되어 올라감 ==> 굉장한 메모리 낭비

요청의 수(고객의 수)가 많아질 수록 메모리의 낭비가 기하급수적으로 심해짐

 

해당 객체가 오직 1개만 생성되어, 이를 공유하도록 설계하면 해결할 수 있다. ==> Singleton Pattern

 

 

 

반응형