안녕하세요 데브당에입니다.
웹 어플리케이션 개발에 있어 빼놓을 수 없는 MVC 패턴과 Model1, Model2 에 대해 알아보겠습니다.
MVC(Model-View-Controller) Pattern
JSP를 이용하여 구성할 수 있는 Web Application Architecture는 Model1과 Model2로 나뉜다.
1. Model1 : JSP가 client 요청에 대한 로직 처리와 view(response page)에 대한 처리를 모두 수행
2. Model2 : JSP가 view(response page)에 대한 처리만 수행
💡여기서 Model2 구조는 MVC(Model-View-Controller) Pattern을 웹 개발에 도입한 구조이다.
Model 1
구조
model1은 view와 logic을 JSP 페이지 하나에서 처리하는 구조로, client로부터 요청이 들어오면 JSP 페이지는 java beans나 별도의 service class를 이용하여 작업을 처리, 결과를 client에 출력한다.
장단점
- 장점
- 구조가 단순하여 직관적이다.
- 개발시간이 비교적 짧아 개발비용이 감소한다.
- 단점
- view 코드와 로직처리를 위한 java 코드가 섞여있어 JSP 코드 자체가 복잡하다.
- JSP 코드에 Back-End와 Front-End가 혼재되어있어 분업이 힘들다.
- 프로젝트 규모가 커지면 코드가 복잡해져 유지보수가 어렵다.
- 확장성이 나쁘다.
Model 2
구조
Model2 구조는 MVC 패턴을 웹개발에 도입한 구조이다.
client 요청에 대한 처리는 Servlet이, logic 처리는 java class(Service, Dao...), client에게 출력하는 response page는 JSP가 담당한다.
Model2 | MVC 패턴 | 설명 |
Service, Dao, Java Beans |
Model | Logic 처리 Controller로 부터 넘어온 data를 이용하여 수행하고 그에 대한 결과를 다시 Controller로 return |
JSP | View | 모든 화면 처리 담당 Client 요청에 대한 결과뿐 아니라 controller에 요청을 보내는 화면단도 jsp에서 처리 |
Servlet | Controller | Client 요청을 분석하여 Logic 처리를 위한 Model 호출 필요에 따라 request, session 등에 결과 data를 저장하고, redirect 또는 forward 방식으로 jsp(view) page를 이용하여 출력 |
장단점
- 장점
- view 코드와 로직처리 코드가 분리되어있어 JSP는 Model1에 비해 복잡하지 않다.
- Back-End와 Front-End가 분리되어 분업이 용이하다.
- 기능에 따라 코드가 분리되었기 때문에 유지보수가 쉬워졌다.
- 확장성이 뛰어나다.
- 단점
- 구조가 복잡하여 초기진입이 어렵다.
- 개발시간의 증가로 개발 비용이 증가한다.
마치며
웹 실습시간에 먼저 model1 구조로 구현을 해보고, 그 이후에 model2 구조로 개발을 한 적이 있습니다. 개인적으로 model2만 실습하면 되는걸 굳이 model1을 실습하는 이유가 뭘까? 라고 생각해본 적이 있었습니다. 하지만 model1으로 구현을 해보고 이를 MVC로 쪼개어 model2로 변환하는 과정에서 MVC와 같이 구조를 명확히 구분할 수 있었고 이에 대한 필요성 또한 체감할 수 있었습니다.
불편함을 해소하기 위해 새로운 서비스 혹은 시스템를 고민하고 개선하는 것, 그리고 이에 대한 개선사항을 배워가는 것이 개발자의 즐거움이지 않을까 합니다!
'Programming > Web' 카테고리의 다른 글
[ Web] SpringBoot AWS S3 적용하여 파일 업로드하기 (4) | 2022.02.25 |
---|---|
[Web] REST API, 기초부터 정확히 이해하기 (1) | 2022.01.05 |