본문 바로가기

개발 공부/nodejs

[섹션3-3] https, http2, Cluster

https는 웹 서버에 SSL 암호화를 추가하는 모듈이다. 요즘에는 http가 적용되어있는 곳은 아예 크롬에서 막아버리기도 하는 등 거의 필수가 되어버린 옵션이다.

 

 

const https = require('https');
const fs = require('fs');

https.createServer({
  cert: fs.readFileSync('도메인 인증서 경로'),
  key: fs.readFileSync('도메인 비밀키 경로'),
  ca: [
    fs.readFileSync('상위 인증서 경로'),
    fs.readFileSync('상위 인증서 경로'),
  ],
}, (req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
  res.write('<h1>Hello Node!</h1>');
  res.end('<p>Hello Server!</p>');
})
  .listen(443, () => {
    console.log('443번 포트에서 서버 대기 중입니다!');
  });

 

위의 코드처럼 공인된 기관에서 인증서를 구입해서 cert, key, ca에 넣어주면 적용이 된다. 가장 유명한 기관이 LetsEncrypt 같은 기관이다.

 

 

 

http2

http2는 기본적으로 https가 적용되어있으며 최신 프로토콜인 http/2를 사용하는 모듈이다. 동시성을 많이 늘려서 http1.1보다 개선된 속도를 가지고 있다고 한다.

 

물론 개발할 때는 인증서가 없으니까 http를 쓰다가 배포할 때 http2를 적용해봐야겠다.

 

 

 

Cluster

기본적으로 싱글 스레드인 노드가 CPU 코어를 모두 사용할 수 있게 해주는 모듈이다.

 

코어가 8개인 서버가 있다면 보통은 코어 하나만 활용하고 나머지는 놀게 된다. cluster로 코어 하나당 노드 프로세스 하나를 배정 해줄수 있다.

 

단점은 컨퓨터 자원을 공유를 못한다. 어디에서는 로그인 되고 어디에선 안되고 그럴 수 있다는 단점이 있다.

 

멀티스레드와도 비슷한점이 보이긴 한다.

 

그래도 편한 점은 포트 하나로 여러개의 프로레스를 둘 수 있다는 점이다.