ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Heroku NodeJS 무료 서버 sleep 방지하기
    소소한 IT 이야기 2019. 5. 1. 11:11
    반응형

    저의 모든 NodeJS 앱들은 Heroku 서버 위에서 돌아가고있습니다. Heroku는 PaaS(Platform as a Service) 입니다. 개인 서버가 있긴하지만 git을 활용해서 deploy 하는 방법이 Heroku에선 자동으로 해주는 기능이 있어서 사용하는 이유가 큽니다. Github과 연동도 가능하구요.


    Heroku의 요금 정책을 확인해보면 Free Dynos의 경우 한달에 1000시간의 WakeUp 시간을 제공하고 있습니다. 한달에 41.6일 정도의 서비스를 제공할수 있다는 뜻인데 저의 경우에는 5개의 앱을 돌리므로 부족 할 수도 있습니다만 상시 작동하는 프로젝트가 그리 많지 않아서 우선 할당량을 제 포트폴리오 앱으로 지정하고 싶었습니다.


    포트폴리오 프로젝트의 경우 인사 담당자 분들이 접속했을때 바로바로 접속이 가능하여야하기 때문에 30분간 방문자가 없을 경우 자동으로 Sleep 모드로 진입하게됩니다. Sleep 모드 상태에서 접속을 시도할경우 대략 8~10초 정도의 대기기간이 필요한 상황은 사용자에게 안좋은 경험이기 때문에 Sleep 모드를 방지하는 방법을 찾아보았습니다.


    우선 여러가지 방법을 찾아보고 삽질도 했었지만 정말 간단하게 해결하는 방법이 있어서 공유합니다.


    바로 HTTP 모듈을 사용하는것인데요. 저의 경우에는 10분마다 접근을 시도해서 Sleep 모드가 활성화되지 않도록 설정하였습니다. 주소 URL을 수정하셔서 사용하시면 됩니다. 그 외에도 Heroku Dev Center에서 지원하는 애드온들이 있는것 같긴하지만 직접 코드로 직접 작동시키는게 가장 좋은 방법이 아닐까 합니다.


    최상단의 app.js 에 붙여넣어주시면 됩니다. 설정한 10분마다 http 모듈을 통해서 접근을 시도하기때문에 sleep 모드로 진입하지 않습니다.


    방법을 알고나니 정말 간단하게 구현이 가능했는데 이걸 PM2, supervisor 같은것들로 해보려고 많은 시간을 보낸걸 생각해보면 방법론을 빠르게 찾아 구현하는게 중요한 능력이 아닌가 싶습니다.


    1
    2
    3
    4
    5
    6
    7
    const http = require("http");
     
    /* Prevent Sleep in Heroku Server */
    setInterval(function () {
      http.get("http://expressme.herokuapp.com");
    }, 600000); // every 10 minutes
     
    cs


    반응형

    댓글

Designed by Tistory.