페이스북은 MVC 모델이 확장이 어렵고 거대한 시스템에 어울리지 않는다고 결론을 내렸습니다.

 

그 이유는 새로운 기능 추가 시에 시스템의 복잡도가 기하급수적으로 증가하여

개발자는 기존 기능에 대한 영향을 주지 않을지에 대한 불안함을 주게됩니다.

모델(Model)과 뷰(view)의 수가 커지고 데이터의 흐름이 양방향으로 이루어질 수 있도록 

복잡도는 더욱 증가하고 디버깅 및 코드를 이해하기 어려워지므로 MVC는 작은 앱에 어울린다는 것입니다.

 

그래서 좀 더 예측 가능하도록 코드 구조화에 대한 목표로

데이터 흐름이 단방향인 시스템 아기텍처인 "Flux"를 제안합니다.

 

 

- Action : view에서 사용자가 취한 액션

- Store : APP의 모든 데이터를 저장하며 MVC의 Model을 담당합니다.

- Dispatcher : 모든 데이터를 관리하는 Controller 이며 Action이 시작될 때 어떻게 store가 업데이트 되어여 하는지 결정합니다.

- View : Store가 변경된 경우 같이 변경됩니다.

- 단방향 : 데이터는 단방향으로 흐르고 데이터 계층이 자기가 영향을 미치는 View 업데이트 완료 후 다음 작업을 진행합니다.

 

View에서 어떠한 Action이 발생하면 

Dispatcher는 해당 Action을 처리하기 위한 적절한 Store를 찾아서 전달한다. 

Store는 Dispatcher에서 들어온 요청을 처리하여 데이터가 변화되었음을 감지하면 해당 View를 재 렌더링 한다.




+ Recent posts