
Redux 라는 전역 상태 관리 라이브러리는 flux 패턴을 기반으로 만들어졌다.
그렇다면 flux 패턴이란 무엇일까?
Flux는 Facebook에서 애플리케이션의 데이터 흐름을 관리하기 위해 고안한 단방향 데이터 흐름(One-way Data Flow) 아키텍처 패턴이다.
MVC 패턴에서 발생할 수 있는 복잡한 데이터 흐름 문제를 해결하기 위해 설계되었다.

Action (액션)
Dispatcher (디스패처)
Store (스토어)
View (뷰)
Flux의 데이터 흐름은 항상 단방향으로 진행된다.
사용자 입력(View)
사용자가 버튼을 클릭하거나, 폼을 제출하면 액션(Action)이 생성됨.
액션(Action)
생성된 액션이 디스패처(Dispatcher)로 전달.
디스패처(Dispatcher)
디스패처는 이 액션을 스토어(Store)에 전달.
스토어(Store)
스토어에서 해당 액션을 통해 상태를 업데이트하고 뷰에 상태 변경을 알린다.
뷰(View)
뷰(View)는 새로운 상태를 렌더링.
단방향 데이터 흐름
데이터를 항상 액션 → 디스패처 → 스토어 → 뷰 순으로 이동한다. 이로 인해 데이터 흐름이 예측 가능하고 디버깅이 용이하다.
중앙 집중식 디스패처
모든 액션은 디스패처를 통해 전달되므로, 데이터의 흐름을 한곳에서 관리할 수 있다.
상태 관리 분리
상태(state)는 스토어에서만 관리되고, 뷰(View)는 상태를 직접 수정할 수 없다.
다중 스토어
애플리케이션에서 서로 다른 상태를 관리하기 위해 여러 개의 스토어를 둘 수 있다.
예측 가능성
데이터 흐름이 단방향으로 진행되기 때문에 상태 변화를 쉽게 추적할 수 있다.
유지보수 용이
데이터와 로직이 명확하게 분리되어 있어 코드 유지보수가 쉽다.
테스트 용이성
상태 변경 로직이 스토어에 집중되어 있어 테스트하기가 쉽다.
확장성
복잡한 애플리케이션에서도 확장 가능하며, 모듈화된 구조를 유지할 수 있다.