우리는 앞선 아티클에서 http가 아닌 https 모듈을 사용하는 예제를 살펴보았습니다.
이번 아티클에서는 https와 또 다른 또 하나의 모듈, http2 모듈을 사용하는 방식에 대해서도 살펴보겠습니다. 간단하게 http2 모듈을 사용하게 되면 최신의 HTTP 프로토콜인 http/2를 사용할 수 있게됩니다. http/2 프로토콜은, 우리가 기존에 사용하던 http/1.1 프로토콜 대비 req와 res 방식이 크게 개선되어 효율성을 높였고, 동시에 이로 인해서 웹의 속도 자체가 많이 빨라지는 효과를 가져오게 됩니다.
개념적으로 보면, http/1.1의 경우 아래와 같은 프로세스를 거치게 됩니다.
(1) 클라이언트 ~ 서버 연결
(2) GET /index.html
(3) 서버 > 클라이언트 응답
(4) GET /styles.css
(5) 서버 > 클라이언트 응답
(6) GET /scripts.js
(7) 서버 > 클라이언트 응답
(8) 페이지 렌더링
(9) 연결 종료
http/2의 경우에는 다음과 같은 프로세스를 거치게 됩니다.
(1) 클라이언트 ~ 서버 연결
(2) GET /index.html
(3) 서버 > 클라이언트 응답
(4) GET /styles.css, GET /scripts.js
(5) 서버 > 클라이언트 응답(병렬)
(6) 페이지 렌더링
(7) 연결 종료
물론 http/1.1도 파이프라인이라는 기술을 사용하므로 극단적인 차이가 발생하는 것은 아니지만, http/2가 훨씬 더 효율적인 것은 변함 없습니다.
앞선 예제에서 일부 코드를 수정해 http2 모듈을 적용해 보겠습니다.
const http2 = require('http2');
const fs= require('fs');
http2.createSecureServer({
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 WORLD</h1>');
res.end('<h1>HELLO SERVER</h1>');
})
.listen(443, () => {
console.log('443포트 대기중...');
});
바뀐 것은 크게 없습니다. http2 모듈을 사용하고, createServer 메서드가 createSecureServer로 바뀐 정도입니다.
'Programming > Node.js' 카테고리의 다른 글
5. http 모듈로 서버 만들기 (5) - cluster [2/2] (0) | 2024.08.13 |
---|---|
5. http 모듈로 서버 만들기 (5) - cluster [1/2] (0) | 2024.08.08 |
5. http 모듈로 서버 만들기 (4) - https와 http2 [1/2] (0) | 2024.08.05 |
5. http 모듈로 서버 만들기 (3) - 쿠키와 세션의 이해 [7] (0) | 2024.08.01 |
5. http 모듈로 서버 만들기 (3) - 쿠키와 세션의 이해 [6] (0) | 2024.07.31 |