개발자
flux 아키텍쳐에 대해 공부를 하던 중 제가 이해한 바가 맞는지 궁금하게 되어 질문드립니다. 처음 서치를 시작했을 때는 각 장단점을 얘기하였을 때 mvc 패턴 : 양방향 데이터 플로우로 인해 큰 규모의 프로젝트에서는 다수의 model, view 가 뒤섞여 어디서 데이터가 수정되었는지 추적이 어렵고 의도하지 않은 사이드 이펙트가 발생할 수 있다. flux 패턴 : 단방향 데이터 플로우를 강제하여 상호작용으로 인해 어떤 데이터가 수정되고 그로 인해 영향을 받는 view 를 파악하기가 쉽다. 는 것이 제가 얻은 중론이였습니다. 하지만 mvc 패턴 또한 view 상호작용 > controller > model 수정 > view 데이터 반영 으로 단방향 플로우를 가지는 것이 아닌가? 라는 생각이 들었습니다. 추가적인 서치 후 최근 mvc 패턴은 초기 아키텍쳐를 그대로 반영하지 않으며, 그 이름으로 불리는 mvp, mvvm 패턴을 뜻하는 경향이 있다. 해당 파생 아키텍쳐에서는 model < - > view 사이 양방향 데이터 플로우가 만들어져 규모가 커질수록 복잡도가 증가하게 되었다는 정보를 알게되었습니다. flux 패턴은 오히려 초기 mvc 패턴의 단방향 플로우를 강제하여 데이터 추적 및 이해를 쉽게하였다고 보는 것이 맞는 것인지 앞서 말한 것들이 제가 제대로 이해한 것인지 선배님들이 답변을 주시면 정말 감사하겠습니다.
답변 2
인기 답변
안녕하세요! 제가 아는 선에서 답변드립니다 :) (1) -------------- mvc 패턴 : 양방향 데이터 플로우로 인해 큰 규모의 프로젝트에서는 다수의 model, view 가 뒤섞여 어디서 데이터가 수정되었는지 추적이 어렵고 의도하지 않은 사이드 이펙트가 발생할 수 있다. flux 패턴 : 단방향 데이터 플로우를 강제하여 상호작용으로 인해 어떤 데이터가 수정되고 그로 인해 영향을 받는 view 를 파악하기가 쉽다. ------------- (1) 답변: 이 부분은 맞습니다. (2) ------------- 하지만 mvc 패턴 또한 view 상호작용 > controller > model 수정 > view 데이터 반영 으로 단방향 플로우를 가지는 것이 아닌가? 라는 생각이 들었습니다. ------------- (2) 답변: 초기의 MVC 패턴은 View에서 직접 Model에 message를 보내서 변경할 수 있었습니다. 문서에서는 양방향이라는 용어는 사용하지 않았으나 구조상으로 양방향입니다. 최근의 MVC 패턴은 위에서 설명한 것 처럼 단방향 플로우입니다. (3) ------------- 최근 mvc 패턴은 초기 아키텍쳐를 그대로 반영하지 않으며, 그 이름으로 불리는 mvp, mvvm 패턴을 뜻하는 경향이 있다. 해당 파생 아키텍쳐에서는 model < - > view 사이 양방향 데이터 플로우가 만들어져 규모가 커질수록 복잡도가 증가하게 되었다는 정보를 알게되었습니다. ------------- (3) 답변 - MVVM은 2005년 MS 사에서 WPF 언어에 적용한 패턴이고, MVP는 2011년 Taligent 사에서 C++, Java에 적용한 패턴입니다. - MVVM, MVP 패턴은 MVC를 참조했지만 각 패턴의 개념들은 다른 역할과 책임을 부여했기 때문에 패턴을 이해하지 못한 사람들의 생각으로 보입니다. - 양방향을 적용한 것은 MVVM이고, ViewModel에 양방향을 적용해서 MVC의 코드를 획기적으로 감소 시켜서 화두가 됐었습니다. (4) ------------- flux 패턴은 오히려 초기 mvc 패턴의 단방향 플로우를 강제하여 데이터 추적 및 이해를 쉽게하였다고 보는 것이 맞는 것인지 ------------- (4) 답변: 대체로 이해하신 것 같습니다만 flux를 정확히 이해하려면 mvc 패턴을 비교하기 보다 flux 자체로 이해하는 게 더 쉽습니다! 초기의 MVC 패턴을 단방향 플로우로 구현한 것이 최근의 MVC 패턴이라 혼란의 여지가 있습니다. (최근의 MVC는 View에서 Controller를 통해 Model을 변경 할 수 있음)
세혁
작성자
삼성 청년 SW 아카데미 웹 개발 • 2024년 02월 18일
친절한 답변 감사드립니다! 항상 비교하는 방식으로 공부하였는데 말씀대로 대상 자체를 이해하는 공부방법을 시도해봐야겠습니다...
삭제된 사용자
2024년 02월 24일
test
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 02월 17일
개발자의 질문에 대한 이해를 바탕으로 답변하겠습니다. MVC와 Flux 패턴은 모두 개발에서 사용되는 디자인 패턴이며, 데이터의 흐름과 상호작용을 관리하는 방식에 차이점이 있습니다. MVC (Model-View-Controller) 의 경우, 사용자 인터페이스와 비즈니스 로직을 분리하는 것이 주 목적입니다. 여기서 Model은 데이터와 비즈니스 로직을 담당하고, View는 사용자가 보게 될 화면을 나타낸다. Controller는 사용자의 입력을 Model과 View로 연결시켜 줍니다. 하지만 MVC 패턴에서는 View와 Model 사이의 의존성이 강할 수 있으며, 이로 인해 데이터 변경 추적이 복잡해지고 예상치 않은 사이드 이펙트를 초래할 수 있다는 문제점이 있습니다. Flux는 Facebook에서 제안한 아키텍처로써, 이러한 MVC 패턴의 한계를 극복하고자 개발되었습니다. Flux 구조에서 중요한 특징은 '단방향 데이터 흐름' 입니다. 즉, Controller - Dispatcher - Store - View 순으로 데이터가 흐르고 이 때문에 어떤 Action이 어떤 변화를 일으키는지 추적하기 쉽습니다. 따라서, 질문에서 말씀하신 것과 같이 Flux 패턴은 초기 MVC 패턴의 단방향 플로우를 강화하고 데이터 변화 추적 및 이해를 쉽게 한다고 볼 수 있습니다. 마지막으로, 현재 실제 개발에서는 순수한 MVC나 Flux보다는 이 두가지 아키텍처의 장점을 결합한 React-Redux와 같은 라이브러리를 많이 사용하고 있습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!