최근 Node와 React를 활용한 그룹웨어 개발 프로젝트를 진행하게 되었습니다. 저는 관리자 페이지를 담당하게 되었는데 이미 짜여져 있는 Node 웹 프레임워크가 잘 정리되어 있더군요. 그래서 다른 Node 프로젝트를 할 때 써먹을 일이 있지 않을까 싶어 정리합니다.
Koa를 기본으로 한 웹 프레임워크 세팅입니다. 아래의 기능들을 포함하고 있습니다.
다음 패키지들을 설치합니다.
Request Body parser입니다. Express.js의 multer와 같은 기능들을 가지고 있습니다.
Koa의 로깅 미들웨어입니다. 요청을 주고 응답을 받는 과정을 아래와 같은 로그로 볼 수 있습니다.
<-- GET /
--> GET / 200 835ms 746b
<-- GET /
--> GET / 200 960ms 1.9kb
<-- GET /users
--> GET /users 200 357ms 922b
<-- GET /users?page=2
--> GET /users?page=2 200 466ms 4.66kb
본 패키지를 설치할 때 주의할 점은 koa의 메이저 버전과 logger의 메이저 버전을 일치시켜야 한다는 것입니다.
세션 미들웨어입니다. 기본적으로 쿠키를 활용하여 세션 컨트롤을 할 수 있고 브라우저의 세션저장소를 활용할 수도 있습니다.
static 파일을 다루기 위한 미들웨어입니다. koa-send
라는 미들웨어를 포함하고 있습니다.
koa-send
는 static 파일을 전송할 때 사용하는 미들웨어입니다.
해당 패키지는 koajs에서 제공하는 미들웨어가 아닙니다. koa에서 cors를 컨트롤하기 위한 패키지입니다.
표준암호화 자바스크립트 라이브러리 패키지입니다.
JWT을 구현하기 위한 라이브러리입니다.
캐싱을 위한 패키지입니다. 자주 사용하는 데이터를 하나의 오브젝트에 보관하고 key-value 방식으로 사용합니다.
웹 프레임워크에서는 자주 요청하는 DB의 데이터를 캐시 오브젝트에 저장해놓고 요청이 들어올 때 DB에서 데이터를 찾기 전에 캐시 오브젝트에서 먼저 찾는 방식으로 활용합니다. 만약 캐시 오브젝트에 데이터가 있다면 해당 데이터를 꺼내 응답하면 되고, 반대로 데이터가 없다면 DB에서 데이터를 찾아 반환합니다.
메일 전송을 위한 패키지입니다.
ORM을 구현한 패키지입니다.
node 프로세스를 데몬으로 관리할 수 있도록 만들어주는 패키지입니다. 노드는 기본적으로 싱글 쓰레드로 동작하는데 pm2를 사용하면 여러 Node 프로세스를 구동할 수 있습니다.
참고로 개발 중 console log를 보기 위해선 pm2를 실행할 때 --no-daemon
옵션을 추가해야합니다.
노드 기반 로그 라이브러리입니다. console, file, http, stream, DB 등의 네트워킹과 전송 로그를 컨트롤할 수 있습니다.
winston과 같이 사용하기 위한 시간 포멧 라이브러리입니다. winston으로 출력할 로그의 시간 포멧을 moment로 설정하여 winston.format
과 조합할 수 있습니다.