📢 개요
네이버 같은 딱봐도 복잡한 웹사이트는, 요소와 기능들이 많아지고, 구조가 이것저것 얽혀있다는 것이 느껴집니다.
뭔가 거대해지고 복잡해질수록, 특정 기준으로 분리,모듈화해서 접근을 해야합니다.
국가기관을 입법,사법,행정으로 나누듯이, 웹사이트를 비롯한 소프트웨어는
- Model
- View
- Controller
라는 접근법이 많이 사용됩니다.
📢 MVC Web Framework
MVC 패턴
- Model : "데이터"에 관련된 것
- Veiw : 눈에 보이는것, 웹의 경우 HTML/CSS 나타내는 요소들
- Controller : 뭔가를 제어하는것, 프로그래밍의 대부분을 차지
게시판을 예시로 봅시다.
Model
👉 게시판에 쓰이고 읽히고 수정되는 글들은, DB에 데이터로 저장될 것입니다.
이 데이터의 형식을 지정하고, 저장하고 불러오는 작업들에 관한 코드들이 Model
Veiw
👉 이걸, 사용자들이 목록과 글, 입력화면 등으로 시각적으로 볼 수 있도록 해주는 HTML/CSS 등의 요소가 View
Controller
👉 Model에 데이터를 View에 연결시켜서 사용자가 GUI화면을 통해 데이터를 읽고,쓰고,지우고 할 수 있도록 전반적 제이를 하는 파트가 Controller 입니다.
앞선, "정적 웹 vs 동적 웹" 포스팅에서 동적 웹을 "식당"에 비유했습니다.
[알쓸 IT] Static Web ? Dynamic Web ?
📢 개요 편의점과 식당이 있습니다. 편의점은 미리 조리되어있는 음식들을 내가 사다 먹을 수 있습니다. 식당은 내가 주문 넣으면, 그 자리에서 음식을 조리해서 만들어 제공을 해주면 먹을 수
youngminieo1005.tistory.com
Model은 이 식당의 식료품창고를 관리하고, 음식을 요리하는 "주방장"
View는 주방장이 내온 음식을 플레이팅하는 "직원"
Controller는 주문도 받고 서빙도 하는 매니저라고 생각하면 적당합니다.
이렇게 Model, View, Controller를 갖춘 웹사이트를 코드로 기본 골격을 한 번 짜고 나면, 그 코드를 기반으로 내 사이트를 개발하는 일이 수월해지겠지만, 이런 구조 자체를 개발하는 것은 꽤나 시간이 걸릴 것입니다.
다행이도 여러 회사나 비영리 단체, 혹은 개인들이 이 MVC 구조의 기본 설계가 갖춰진 상태인
"MVC 웹 프레임워크" 란 걸 제공합니다.
마치, 건물의 기초 골격과 수도,전기,난방이 설치된 채로 사용자가 원하는대로 집을 개조하고 꾸밀 수 있게 제공하는 것입니다.
"프레임워크"는 남이 이미 짜놓은 코드란 점에서 라이브러리와 비슷하지만, 이 둘을 간단히 비교하자면
라이브러리(Library) | 프레임워크(Framework) |
각각 개별적인 기능들을.. 비유하자면, 문짝이나 욕조 등의 부속품 "가져다 쓰는 것" |
부족품들이 연결되어서.. 기초적인 제품 골격을 갖춘 상태 "기본 틀에서 덧붙여 만드는 것" |
웹 프로그램언어에는 다양한 언어가 있고, 또 언어마다 다른 MVC 웹 프레임워크가 있습니다.
예로 들면, 한국에서, Java 언어로 동작하는 Spring 프레임워크, php 의 Laravel 등이 있지요.
특이하게 MVC라고 안하고, MTV(T,Template) 라고하는 python의 Django, Ruby 의 Ruby on Rails, 함수형 언어 Scala의 Play 등등 굉장히 많다고 합니다.
후에, 본인이 어느 회사에서 일을 하는가, 또는 어떤 웹사이트를 만드는가에 따라서, 무슨 언어와 프레임워크를 사용할지 결정하면 됩니다.
대략적인 구조나 사용법은 다 비슷해서, 한 두가지 써보면 새로운 걸 접해도 쉽게 터득할 수 있을 것입니다.
문제나 잘못되었거나 미흡한 설명 있으면 알려주세요. 🙏
'알쓸 IT 지식' 카테고리의 다른 글
[알쓸 IT] Angular, React, Vue (3) | 2021.01.11 |
---|---|
[알쓸 IT] Static Web ? Dynamic Web ? (0) | 2021.01.11 |
[알쓸 IT] HTML/CSS/JavaScript (1) | 2021.01.03 |
[알쓸 IT] 클라우드 컴퓨팅(Cloud) (1) | 2021.01.03 |
[알쓸 IT] Server란 무엇인가 ? (0) | 2021.01.03 |