CRUD 갈아엎기 (1) - MVC 패턴 적용

nogie·2022년 5월 30일
0

갈아엎기

목록 보기
2/2
post-thumbnail

CRUD 갈아엎기 (0) 편에서 정했던 목표 중 제일 급했던 코드 정리를 완료했다.
로직이 별로 없었지만 앞으로 새로운 기능을 추가 및 관리를 할 때 매우 유용하기 때문에 제일 먼저 진행하게 되었다. 코드가 정리되기 전으로 돌아가 기능 추가 및 관리를 한다고 생각하면 답답해진다.

Express.js는 일반적으로 가볍게 사용할 목적으로 이용하는데 코드를 자유롭게 작성할 수 있는 장점이 있지만 중구난방이 될 수 있다는 부분을 단점으로 취급한다. 나는 큰 서비스를 계획하고 있는 것이 아니라 대충 기능만 구현해도 됬었지만 보기좋은 떡이 먹기에도 좋다고..

우선 적용된 모습을 보기 전에 MVC 패턴이 무엇인지를 알아보자

MVC 패턴이란❓

Model, View, Controller로 이루어진 소프트웨어 디자인 패턴을 의미한다.

MVC 패턴을 적용하게 되면 비즈니스 로직과 사용자 인터페이스를 분리시켜 서로 영향을 주지 않고 개발할 수 있게 된다. Model, View, Controller는 각각 다음과 같은 역할을 담당한다.

  • Model : Controller로 부터 넘겨받은 값들을 return 하여 View를 Update함
  • View : 사용자에게 보여지는 부분
  • Controller : 사용자로부터 입력받은 값들을 Model로 넘겨 처리하도록 함

다음은 현재 진행하고있는 'CRUD 갈아엎기' 의 MVC 적용 전과 후의 사진이다.

잠깐만 봐도 Before에 비해 After에서 역할들이 분리된 모습을 확인할 수 있다.
전에는 routes에서 각각 기능을 담당하는 부분에 코드를 때려 박았다면
한곳에서 각각 기능별로 간결하게 routing 해주는 모습을 확인할 수 있다.
나중에 기능을 추가하거나 코드를 수정할 일이 있을때도 일을 처리하기 수월해진다.

DB부분도 기존에 mysql_query.js 에서 통째로 관리하던 것을 model 별로 나누어 bser.js, board.js 를 분리하여 처리했다.

⛔ MVC 패턴의 단점

위의 내용만 보면 장점만 있어보이지만 프로젝트의 규모가 커지게 되면 단점이 부각되어진다. Controller에 로직을 점점 추가하다보면 Controller의 덩치가 커져 스파게티로 이어질 가능성이 있으며 다수의 Model 과 View 가 복잡하게 연결되어 서로 의존성을 띄게 되어 분석과 테스트가 어려워진다고 한다. 이런 현상을 MVC를 풍자하는 느낌으로 Massive ViewController 라고 말하기도 한다.

사실 이러한 문제점들을 경험해보지 못해서 와닿지는 않는다.
그러나 언젠가 직접 체감하는 날이 오지 않을까?


📌 마무리

이제 기능들을 추가해야 할 차례인데.. 아이디어를 떠올리는 시간을 가지러 떠난다.
오늘 했던 작업은 코드 정리라기보다 구조 개편에 가까워서 따로 코드 정리도 해야하고추가할 기능도 생각해야 하고 할 일이 산더미다. 이 프로젝트를 시작하기 전에 발견한 문제점들이 많았지만 이미 구석탱이로 몰아넣었다. ( 현재 로그인 부분만 해도 SQL Injection 취약점이 존재한다. )

참고 :
https://developer.mozilla.org/ko/docs/Glossary/MVC
https://m.blog.naver.com/tlstjd436/222010976665
https://junhyunny.github.io/information/design-pattern/mvc-pattern/#massive-view-controller

profile
Dev Space

0개의 댓글