Situation

인프라팀에서 NAT를 제거했다. 외부 인터넷 접속망을 차단했다는 의미가 되겠다.

NAT란?

풀어서 네트워크 변환, IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술을 말한다.

사설 IP를 공인 IP로 변경하기 위해 필요한 주소 변환 서비스이다.

Issue

백엔드는 사전에 작업을 진행했다는데 프론트 쪽이 젠킨스 build 에러가 났다.

왜 NAT를 차단했다고 빌드가 되지 않는 것일까?

Answer

우리는 의존성, 패키지등을 저장하는 용도로 Nexus Repository를 사용하는데, 실제 실행할 때 1차로 Nexus Repository에 있는 패키지들을 탐색한다.

그러다, Nexus에 없는 패키지들이 생기면, npm은 인터넷을 통해 패키지들을 install 해온다.

1차로 Nexus에서 패키지들을 전부 install 했어야 했는데, 누락된 패키지들이 존재했고,

따라서 npm은 인터넷을 통해 가져와야 하는데 NAT를 끊어버렸으니 install을 하지 못해 젠킨스 빌드를 실패한 것이다.

누락된 패키지들은 어떠한 이유로 누락되었을까?


Front-End

Cause 1 - npmmirror

Nexus Repository에 올라가 있는 npm 패키지들을 프로젝트에서 읽어오는데, url 경로가 맞지 않았다.