React 상태 관리의 근본, Redux의 토대가 되는 Flux 패턴에 대해 알아보고자 한다.
MVC, MVVM 등 다양한 아키텍쳐 패턴이 있지만,
프론트엔드 개발자, 그 중 React 개발자라면 Flux 정도는 당연히 알고가야하지 않나 싶다.
Singleton, Bridge
등크게 아키텍처 패턴과 디자인 패턴에 대해서만 따로 정리하겠다.
Flux 패턴은 Facebook이 만든 아키텍처로 Client-Side
WEB Application에 적용하기 위한 디자인 패턴이다.
기존의 MVC는 데이터가 양방향으로 흐르는 특성을 지닌다.
이때, 애플리케이션의 규모가 커진다면
다음처럼 Model
과 View
사이에 지나치게 복잡한 구조가 형성되고, 이는 Model
과 View
사이의 높은 의존성을 띄며 예측성의 하락을 야기한다.
여기서, Flux가 등장한다.
단방향 데이터 흐름을 통해 복잡성을 해소한다는 취지이다.
간단하게,
Action
을 만들고, Action
을 Dispatcher
에 전달해 Store
의 데이터를 변경 후, View
에 반영한다.Action
: 애플리케이션에서 일어나는 이벤트를 나타내는 객체
: ActionCreator
는 새로 발생한 Action의 type
+ 새로운 데이터 payload
를 함께 Dispatcher에게 전달한다.
Dispatcher
: Action을 받아 Store에 전달
: 모든 데이터 흐름을 관리하는 중앙 HUB
: 유일하게 Store의 데이터를 조작 가능
: Store 들 사이에 의존성이 있는 상황에서도 순서에 맞게 콜백 함수를 순차적으로 처리할 수 있게 관리
Store
: 애플리케이션의 모든 상태와 로직
: Store의 state
변경 → View에 전달
View
: Store에서 데이터를 가져옴과 동시에 자식 View로 데이터를 전달한다. (일종의 View-Controller
)
: React
의 Component
Redux는 애플리케이션의 상태(state
)를 하나의 store
에 중앙 집중적으로 관리하고, action
을 통해 state
를 변경한다.
→ 변경한 상태는 store
를 구독하고 있는 component
에 전달해 UI를 업데이트한다.
즉, 단방향 데이터 흐름을 통해 데이터의 일관성, 예측 가능성을 유지하고, 상태 변경의 불변성을 유지한다.
[참고자료]