MVC 웹 프레임워크가 뭔가요?

MVC 웹 프레임워크가 뭔가요?
MVC 프레임워크는 거대한 동적 웹이 등장하면서 생긴 웹 프레임워크입니다.
규모가 크지 않다면 한 파일 안에, 변수처리, 데이터처리, 그리고 HTML을 처리하는 부분을 다 넣어도 되겠지만,
네이버 정도 되는 웹 페이지를 그런식으로 만들 수는 없겠죠?

즉, 규모가 커질 수록 코드들을 특정 기준으로 분리, 모듈화해서 접근하게됩니다.
웹 사이트 뿐만아닌 프로그램들에는 Model, View, Controller, 즉 MVC란 접근법이 사용됩니다.
MVC Web Framework
View하고 Controller는 처음 들으셔도 '아, 이거겠구나' 싶을 거에요.
View는 말 그대로 눈에 보이는 것, 웹의 경우 HTML이랑 CSS로 나타내는 요소입니다.
Controller하면 뭔가를 제어하는 것, 아마도 프로그래밍이 이 부분에서 많이 이뤄질 것 같은 느낌이죠?

Model, 이게 좀 아리송 할 겁니다.
MVC에 대한 설명들을 봐도 무슨 상태를 저장한다느니 알 수 없는 이야기들을 하는데,
그냥 데이터에 관련된 것이라고 생각하시면 됩니다.
게시판
게시판을 예로 들어보겠습니다. 게시판에 읽히고 쓰이고 수정되는 글들은 데이터 베이스의 데이터로 저장됩니다.
이 데이터의 형식을 지정하고 저장하고 불러오는 작업들에 관한 코드들이 이 Model 파트에서 이뤄집니다.
이걸 사용자들이 목록과 글, 입력화면 등으로 시각적으로 볼 수 있도록 해주는 HTML, CSS 등의 요소가 View 파트에 작성되고요.
그리고 아마 예상하셨겠지만, 이 둘을 연결해주는 부분,
Model의 데이터를 View에 연결해서 사용자가 GUI 화면을 통해 데이터를 읽고 쓰고 지우고 할 수 있도록 전반적 제어를 하는 파트가 Controller입니다.
정리
MVC를 하나의 식당에 비유하자면,
Model
식료품 재료를 저장하고 조리하는 주방장
View
주방장이 내온 음식을 플레이팅하는 직원
Controller
주문도 받고 서빙도 하는 매니저
활용
이런 MVC 모델처럼 코드로 기본 골격을 한 번 짜고 나면 그 코드를 기반으로 내 사이트를 개발하는 일이 수월해지겠지만,
이런 구조 자체를 개발하는데는 꽤나 시간이 걸립니다.
처음부터 스스로 구조를 개발하는 것이 아닌, 필수요소가 이미 만들어져 있는게 있다면 참 편리하겠죠.
다행히도 여러 회사, 비영리단체, 개인들이 이런 MVC 구조의 기본 설계가 갖춰진 상태인 MVC 웹 프레임워크란 걸 제공합니다.

건물의 기초 골격과 수도, 전기, 난방이 설치된 채로 사용자가 원하는 대로 집을 개조하고 꾸밀 수 있게 제공되는 겁니다.
'프레임워크'는 남이 이미 짜놓은 코드란 점에서 '라이브러리'와도 비슷합니다.
Library VS. Framework
'라이브러리'가 각각 개별적인 기능들 즉, 문짝이나 욕조 등의 부속품이라고 한다면,
'프레임워크'는 이것들이 연결되어 기초적인 제품 골격을 갖춘 상태를 말합니다.
쉽게 말해서 가져다 쓰는 것이 '라이브러리'고
기본 틀로 삼아서 그 위에 뭘 덧붙여 만드는게 '프레임워크'인거죠.

웹 프로그래밍에는 다양한 언어가 사용되고, 이 언어들마다 또 여러 MVC 웹 프레임워크가 있습니다.
MVC 웹 프레임워크 종류
한국에서 가장 많이 사용되는 건 자바 언어로 동작하는 spring 프레임워크,
php 언어로 작동하는 라라벨 프레임워크
특이하게도 MVC라고 안하고 MTV(Model, Template, View)라고 하는 파이썬의 장고,
일본에서 많이 쓰는 Ruby의 Ruby on Rails
C#의 .Net Core (마이크로소프트에서 만듦, 구글에 dotnet core mvc framework 라고 검색)
함수형 언어 Scala의 Play 등등 굉장히 많습니다.

angular 같은 프론트앤드는 나중에 다루겠습니다.