3.2 KiB
3.2 KiB
category, tags, title, description, last_updated
| category | tags | title | description | last_updated | |||
|---|---|---|---|---|---|---|---|
| Other |
|
Global Singleton | 글로벌 싱글톤(Global Singleton)은 애플리케이션 내에서 공유되는 상태나 기능을 개별 컴포넌트 외부로 추출하여 단일 객체 인스턴스로 관리하는 디자인 패턴이다 [1, 2]. | 2026-05-04 |
Global Singleton
📌 Brief Summary
글로벌 싱글톤(Global Singleton)은 애플리케이션 내에서 공유되는 상태나 기능을 개별 컴포넌트 외부로 추출하여 단일 객체 인스턴스로 관리하는 디자인 패턴이다 [1, 2]. 이 패턴을 활용하면 컴포넌트 계층 구조와 무관하게 어디서든 해당 상태에 접근하거나 관련 액션을 트리거할 수 있다 [1]. 주로 프론트엔드의 전역 상태 관리나 백엔드의 공통 인프라스트럭처(예: 로거) 인스턴스를 유지하는 데 활용된다 [1, 3].
📖 Core Content
- 상태 추출 및 중앙 집중화: 여러 컴포넌트가 동일한 상태에 의존하거나 이를 변경해야 할 때, 글로벌 싱글톤은 상태를 최상위로 끌어올릴 때 발생하는 'Prop Drilling' 문제를 해결하는 직관적인 대안을 제공한다 [1, 4]. 상태를 글로벌 싱글톤으로 추출하면 전체 컴포넌트 트리가 하나의 큰 뷰(View)처럼 기능하게 되며, 상태와 상태를 변경하는 로직이 한 곳에 집중된 단일 진실 공급원(Single Source of Truth)을 확보할 수 있다 [1, 5].
- 공통 인프라스트럭처의 공유 인스턴스: 백엔드(예: C#) 환경에서 싱글톤이나 정적 로거 팩토리는 로깅과 같은 횡단 관심사(Cross-Cutting Concerns)의 공유 인스턴스를 유지하는 데 매우 좋은 접근법이다 [3]. 이를 통해 인프라 구성 요소를 최대한 얇게 유지하면서도 애플리케이션 전역에서 재사용할 수 있다 [3].
- 표준화된 개발 소통 제공: 단일 객체의 사용을 상정하는 싱글톤 패턴은 개발자들 사이에서 해당 코드가 어떻게 동작하는지 쉽게 의사소통하고 예측할 수 있도록 돕는 공통의 기반 기술이 된다 [2].
⚖️ Trade-offs & Caveats
- 서버 사이드 렌더링(SSR) 환경에서의 데이터 유출 취약성: SSR을 지원하는 환경에서 상태를 전역 싱글톤으로 관리할 경우, 여러 사용자의 요청(Request) 간에 동일한 스토어가 공유되어 데이터 유출과 같은 치명적인 문제가 발생할 수 있다 [6, 7]. 이를 해결하기 위해 Vue의 Pinia와 같은 현대적인 상태 관리 라이브러리는 전역 싱글톤을 피하고 각 요청마다 새로운 스토어 인스턴스를 생성하는 방식을 취한다 [7].
- 임의적 상태 변이(Arbitrary Mutations)의 위험: 글로벌 싱글톤 상태를 컴포넌트에서 자유롭게 수정할 수 있도록 방치하면 코드가 엉키고 장기적인 유지보수성이 크게 저하된다 [8]. 이를 방지하려면 상태 변이 로직 역시 중앙 집중화해야 하며, 의도를 명확히 표현하는 전용 메서드를 통해서만 상태를 제어하도록 제한해야 한다 [8].
Last updated: 2026-05-03