디자인 패턴 중 MVC가 있다.
MVC는 뭘까?
M은 Model, V는 View, C는 Controller를 의미한다.
Model(이하 모델)은 데이터를 가지고, 연산 역할을 한다.
View(이하 뷰)는 사용자의 입력을 받고, 사용자에게 화면을 보여주는 역할을 한다.
Controller(이하 컨트롤러)는 모델과 뷰 사이의 중재자로서, 뷰의 요청을 받아 모델에게 알맞는 요청을 넘기고 받아 뷰에 해당 응답을 넘겨주는 역할을 한다.
왜 이렇게 모델, 뷰, 컨트롤러로 나누는걸까?
먼저 나누지 않는 것의 특징을 보자.
JSP(Java Server Page)는 뷰(HTML)와 컨트롤러(Java)가 한 파일에 모두 다 있다.
1. 이렇게 나누지 않은 JSP 파일이 만일 2,000줄의 코드로 이루어져 있다면, 한 줄을 고치더라도 수정범위는 2,000줄이 될 수 있다. 즉, 크리티컬 범위가 넓다.
2. 코드를 파악하기가 어렵다. 즉, 가독성이 낮다는 것은 유지보수를 어렵게 한다.
3. 한 파일에 코드가 모두 있으면 모듈화가 되어있지 않다는 뜻이므로, 다른 곳에서 가져다 쓸 수 없기 때문에 재사용성이 낮다. 즉, 높은 결합도와 낮은 응집도의 가능성이 존재한다.
4. 한 파일에 코드가 모두 있으면, 보안적으로 중요한 코드가 같이 있을 수도 있기때문에, 보안에 취약할 수 있다.
나누지 않으면 단점만 있을까? 그럼 무조건 나누는 것이 좋을까?
만일 빠른 시간내에 작은 과제 단위 규모의 개발을 진행한다면, 나누는 것이 오히려 시간적 낭비일 수도 있을 수 있다.
결론: 나누면 좋은 상황
1. 많은 기능
2. 유지보수를 지속적으로 할 계획
3. 보안적으로 분리가 필요한 경우
4. 프론트엔드와 백엔드 사이의 업무 분리가 필요한 경우
5. 기능 확장을 지속적으로 할 계획
내 생각
디자인 패턴은 개발 가이드라고 생각하기 때문에, 무조건 좋은 것이 아니라 상황에 따라 좋을 수 있는 것이지 무조건 적으로 좋을 수 있다고 생각하지는 않는다. 그렇지만, 패턴이라고 정의해놓은만큼 잘만 사용한다면 좋을 수 있는 것! 그게 디자인 패턴 아닐까?!
Model1, Model2 모두 다 배웠었는데 지금은 다 잊어버린 것 같아 조금 아쉽다. 이번 기회에 다시 명확히 알고가면 좋을 것 같다.
'CS > 디자인 패턴' 카테고리의 다른 글
개발자로서 클린코드란 (0) | 2024.07.09 |
---|