일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- pair programming
- 도커
- 부모객체
- KPT
- DB
- 클린코드
- 자식객체
- Solid
- java
- TDD
- Be
- 미니미프로젝트
- Runtime Area
- G1GC
- testdrivendevelopment
- Java 22
- docker
- Self Descript Message
- ComponentScan
- 스프링으로하는마이크로서비스구축
- RESAPI
- Spring/JAVA 서적
- M:N
- hateoas
- ATDD
- 마이크로서비스디자인패턴
- 트랜잭션 격리 수준
- GC
- 완벽이해
- Execution Engine
- Today
- Total
Programming Summary
디자인 패턴) MVC는 왜 사용할까? 본문
MVC란?
MVC란 무엇일까? MVC는 Model, View, Controller의 줄임말이다. 다음 그림을 살펴보자.
사용자가 서비스를 이용할 때 가장 먼저 마주치는 부분은 View이다. 사용자는 이 View를 통해 서비스를 보고, 사용할 수 있다. 하지만 View를 구성하기 위해 데이터가 필요하다. 이러한 데이터를 조회하고, 수정하고, 생성하고, 삭제하기 위해 View(사용자)는 Controller에게 부탁한다. Controller는 이러한 요청을 Model을 통해 처리하고 View에 다시 전달한다.
이를 정리하면 다음과 같다.
- Model : 비지니스 로직을 담당하는 부분
- View : 화면 랜더링과 사용자와의 상호작용을 담당하는 부분
- Controller : View와 Model 간의 통신, 조작을 담당하는 부분
MVC는 디자인 패턴인가?
그렇다면 MVC는 디자인 패턴인가? 그렇다면 생성 패턴, 행동 패턴, 구조 패턴 중 어디에 속하는 디자인 패턴인가?
위키백과에는 다음과 같이 MVC를 정의헀다.
모델-뷰-컨트롤러(model–view–controller, MVC)는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴이다.
음.. 위 글을 보니 디자인 패턴은 맞는 것 같은데.. 그렇다면 어디에 속하는 디자인 패턴인가? 이에 해당 하는 내용 역시 위키 백과에서 찾을 수 있었다. 다음 그림을 보자.
그렇다. MVC 패턴도 디자인 패턴이다. 다만 우리가 주로 알고 있던 4인방(Gang Of Four) 패턴에 포함이 되지 않는 패턴일 뿐이다. 위 그림에 따르면 MVC 패턴은 소프트웨어 디자인 패턴 중 아키텍처 패턴에 해당된다.
MVC의 등장 배경
MVC는 트라이브 린스케이지에 의해 개발된 디자인 패턴이다. 1979년, 트라이브는 제록스 팔로 알토 연구소에서 최초의 태블릿 PC인 다이나북(DynaBooK)을 연구하고 있었다. 당시 다이나북 팀에는 한가지 철학이 있었는데, 바로 '전문 지식 여부나 남녀노소에 상관없이 모두가 직관적으로 사용할 수 있어야 한다' 이다. 그렇기에 다이나북 팀은 일반인이 사용하기 어려운 CLI보다 GUI를 개발하는데 심혈을 기울였다. 트라이브는 이러한 GUI 개발을 보며 한가지 사실을 깨닫게 된다. UI 관련된 코드와 데이터 저장/처리 코드는 특성과 하는 일이 뚜렷하게 구분된다는 것이었다. 그렇기에 트라이브는
1. 비지니스 로직
2. 시각적인 UI
3. 둘 사이를 연결해주는 부분
으로 코드를 분리하자는 생각을 하게 된다. 그렇게해서 다음과 같은 MVC의 초기 아이디어가 등장하게 된다.
또한 트라이브는 MVC에 대해 다음과 같은 말을 하였다.
“MVC was created as a solution to the general problem of giving users control over their information as seen from multiple perspectives.”
-Trygve Reenskaug
이를 해석하면 "MVC는 사용자에게 여러 관점에서 정보를 제어할 수 있는 일반적인 문제에 대한 해결책으로 만들어졌다."가 되겠다.
위 내용을 요약하자면 GUI를 가진 소프트웨어를 객체 지향적으로 잘 구조화 하기 위해 MVC가 등장하였으며, MVC의 본질은 관심사의 분리(Separation of Concerns) 가 되겠다.
왜 MVC를 사용해야할까?
결국 모든 디자인 패턴, 원칙은 더 좋은 코드를 만들기 위해 사용된다. MVC 패턴 역시 마찬가지다. 하지만 MVC 패턴의 역할을 하는 타 패턴들도 매우매우 많다. 그렇다면 왜 MVC를 사용해야 할까? 타 디자인 패턴에 비해 MVC의 이점은 무엇일까? 내 나름대로 MVC 만의 강점을 생각해보았다.
1. 관심사 분리가 편하다.
- MVC는 웹 프로젝트에서 많이 사용된다. 하지만 MVC 패턴은 웹 프로젝트가 아닌 유저와 상호작용하는 모든 프로젝트에서 할용할 수 있다. 단적인 예로 간단한 사다리 게임에도 Model, View, Controller를 적용하여 구성할 수 있다.
2. 이미 널리 사용되고 있다.
- 위에서 말했듯이 MVC 패턴은 웹 프로젝트에서 많이 사용된다. 그 만큼 협업을 해야하고 다른 사람이 이해하기 쉬운 클린 코드를 작성해야하는 입장에서 큰 메리트가 있다고 생각한다.
참고
'CS 공부' 카테고리의 다른 글
협업) 클린 코드를 꼭 해야 할까? (0) | 2024.07.09 |
---|---|
Network) Rest API란? (0) | 2024.07.05 |
Java) G1 GC를 어떻게 뜯어볼까? (6) | 2024.04.16 |
Infra) 인터넷경계 로드밸런서(Load Balancer)는 어디에 위치할까? (2) | 2024.04.09 |
Java) GC란? (4) | 2024.03.28 |