MVC Pattern, ORM, Short.ly Sprint (1/2)

five1star·2020년 10월 26일

TIL

목록 보기
17/25
post-thumbnail

한주가 참 짧다. 정신없이 MY SQL Basic Sprint가 지나고 MVC Pattern스프린트에 들어왔다.
이번주로 스프린트 기간이 끝난다. 다음주 월요일이면 벌써 Advanced Hiring Assessment 그리고 Project에 들어간다.
과연 프로젝트에 들어갈 수 있을지.

최근 두번 연속으로 21기에서 넘어온 분들과 페어를 하면서 이에 대한 이야기를 했는데, 첫번째는 완벽할 필요는 없다는것.
다시 말해 프로젝트에 들어가고나서야 이제껏 배운것들을 더 심화해서 직접적으로 적용시킬 수 있기때문에 나는 아직 프로젝트에 들어가면 안돼...한번 더할거야..할 필요는 없다는 것이고 다른 하나는 Advanced HA가 생각보다 어렵다는것...하하...죽겠네 진짜^^^

지난번 DB스프린트에서 해결 못해서 호용님을 물고 늘어졌던 부분이 있는데, 시간관계상 더 붙잡고있을수는 없고, 일단 추가적인 부분이었기때문에 (그리고 향후 해결될 가능성이 많기 때문에) 일단 내려놓고 이 Short.ly Sprint에 집중하기로했다.

오늘은 MVC 패턴과 ORM, 그리고 이를 구현하는 Short.ly 스프린트를 시작했다(~내일까지).

MVC (MODEL -View - Controller) Pattern

  1. 어디서 보았나 했더니 지난번 DB스프린트에서 맛보았던 폴더 구조였다.

    스프린트를 진행할때는 왜 라우터와 컨트롤러를 굳이 분리해놓았을까 하는 생각이 들었는데(사실 지금도 조금은), 모듈을 분리시키는 것 처럼, 프로젝트를 진행함에 있어서 코드의 가독성과 관리 편의를 도모하기 위해 기능을 나눌 필요가 있는데, 그 방법 중 하나가 MVC 패턴이다.
  1. MVC 패턴은 다음과 같이 나누어져있으며, 서로 상호작용한다.


1. 모델 → 데이터의 정보를 가지고있다.

자신이 데이터를 가지고 있던지 디비에 연결이 되어 가지고있다.

이 데이터로 컨트롤러에게 물어보다.

모델이 뷰랑 직접 소통하는경우는 거의 없다

  • Model : 자신이 데이터를 가지고 있거나 혹은 DB와 직접적으로 연결되어있으며, 데이터 상태 변경시에, 컨트롤러에게 알리는 역할을 한다. View와 직접 소통하는 경우는 거의 없다.

  • Controller : 사용자로부터 받은 입력에 대한 응답을 모델에게 전달하고, 가공된 데이터를 받아 다시 뷰에게 데이터를 넘기는 역할을 한다.

  • View : 유저에게 직접 보이는 화면으로, 일반적으로Client를 말한다.

  1. Web 예시
  • 서버(익스프레스)로 들어오는 요청에 따라 라우터가 이에 맞는 컨트롤러를 동작시키는데, 프로젝트가 복잡해짐에 따라 컨트롤러를 세분화시킬 필요가 있다지만, 아직 작은 스프린트 단위에서는 잘 체감되지 않는다. 라우터 + 컨트롤러의 동작을 함께 처리할 수있지 않을까 하는 생각.


ORM(Object-Relational Mapping)

ORM은 SQL문을 사용하지 않고 JS문법을 통해서 Object로 DB에 접근할 수 있도록 돕는 역할을 한다. SQL문이 비교적 직관적인 영어스타일의 문법을 가지고 있기 때문에 사용하는것이 어렵지 않다고 해도(아니 어렵지만...) JS문법으로 작성하는 코드 안에서 SQL문법으로 작성하는것은 편한 일은 아니다.

ORM의 하나로서 JS에서 SQL문을 사용할 수 있도록 도와주는 도구 중 하나가 바로 Sequelize 다.

갓 시퀄라이즈...그러나 쉽지는않다..

  • 시퀄라이즈의 사용법은 스프린트 진행과 함께...

Short.ly Sprint

이번 Short.ly 스프린트는 MVC 패턴을 익히는것과 ORM, Sequelize에 익숙해지는데 목적이 있다.

포크를 받은 폴더의 구조는 다음과 같다.

DB스프린트와 유사한 구조였으나, view(클라이언트)는 생략된 상태였고,M과 C를 제작하는 스프린트다.

기존에 express서버가 만들어져있었고, 분기에 따라 라우팅 -> 컨트롤러 -> 모델로 연결시켰(...키는 중이다)

지난번 DB스프린트 폴더를 열어 비슷하게 흉내를 내며 라우터와 controller는 얼추 작성한 상태다.
(get, post는 작성했고 /:id로 들어오는 부분 작성중!)

  • 비동기처리에대한 이해가 아직 부족함을 느낀다. 프로젝트 들어가기 전에 다시 복습!!!

Sequelize 사용법

    1. 설치
      sequelize를 사용하기 위해서는 먼저 시퀄라이저를 사용하기 위한 패키지를 설치해야한다.
//sequelize, sequelize cli 설치방법
$ npm install --save sequelize mysql2 // mysql2는 mysql과 시퀄라이즈를 이어주는 드라이버
$npm install --save-dev sequelize-cli //시퀄라이즈 명령어를 실행하기위한 패키지

...
npx sequelize-cli init // bootstraping(프로젝트 초기단계를 자동으로 설정) 해준다

작업을 마치면 config, migrations,models,seeders 폴더가 생성된다.

profile
자라나라 코드코드

0개의 댓글