본문 바로가기

노드

[node.js] node.js 에서 express서버를 구축할 때 포트 지정 시 process.env.PORT 를 사용하는 이유

반응형

node.js 에서 일반적으로 포트를 개설할 때 아래 두 가지 방식 중에 하나를 사용합니다. 일반적으로 아래 예시 중 전자의 방식을 자주 사용하는데, 전자 보다는 후자의 방식을 사용하는 것이 더욱 안전합니다.

// 포트번호를 직접 지정한 경우
const port = 3000
app.listen(port,()=>{
    console.log(port +'포트로 대기중 입니다.')
})
----------------------------------------
//process.env.URL 를 사용한 경우
const port = process.env.URL || 3000;
app.listen(port,()=>{
    console.log(port +'포트로 대기중 입니다.')
})

 

일단, 전자의 방식을 사용하는 것을 권장하지 않는 이유 우리가 만든 애플리케이션을 클라우드 플랫폼에 배포하게 되는 경우 해당 플랫폼에서 포트를 동적으로 자기들이 알아서 지정해주기 때문입니다. 이 때, 전자의 방식을 사용하게 되는 경우 하드코딩이 되어 있기 때문에 예상치 못한 에러가 발생할 수 있습니다.

 

그러나, 후자의 방식을 사용하는 경우, process.env 즉, 환경변수 정보를 가지고 있는 env 객체의 속성 중에서 PORT 라는 속성은 동적으로 할당되는 포트를 저장하기 때문에, 만일 클라우드 플랫폼에서 동적으로 포트를 지정하더라도 문제없이 할당 받을 수 있게 됩니다.

 

따라서, process.env.URL || '기타 포트번호' 형식으로 port 변수를 지정함으로써 , 동적으로 지정된 포트가 존재하지 않는 경우에만 '기타 포트번호'로 지정한 포트가 개설되도록 설정함으로써 예상치 못한 에러를 사전에 차단하여 보다 안전한 서버 배포가 가능하게 됩니다.

 

 

요약하자면..

서버를 클라우드 플랫폼에 배포할 일이 없거나, 배포하더라도 동적으로 포트를 지정받을 필요가 없는 경우에는 전자의 방식을 사용해도 좋으나, 예상치 못한 문제를 사전에 차단하기 위해서는 후자의 방식으로 사용하는 것이 좋습니다.

 

const express = require('express');
const app = express();

const PORT = process.env.PORT || 3000;

app.listen(PORT, () => {
  console.log(`서버가 ${PORT}번 포트에서 시작되었습니다.`);
});

 

반응형