기초적인 질문입니다...

2014-07-08 10:47

아는 사람이 asp 닷넷을 하는데

mvc 패턴을 왜쓰는지 모르겠다고

최근 model1으로 프로젝트 진행을 하다가 mvc로 넘어오면서

질문을 했어요...

유지보수다...각각 책임이 분리된다 외에는 별다른 설명을 못했고...

유지보수관점에서 asp 자체 하던 방식이 유지보수가 더 쉬워보인다 라고 이해를 하지 못하더라구요...

멋있게 깔끔하게 설명하고 싶습니다.

회사사람한테도 물어봤다는데 선임한테서 mvc가 생산성더 높고,엄청 빠르고, 유지보수 더 쉬워요 란 답변을 얻었데요.

저는 자바쪽에서 너무 당연하게 쓰고있었던 패턴이었는데,

왜인지 확실하게 알지는 못하고 쓴거 같습니다.

이해할수있는, 생산성이 더 높다면 어느면에서...그런 구체적인 답변을 해주고 싶어요~ 도와주세요~~!!

2개의 의견 from SLiPP

2014-07-08 12:42

이건 말로 설명해봤자 100% 공감하기 힘들거야. 유지보수하면서 몇천 라인이 넘어가는 asp 파일을 변경해 보는 경험을 해봐야 정말 MVC로 넘어가는 것이 좋겠다는 생각을 하게 될거야.

내가 경험이 미천할 때 쓴 글을 공유해볼께.

{quote} 필자가 스트럿츠를 처음 공부할 때가 생각난다. 하나의 요청을 처리하기 위하여 설정하고 작성해야할 파일들이 너무 많다는 것에 질려버렸다. '도대체 이 프레임워크를 어떤 개발자가 이용하겠는가?'와 '분명히 프로젝트의 개발기간이 모델 1보다 두배이상은 더 소요될 것이다.'라는 것이 필자의 생각이였다.

그러나 스트럿츠를 사용하면 할수록 스트럿츠를 이용하여 애플리케이션을 개발하는 것이 모델 1보다 더 빠를 수 있다는 생각을 하게 된다.

하나의 요청을 처리하는 과정이 정형화되어 있고, 뷰와 컨트롤러의 역할이 명확하게 구분되어 있다보니 디버깅 또한 모델 1보다 더 쉽게 할 수 있었다. 특히 필자가 스트럿츠를 이용하면서 가장 좋았던 점은 ActionForm클래스에서 인자에 대한 처리를 자동으로 해주는 기능이였다. 모델 1방식으로 개발하면서 가장 귀찮고 에러가 발생할 가능성이 많은 부분이 페이지간에 인자를 주고 받는 부분이다. 당연히 인자값을 체크하기 위한 소스가 JSP에 많아지면서 JSP페이지 크기는 커질 수 밖에 없었으며, 라인수가 많아질 수록 디버깅하기 힘들어 질 수 밖에 없었다.

스트럿츠를 이용할 경우 ActionForm은 인자처리, Action은 모델과 통신하는 역할, ActionServlet은 컨트롤러 역할, JSP는 결과물을 보여주는 뷰역할을 하도록 명확하게 분리되어 있기 때문에 에러가 발생했을 때 디버깅 속도를 향상시킬 수 있었다. 이런 측면에서 볼 때 애플리케이션의 유지보수비용을 줄일 수 있을 것이다.

스트럿츠가 MVC모델을 기반으로 하고 있다. 따라서 스트럿츠를 이용하면 뷰와 모델 사이에 컨트롤러 레이어가 존재하고 있기 때문에 뷰와 모델은 독립된 상태를 유지할 수 있다. 따라서 애플리케이션 개발시 뷰 개발자와 모델 개발자 사이의 역할을 명확히 분리할 수 있다는 것이 큰 장점이다. 중간에 컨트롤러 레이어가 존재하기 때문에 모델에 대한 수정사항이 발생할 경우 뷰는 수정없이 컨트롤러만을 수정하여 해결할 수 있다.

스트럿츠의 또 다른 장점은 웹 애플리케이션을 위하여 필요한 많은 기능들을 이미 제공하고 있다. 이 장의 파일 업로드 기능 또한 스트럿츠에서 이미 제공하고 있는 기능이다. 하나의 프로젝트에 무수히 많은 개발자들이 참여하게 되면 개발자들이 선호하는 컴포넌트나 유틸들을 임의로 사용하여 유지보수할 때 어려운 점이 많다. 현재 프로젝트내에서 같이 개발하고 있는 다른 개발자의 소스코드에 대한 가독성 또한 떨어지기 때문에 서로간에 도와주거나 수정하기가 힘든 경우가 많다. 스트럿츠를 이용할 경우 같은 스타일로 개발하게 되기 때문에 유지보수에 대한 부담을 덜어줄 수 있다. {quote}

지금 읽어보니 참 경험이 미천하다는 느낌이 드네. 이 글을 쓴 후 10년이 지난 시점에 다시 한번 정리해 봐야겠네. 그건 나중에...

이 글은 스트럿츠 프레임워크 워크북에서 쓴 글이다. 모델 1에서 MVC로 변화해 가는 과정은 http://www.javajigi.net/pages/viewpage.action?pageId=82 에서 볼 수 있다. 혹시 조금이나마 도움이 된다면 공유해 보면 좋겠다.

의견 추가하기

연관태그

← 목록으로