Node Engine 수정하기
배경: 나는 http/3를 쓰고 싶었다
나는 nestjs에서 http/3을 사용하고 싶었다. 하지만 현재 node에서 http/3를 지원하지 않으므로 express나 fastify 역시 http/3를 쓸 수 없다.
어쩔 수 없다. 현시점(2022.12.10) http/3를 원하는 경우, Nginx나 Netty외엔 선택지가 없다. 이 이슈가 해결이 된다면, node(express든 fastify든 어디서든)에서도 http/3를 사용할 수 있을 것이다.
Node Engine Customization
실무에서 고작 http/3를 위해 node engine을 수정하고 있을 순 없다. 하지만 개인적으론 욕심이 났다. 나는 node에서 http/3를 쓰고 싶다. 이번에 http/3와 node engine에 대해 자세하게 공부하는 겸, 오픈소스 참여에 도전해보고자 했다.
서론은 이만 줄이고, 엔진을 내 입맛에 맞게 변경하고, 사용하는 방법을 알아보자.
1. Clone Node Project
터미널에서 다음 명령어를 실행시켜서, node 프로젝트를 복사한다.
git clone git@github.com:nodejs/node.git
2. Make Node Engine
터미널에서 다음 명령어를 실행시켜서, node engine을 만들어 본다.
make # 최초 수행 시간이 좀 오래 걸린다. 다른 걸 하면서 시간을 아끼길 추천 # 끝나면 `out/Release/node`로 엔진을 실행해본다.
3. Project Customization(Example)
node 명령어를 수행하면 나오는 "Welcome to Node.js $version.~" 문구를 수정해보자.
// lib/internal/repl.js line: 41을 확인
... 생략
esmLoader.loadESM(() => {
// Node.js -> NodeJS
// console.log(`Welcome to Node.js ${process.version}.\n` +
console.log(`Welcome to NodeJS ${process.version}.\n` +
'Type ".help" for more information.');
... 생략4. Test My Node Engine
3에서 변경한 내용이 잘 반영 되었는지 확인한다.
# 재빌드. 재빌드는 금방 끝난다. make # node 엔진 실행 out/Release/node # Welcome to NodeJS로 출력되는지 확인
이상으로 node engine 수정 방법을 알아보았다. 이걸 조금 응용하면, 사용자 정의 node engine을 충분히 만들 수 있다.
참고자료
Node.js에서 QUIC 설정/컴파일하기 참고로 위에서 참고하는 프로젝트는 더 이상 업데이트 되지 않는다. 고로 아직 http/3(QUIC)을 지원하지 않음.