MVC의 의미와 프레임워크

김민우·2022년 8월 23일
0

잡동사니

목록 보기
8/22

지금까지 스프링의 MVC에 대해 자세히 공부를 했었다. 그러나 MVC의 기본적인 개념들이 모호하여 정리해보았다.

간단한 사이트를 정적 웹으로 구현한다고 하면 어떨까? 이는 별 문제가 없을 것이다.
그러나 대규모의 사이트(네이버나 구글)들을 정적 웹으로만 구현하라고 하면 어떨까?
아마 이는 불가능할 것이다. 실시간으로 바뀌는 데이터들이 매우 많으며 이는 동적으로 처리해야 하기 때문이다.

이렇듯 요소와 기능들이 많아지고 구조가 이것저것 얽힐 수록 코드가 매우 복잡해진다. 이럴 때는 특정 기준으로 분리, 모듈화해서 접근을 해야한다.

국가기관을 입법, 사법, 행정으로 나누듯이 웹사이트를 비롯한 소프트웨어에는 Model, View, Controller(이하 MVC)란 접근법이 많이 사용된다.


Model, View, Controller (이하 MVC)

View와 Controller는 단어를 들었을 때 직관적으로 의미를 파악할 수 있다. View는 눈에 보이는 것. 웹의 경우 나타내는 요소들일 것 같고, Controller는 말 그대로 뭔가를 제어하는 것. 이 부분에서 프로그래밍이 많이 이뤄질 것 같은 느낌이든다.

그러나 Model은 좀 아리송할거다.

MVC에 대한 설명들을 봐도 무슨 상태를 저장한다는 등 이해하기 힘든 얘기를 하는데 단순히 '데이터'에 관련된 것이다 정도로 생각하자.

게시판을 예로 들어보자.

Model

  • 게시판에 쓰이고 읽히고 수정되는 글들은 데이터베이스에 데이터로 저장 된다.
    데이터의 형식을 지정하고 저장하고 불러오는 작업들에 관한 코드들이 바로 Model 파트에서 이뤄진다.
    (식료품창고를 관리하고 음식을 요리하는 주방장)

View

  • 이걸 사용자들이 목록과 글, 입력 화면 등으로 시각적으로 볼 수 있도록 해주는 HTML, css 등의 요소가 View 파트에 작성이 된다.
    (주방장이 내온 음식을 플레이팅하는 직원)

Controller

  • 이 둘을 연결해주는 즉, Model의 데이터를 View에 연결해서 사용자가 GUI 화면을 통해 데이터를 읽고 쓰고 지우고 할 수 있도록 전반적인 제어를 하는 파트가 Controller이다.
    (주문도 받고 서빙도하는 매니저)

MVC 웹 프레임워크

이렇게 Model과 View, Controller를 갖춘 웹사이트를 코드로 기본 골격을 한 번 짜고 나면 그 코드를 기으로 내 사이트를 개발하는 일이 수월해지겠지만 이런 구조 자체를 개발하는데는 시간이 많이 걸린다.

따라서, 이러한 필수요소가 이미 만들어져 있는게 있다면 매우 편할 것이다.

다행히도, 이 MVC 구조의 기본 설계가 갖춰진 상태인 MVC 웹 프레임워크를 제공한다.
(건물의 기초 골격과 수도, 전기, 난방이 설치된 채로 사용자가 원하는대로 집을 개조하고 꾸밀 수 있게 제공되는 것이다.)

'프레임워크'는 남이 이미 짜놓은 코드란 점에서 라이브러리와도 비슷한데 이 둘의 차이를 잠깐 알아보자.

참고) 라이브러리 vs 프레임워크

라이브러리 : 각각 개별적인 기능들, 문짝이나 욕조등의 부속품
프레임워크 : 부속품들이 연결되어 기초적인 제품 골격을 갖춘 상태

쉽게 말해서

  • 가져다 쓰는것은 라이브러리
  • 기본 틀로 삼아서 그 위에 뭘 덧붙여 만드는 것은 프레임워크

정도로 생각하자.

웹 프로그래밍에는 다양한 언어들이 사용되고 이 언어들마다 또 여러 MVC 웹 프레임워크가 있다.
(한국에서 가장 많이 사용되는 건 Java 언어로 동작하는 Spring 프레임워크이다.)

우리는 어떠한 회사에서 일을 하는가, 혹은 어떤 웹사이트를 만드는가에 따라서 무슨 언어와 프레임워크를 사용할 지 결정하면 된다.

대략적인 구조나 사용법이 다 비슷비슷해서 한 두가지 정도 써보면 새로운 것을 접해도 쉽게 알 수 있다.

0개의 댓글