❓MVC 패턴이란?
📎 MVC 패턴은 소프트웨어를 개발하기 위한 아키텍처 패턴으로, 모델, 뷰, 컨트롤러 요소를 분리하여 개발하는 패턴입니다. M은 모델로, 데이터와 관련된 부분을 의미합니다. V는 뷰로, 사용자에게 보여지는 부분을 의미하고, C는 컨트롤러로, 모델과 뷰를 이어주는 부분입니다.
View (화면)
View란 화면에서 표시되는 것으로 사용자에게 보여지고 사용자가 직접 상호작용하는 부분을 말한다
Model (데이터)
데이터를 주관하는 영역을 Model이라고 부릅니다. javascript의 Object일 수도 있고,서버의 API로 받는 데이터일수도 있고,서버에 있는 DB일 수도 있습니다.
Controller (컨트롤러)
Model의 데이터를 받아서 화면에 그리고, 화면으로 부터 사용자의 동작을 받아서 Model을 변경합니다. 이러한 Model과 View사이의 중간 역할을 하는 것을 Controller라고 합니다.
❓아키텍쳐란 무엇인가?
📎 아키텍처란 코드의 구조, 체계를 만드는 것이라고 할 수 있다. 서로 섞이면 안 되는 것끼리 적절하게 분류하는 것이 아키텍쳐를 만드는 기본이다. 개발자들이 개발을 하다 보니 제멋대로 코드를 짜기보다는 특정한 규칙에 따라서 코드를 짜면 좀 더 효율적이라는 것을 알게 되고, 그것이 반복되면서 패턴으로 자리잡은 것을 아키텍쳐라고 부른다. 지속적으로 관리가 잘되는 코드를 위해서는 좋은 아키텍쳐가 필요하다.
❓MVC 패턴을 사용하면 어떤 이점이 있나?
📎 유지 보수성이 향상, 가독성 향상, 코드의 재사용성 향상.
MVC 패턴을 사용하면 각 요소가 독립적으로 작동하기 때문에 코드를 수정하거나 유지 보수하는 데 더 효율적입니다.
확장성이 높아집니다.
MVC 패턴을 사용하면 요소를 쉽게 추가하거나 삭제할 수 있습니다.
MVC 패턴은 소프트웨어 개발에서 가장 많이 사용되는 디자인 패턴 중 하나입니다. 따라서, 이 패턴을 적용하면 소프트웨어 개발에서 일관성 있는 디자인을 유지할 수 있습니다.
❓MVC 패턴을 사용할 때 주의할 점은?
📎 1. 모델은 컨트롤러와 뷰에 의존하지 않아야 한다. 즉, 모델의 코드에 컨트롤러나 뷰의 코드가 섞여서는 안된다. 데이터가 관련된 부분은 언제나 데이터만 꺼내 쓸 수 있게 유지한다.2. 뷰는 모델에만 의존하고 컨트롤러에는 의지해서는 안된다. 3. 뷰가 모델로부터 데이터를 받을 때는 사용자마다 다르게 보여줘야 하는 데이터에 대해서만 받아야 한다. 사용자마다 동일하게 보여지는 부분에 관한 코드는 뷰가 자체적으로 가지고 있어야 하지, 모델로부터 받아서는 안된다는 것이다. 모델은 뷰로부터 독립적이기 때문.4. 컨트롤러는 모델과 뷰에 의존해도 된다. 컨트롤러는 모델과 뷰의 중재자 역할을 하면서 전체 로직을 구성하기 때문.5. 뷰가 모델로부터 데이터를 받을 때 반드시 컨트롤러를 거쳐서 받아야 한다.MVC를 지키지 않고 코딩한 사례를 들어줄 수 있지 않을까?나만의 아고라스테이츠 만들 때 더미 데이터를 주는데 그중 유저 이미지 url을 자바스크립트 코드상에서 교체해주도록 코드를 짰었다. 엄밀히 말하면 모델을 컨트롤러로 바꾼 셈인데 괜찮은 건지?
❓MVC 패턴의 한계와 보완책
📎 MVC 패턴은 많은 경우 유용하지만, 애플리케이션이 커짐에 따라서 한계를 가질 수 있습니다. 대규모 애플리케이션에서는 모델과 뷰, 그리고 컨트롤러 사이의 관계가 복잡해질 수 있습니다. 이런 문제를 해결하기 위해 대안적인 모델이 등장했습니다. 저는 그중에서 flux 패턴에 관해서 언급하고자 합니다.
MVC 패턴에서는 모델과 뷰가 양방향으로 통신합니다. 즉, 모델에서 발생한 변경 사항은 뷰에 즉시 반영되며, 뷰에서 발생한 이벤트는 모델에 반영됩니다. 이것이 과도한 재렌더링을 발생시키고 성능에 악영향을 줄 수 있습니다.
FLUX 패턴은 이런 문제를 단방향 방식으로 해결합니다. View에서는 Dispatch를 통해서 Action을 전달하면 Action은 Reducer를 통해서 Data를 Store에 보관하고 Store에 들어있는 데이터는 다시 View로 연결이 되는 단방향 방식을 지향합니다.
Flux 패턴은 이러한 단방향 데이터 흐름으로 데이터의 일관성을 유지하고, 성능을 개선할 수 있습니다.
또한, 단방향 데이터 흐름은 애플리케이션의 디버깅과 유지 보수를 쉽게 만들어 줍니다.
대답 못한 질문
MVC 5계층이란 무엇인가? ASP.NET 웹 응용 프로그램을 개발할 때 사용되는 Model-View-Controller 패턴 기반의 5개 계층 아키텍처.
다른 조에서 나왔던 질문들
Controller는 여러 개의 View를 선택할 수 있나요?
Controller는 view에 영향을 미치나요?
MVC 패턴을 사용하는 프레임워크나 라이브러리는 뭐가 있을까요?
MVC 패턴의 문제점
MVC 패턴에서 발생하는 문제점을 해결하는 법
컨트롤러는 모델에만 의존해야하고 뷰에는 의존하면 안 된다. 옳은지 아닌지.
컨트롤러가 뷰에 영향을 미친다는. 옳은지 아닌지.
MVC 패턴을 사용하지 않았을때의 문제점
MVC 패턴을 웹에 적용했을때 컨트롤러와 모델 뷰가 어떤 순서로 동작할지
'기술면접' 카테고리의 다른 글
[기술면접 스터디] OSI 7계층 (0) | 2023.04.24 |
---|---|
[기술면접 스터디] 리액트 (3) | 2023.04.03 |