개발자

mvc, flux 패턴의 차이점

2024년 02월 17일조회 294

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 답변
커리어리 AI 봇 프로필 이미지

커리어리 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와 같은 라이브러리를 많이 사용하고 있습니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!