Flux는 기존의 MVC 모델의 단점을 보완하기 위해 페이스북에서 발표한 디자인 패턴인데, 사용자 입력을 기반으로 Action을 만들고 Action을 Dispatcher에 전달하여 Store(Model)의 데이터를 변경한 뒤 View에 반영하는 단방향의 흐름인 디자인 패턴입니다. 기존의 MVC 패턴 같은 경우에는 데이터가 양방향으로 흐를 수 있기 때문에 조금만 서비스가 복잡해질 수록 많은 의존성이 생길 수 있고 데이터의 흐름을 유추하기가 상당히 어려워집니다. Flux 패턴의 등장은 이런 맥락에서 예측 가능성을 높이기 위해 나왔다고 볼 수 있습니다. 각 요소들이 단방향 흐름에 따라 순서대로 역할을 수행하고, View에서 새로운 변경이 생기면 다시 같은 순서로 실행함으로서 흐름을 예측할 수 있게 된다는 장점이 있습니다.
꼬리 질문
MVC 패턴은 무엇인가요?
MVC는 Model, View, Controller의 약자입니다. Model에 데이터를 저장하고, Controller를 이용하여 Model의 데이터를 관리(CRUD)합니다. Model의 데이터가 변경되면 View로 전달되어 사용자에게 보여집니다. 또한 중요한 점은 사용자가 View를 통해 데이터를 입력하면 View 역시 Model을 업데이트할 수 있다는 점입니다. 즉 데이터가 양방향으로 흐를 수 있다는 것입니다.
Flux 패턴의 단점은 없나요?
단점이라고 한다면 모든 상태 변경을 엄격하게 관리하기 때문에 작은 규모에서도 과도한 상태 관리가 생길 수 있고, 단방향이기 때문에 코드의 복잡성이 다소 증가할 수 있습니다. 그리고 초기에는 Action, Dispatcher, Store 등의 개념을 이해하기 위한 약간의 러닝커브 또한 있을 수 있습니다.