목록

'Node.js' 5건

  • winston
    프로그래밍 언어/NODE JS · 댓글
    실제 서버를 운영할 때 console.log와 console.error를 대체하기 위한 모듈입니다.console.log와 console.error를 사용하면 개발 중에는 편리하게 서버의 상황을 파악할 수 있지만, 실제 배포 시에는 사용하기 어렵습니다. console 객체의 메서드들이 언제 호출되었는지 파악하기 힘들 뿐만 아니라 서버가 종료되는 순간 로그들도 사라지기 때문입니다. 에러가 발생하면 에러 메시지를 확인해야 하는데, 서버가 종료되어 에러 메시지들이 날아가버리는 황당한 일이 일어나게 됩니다. 이와 같은 상황을 방지하려면 로그를 파일이나 다른 데이터베이스에 저장해야 합니다. 이떄 winston을 사용합니다.winston을 설치하고 사용 방법을 간단히 알아보겠습니다. 너무나 다양한 방식으로 활용할 수..
  • pm2(1)
    프로그래밍 언어/NODE JS · 댓글
    pm2는 활한 서버 운영을 위한 패키지입니다. '개발할 때 nodemon을 쓴다면, 배포할 때는 pm2를 쓴다'는 말이 있을 정도로 유용합니다. 가장 큰 기능은 서버가 에러로 인해 꺼졌을 때 서 버를 다시 켜주는 것입니다. 또 하나의 중요한 기능은 바로 멀티 프로세싱입니다. 멀티 스레딩은 아니지만 멀티 프로세싱을 지 원하여 노드 프로세스 개수를 한 개 이상으로 늘릴 수 있습니다. 기본적으로는 CPU 코어를 하나 만 사용하는데, pm2를 사용해서 프로세스를 여러 개 만들면 다른 코어들까지 사용할 수 있습니다. 클라이언트로부터 요청이 올 때 알아서 요청을 여러 노드 프로세스에 고르게 분배합니다. 하 나의 프로세스가 받는 부하가 적어지므로 서비스를 더 원활하게 운영할 수 있습니다. 단점도 있습니다. 멀티 스레..
  • 간단한 콘솔 명령어 만들기(1)
    프로그래밍 언어/NODE JS · 댓글
    먼저 node-cli 폴더를 만들고 그 안에 package.json과 간단한 index.js를 생성합니다. package.json{ "name": "node-cli", "version": "0.0.1", "description": "nodejs cli program", "main": "index.js", "author": "Sally", "licence": "ISC"} index.js#!/usr/bin/env nodeconsole.log("Hello CLI"); index.js는 단순히 Hello CLI라는 문자열을 콘솔에 출력하는 파일이지만, 첫 줄의 주식이 눈에 뜁니다. #!/usr/bin/env node인데요. 주식이라는 의미 없는 문장이라고 생각할 수도 있지만, 리눅스나 맥 같은 유닉스..
  • 프로젝트 마무리하기
    프로그래밍 언어/NODE JS · 댓글
    마지막으로 낙찰자가 낙찰 내역을 볼 수 있도록 해보겠습니다. routes/index.jsconst express = require("express");const multer = require("multer");const path = require("path");const fs = require("fs");const schedule = require("node-schedule");const { Good, Auction, User, sequelize } = require("../models");const { isLoggedIn, isNotLoggedIn } = require("./middlewares");const router = express.Router();router.use((req, res, next..
  • 스케줄링 구현하기(2)
    프로그래밍 언어/NODE JS · 댓글
    node-schedule 패키지의 단점은 스케줄링이 노드 기반으로 작동하므로 노드가 종료되면 스케줄 예약도 같이 종료된다는 점입니다. 노드를 계속 켜두면 되지만, 서버가 어떤 에러로 인해 종료될지 예측하기는 매우 어렵습니다. 따라서 이를 보완하기 위한 보안하기 위한 방법이 필요합니다. 서버가 시작될 때 경매 시작 후 24시간이 지났지만 낙찰자가 없는 경매를 찾아서 낙찰자를 지정하는 코드를 추가해보겠습니다. checkAuction.jsconst { Op } = require("sequelize");const { Good, Auction, User, sequelize } = require("./models");module.exports = async () => { try { const yesterda..

winston

실제 서버를 운영할 때 console.log와 console.error를 대체하기 위한 모듈입니다.console.log와 console.error를 사용하면 개발 중에는 편리하게 서버의 상황을 파악할 수 있지만, 실제 배포 시에는 사용하기 어렵습니다. console 객체의 메서드들이 언제 호출되었는지 파악하기 힘들 뿐만 아니라 서버가 종료되는 순간 로그들도 사라지기 때문입니다. 에러가 발생하면 에러 메시지를 확인해야 하는데, 서버가 종료되어 에러 메시지들이 날아가버리는 황당한 일이 일어나게 됩니다. 이와 같은 상황을 방지하려면 로그를 파일이나 다른 데이터베이스에 저장해야 합니다. 이떄 winston을 사용합니다.winston을 설치하고 사용 방법을 간단히 알아보겠습니다. 너무나 다양한 방식으로 활용할 수..

pm2(1)

pm2는 활한 서버 운영을 위한 패키지입니다. '개발할 때 nodemon을 쓴다면, 배포할 때는 pm2를 쓴다'는 말이 있을 정도로 유용합니다. 가장 큰 기능은 서버가 에러로 인해 꺼졌을 때 서 버를 다시 켜주는 것입니다. 또 하나의 중요한 기능은 바로 멀티 프로세싱입니다. 멀티 스레딩은 아니지만 멀티 프로세싱을 지 원하여 노드 프로세스 개수를 한 개 이상으로 늘릴 수 있습니다. 기본적으로는 CPU 코어를 하나 만 사용하는데, pm2를 사용해서 프로세스를 여러 개 만들면 다른 코어들까지 사용할 수 있습니다. 클라이언트로부터 요청이 올 때 알아서 요청을 여러 노드 프로세스에 고르게 분배합니다. 하 나의 프로세스가 받는 부하가 적어지므로 서비스를 더 원활하게 운영할 수 있습니다. 단점도 있습니다. 멀티 스레..

간단한 콘솔 명령어 만들기(1)

먼저 node-cli 폴더를 만들고 그 안에 package.json과 간단한 index.js를 생성합니다. package.json{ "name": "node-cli", "version": "0.0.1", "description": "nodejs cli program", "main": "index.js", "author": "Sally", "licence": "ISC"} index.js#!/usr/bin/env nodeconsole.log("Hello CLI"); index.js는 단순히 Hello CLI라는 문자열을 콘솔에 출력하는 파일이지만, 첫 줄의 주식이 눈에 뜁니다. #!/usr/bin/env node인데요. 주식이라는 의미 없는 문장이라고 생각할 수도 있지만, 리눅스나 맥 같은 유닉스..

프로젝트 마무리하기

마지막으로 낙찰자가 낙찰 내역을 볼 수 있도록 해보겠습니다. routes/index.jsconst express = require("express");const multer = require("multer");const path = require("path");const fs = require("fs");const schedule = require("node-schedule");const { Good, Auction, User, sequelize } = require("../models");const { isLoggedIn, isNotLoggedIn } = require("./middlewares");const router = express.Router();router.use((req, res, next..

스케줄링 구현하기(2)

node-schedule 패키지의 단점은 스케줄링이 노드 기반으로 작동하므로 노드가 종료되면 스케줄 예약도 같이 종료된다는 점입니다. 노드를 계속 켜두면 되지만, 서버가 어떤 에러로 인해 종료될지 예측하기는 매우 어렵습니다. 따라서 이를 보완하기 위한 보안하기 위한 방법이 필요합니다. 서버가 시작될 때 경매 시작 후 24시간이 지났지만 낙찰자가 없는 경매를 찾아서 낙찰자를 지정하는 코드를 추가해보겠습니다. checkAuction.jsconst { Op } = require("sequelize");const { Good, Auction, User, sequelize } = require("./models");module.exports = async () => { try { const yesterda..