배경: 나는 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)을 지원하지 않음.
'IT' 카테고리의 다른 글
PostgreSQL에 사용자와 권한 추가하기(CREATE USER, GRANT PERMISSIONS) (0) | 2023.01.28 |
---|---|
Typia(이전 명칭: TSON) 사용 후기 (0) | 2022.12.15 |
Android emulator에서 Push notification이 수신되지 않을 때 (0) | 2022.12.04 |
[Refactoring 2판]에 대한 내 생각과 비판 (0) | 2022.11.13 |
스벨트에서 readable만 노출하기(Svelte - writable to readable) (0) | 2022.10.10 |