티스토리 뷰

Dev/Node.js

Koa + MySQL + Passport-jwt 셋팅하기 #1

글쟁이 야훔 2020. 2. 12. 15:15

내가 이번에 Node.js 로 Restful API 웹 서버를 만드려고 이것 저것 알아보면서 뭘 섞어야 좋은 결과물이 나올지 연금술사 마냥 이 패키지 저 패키지 이리저리 섞고 있었더랬다.

 

서버를 만들 때는 이런 실수를 해선 안되겠죠?

 

일단 Restful API 를 만드는 몇가지 조건은 아래와 같다.

 

  1. DB와의 연동은 ORM(Object-Relational Mapping)으로 할 것

  2. 로그인 방식은 Json Web Token(JWT) 방식으로 진행할 것

  3. 웹 서버는 Restful API만 지원하므로 웹 페이지 랜더링 필요없다.

그래서 일단 Node.js에서 웹서버 패키지를 찾아보았다. 후보지는 두개였는데 하나는 Express, 다른 하나는 Koa 였다.(Hapi는 뭐랄까 코딩방식이 내 스타일과는 달라서 후보에서 제외되었다.)

 

Express가 IBM의 StrongLoop으로 오픈소스 소유권이 넘어가면서 빠져나온 개발자들이 만든게 Koa라는데 장기적으로 봤을때 Express가 유료화가 될지는 모르겠으나 암튼 소유권이 생긴 오픈 소스는 함부로 사용하지 않는 것이 내 개인적인 생각이라서 Koa를 이용해 만들기로 결정했다.

 

※ StrongLoop는 IBM에서 만든 오픈소스 개발자 커뮤니티라고 한다.

 

물론 사용 빈도나 난이도, 동작방식에 대해서는 사람들마다 뭐가 더 나은지 서로 말들이 많은 것 같은데 이번에 포스팅에선 Koa로 할 거니까 그렇게 알도록. (가벼운 걸로 치면 Express는 나중에 요청 있으면 해줄게.

 

 

DB는 ORM을 통해서 작업할 수 있어야하는데 이유는 아래와 같다.

 

  • Injection 공격에 대응할 수 있어야한다.
  • Model 객체와 Table Attribute 값과 동일해야한다.
  • 직접 SQL을 작성하는 것은 최소한으로 해야한다.

ORM 패키지를 골라보려고 찾아보니 Sequelize 말고는 왠지 찾을 수가 없어서 그냥 Sequelize를 사용하기로 했다. 메뉴얼도 대충 읽어보니 어렵지 않아보였다.

 

그리고 마지막으로 Restful API를 사용하게 되면서 발생하는 사용자 인증 이슈는 JWT로 해결하기로 했다. 요즘은 거의 표준처럼 자리 잡히기도 했고 Node.js에서 사용자 권한 및 인증 처리 패키지로 유명한 Passport 패키지에도 JWT 미들웨어가 있으니 그걸 활용해 작업을 시작해보는게 좋겠다고 판단했다.

 

그러면 이제 Koa + MySQL + JWT를 셋팅해서 Restful API 서버를 만들기 시리즈 시작합니다.

'Dev > Node.js' 카테고리의 다른 글

Koa + MySQL + Passport-jwt 셋팅하기 #2  (1) 2020.02.13
Koa + MySQL + Passport-jwt 셋팅하기 #1  (1) 2020.02.12
댓글
댓글쓰기 폼