그건 바로 node-gyp 

---

요즘은 본전공 문제로 기존 운영하던 시스템을 손을 못봣음

이렇게 안하면 계속 안할까봐 근 2달만에 다시 만지려고 햇는데 뭘 해야할지가 감이 안잡히더라

그래 일단 프로그래밍 언어 런타임 이미지나 라이브러리들을 lts / stable 로 업데이트부터 하자 라는 마음으로 잡초부터 뽑앗음

어김없이 에러 발생

사용하던 메시지 브로커의 ts/js 클라이언트가 의존하는 라이브러리들 중 하나를 찾을수없다며 메시지 브로커가 연결이 안되더라

메시지를 보니 murmurhash3 이라는, murmurhash 의 js 구현체를 찾지못하던 상황이엇음

그런데 그게 말이 js 구현체지, 레포를 보니 cpp 로 구현한 라이브러리엿던 것

해당 라이브러리가 설치되는 순간 node-gyp 라는 노드의 빌드 툴이 g++ 같은 컴파일러와 함께 돌면서 라이브러리의 cpp 코드 빌드가 이뤄짐

이 오류는 컨테이너를 빌드하는 과정에서 그 이미지 안에 컴파일러가 존재하지 않아 발생햇던 거엿고, 그래서 g++, 혹은 그것이 포함된 build-essential 등을 컨테이너를 빌드하는 단계에서 nodejs 라이브러리를 설치하기 전 명시적으로 설치해주는 식으로 해결햇음

---

여기서 이제 궁금증이 생긴 부분은 gyp 를 사용한 cpp 와 js 간의 연결임

간혹 “모 라이브러리(최근은 pydantic 의 rust 라든지)의 코어 부분이 c/cpp/rust 로 재작성되어 성능적인 개선이 이뤄졋다” 라는 이야기가 들렷을때 어떻게 연결이 되나 궁금햇엇는데 그걸 이번김에 좀 찾아보려고 함

겸사겸사 murmurhash3 도 찾아보고

브로커 메인테이너/커미터들이 이런 사례를 겪는 사람이 좀 잇어서 관련 스레드에서 이야기하다가 글하나 써주면 좋겟다해서, 관련 작업도 하면서 물어봐야겟슴

---

관련 경험자들(사실 본체는 cpp/c 로 짯지만 표면상으론 스크립트 언어인 라이브러리를 만들어 보앗다든가)의 경험담이 잇다면 매우 흥미롭게 듣겟슴