MVC
하나의 소프트웨어가 돌아가기 위한 패턴으로 Model, View, Controller로 구성되어 있다.
서비스 하나가 돌아가기 위해서 여러 과정과 처리들이 필요한데 그 처리들을 각 기능별(Model, View, Controller)로 나누는 특징이 있다.
하나의 코드 베이스에서 전부 구현하는 것이 아니라 의도적으로 구분하고 나누어서 진행한다는 점을 가진다. 이렇게 MVC 패턴을 사용하게 되면 가독성, 퀄리티 등 여러 측면에서 장점을 가지고 온다.
MVC 패턴들을 사용하는 웹 프레임워크가 많이 존재한다.
JS : Express, Backbone, Angular
PHP : Laravel, Codeigniter
Python : Django, Flask
Ruby : Ruby on Rails
Model, View, Controller의 개념을 알아보자.
Model
data의 정보를 가지고 있던지 DB와의 연결로 통해 data를 가지고 올 수 있다. Model은 기본적으로 DB와 연결 되어 있으며 DB로부터 받아온 data나 Model 스스로 가지고 있는 data를 Controller로 연결해 줄 수 있다. Model과 Controller는 상호작용 한다고 생각하면 될 것이다. View와는 연결할 일은 그리 자주 없다.
View
유저가 보는 화면을 담당하며 UI이라고 생각하면 된다. (HTML, CSS)
View는 Controller과 연결한다. 앞서 언급했다시피 Model과 연결할 일을 잘 없고 DB와도 마찬가지이다. Controller에 유저의 액션이나 이벤트를 전달한다. View는 Model, DB에서는 어떤 일이 발생하는지 모르며 그저 유저가 보는 부분을 담당할 뿐이다.
Controller
View에서 발생하는 액션과 이벤트에 대한 input 값을 받아 그 값을 Model에게 주기 전에 특정 일련의 가공과정을 거친 후 Model에게 넘겨주며 Model은 요청했던 data를 Controller에게 반환해준다. 그렇게 되면 Controller는 다시 가공과정을 거쳐서 View에게 다시 돌려주게 된다. 그렇게 되면 View 해당 data를 그려주게 되는 것이다. Controller는 매개체라고 생각하면 이해가 쉬울 것 같다.
MVC Pattren을 사용 할 때는
보통은 한 페이지에서 MVC 모두를 작성하는 것이 아니라 각자의 폴더, 파일을 두어 사용한다.
그리고 패턴은 MVC 만 있는 것이 아니라 여러 패턴이 존재하기도 하고 이러한 패턴들은 앞서 말했다시피 코드가독성, 관리, 유지보수 측면에서 장점을 가진다.
ORM
관계형 DB와 js의 객체 사이의 통역사/중개자 기능을 담당한다. 객체와 모델 사이의 관계라고 생각하면 이해가 쉽다.
객체에서의 각 속성은 DB에서는 필드로 보이며
DB에서 여러 가지의 값(M:N 관계)을 가지고 있을 때는 js에서는 배열로 표현한다.
ORM은 쉽게 말해 관계형(SQL 등)으로 사고를 하지 않아도 js코드로 관계형 DB를 접근할 수 있게 해주는 것이다.
접근 방법 자체를 프로그래밍 언어의 관점에 맞출 수 있도록 도와준다.
SQL 문 없이도 DB에 접근 할 수 있다.
여러 가지의 ORM 프로그램이 존재하는데 프로미스 기반의 Sequelize도 여기에 속하며 다양한 관계형 DB들을 지원한다. SQL문에서 사용하는 부분에 있어 다양한 관계형 DB들 간에 약간의 서로 다른 점이 존재할 수 있는데 Sequelize는 이 부분을 모두 맞추어 준다는 장점이 있다. Js 코드만 작성해도 다양한 DB를 사용할 수 있는 것이다.
'개념정리' 카테고리의 다른 글
1/13[TIL]Database (0) | 2021.01.13 |
---|---|
1/11[TIL]Redux (0) | 2021.01.11 |
1/7[TIL]React Hooks (0) | 2021.01.07 |
1/6[TIL]React(3) (0) | 2021.01.06 |
1/5[TIL]React(2) (0) | 2021.01.05 |