Node.js 12에서 16로 한번에 업데이트 적용후기 - 환경 세팅편에 이어 2번째 편이다.
배포 프로세스(무중단 배포 등)에 대해 자세히 다루긴 어렵지만 간단하게 어떻게 환경들을 맞춰나가고 진행을 해나갔는지만 적어보자.
무중단 배포와 관련해서는 앞으로 구름 블로그 또는 팀원으로 들어오시면 더 자세하게 알 수 있습니다!!
앞서 우리 환경은 다음과 같았다.
제목 | 개발서버 | 배포서버 | 운영서버 |
---|---|---|---|
ubuntu | 18.04 | 16.04 | 18.04 |
python | 3.7.2 | 3.5 | 3.5 |
gcc | 7.4.0 | 4.8 | 4.8 |
node.js | 12.xx | 12.0x | 12.xx |
npm | 6.xx | 6.xx | 6.xx |
올리게 된 이유는 관련된 dependency가 있는 node-gyp에서 python3.6버전, gcc 5.2.0 이상을 요구했다.
python3 --version
# Python 3.5.2
sudo add-apt-repository ppa:deadsnakes/ppa # 해당 PPA가 python 공식인듯? 최근 3.9까지 릴리즈함.
sudo apt-get update
sudo apt-get install python3.6 -y
# python3 버전 수동 변경
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 2
# 해당 버전 선택
sudo update-alternatives --config python3
There are 2 choices for the alternative python3 (providing /usr/bin/python3).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/python3.5 2 auto mode
1 /usr/bin/python3.5 2 manual mode
2 /usr/bin/python3.6 1 manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
python3 --version
# Python 3.6.2
#ppa 추가
add-apt-repository ppa:ubuntu-toolchain-r/test
apt-get update
apt-get install gcc-5 g++-5
# 버전확인
gcc --version
g++ --versionn
# 패키지 관리 목록
sudo update-alternatives --display gcc
# sudo update-alternatives --install <link> <name> <path> <priority>
## priority가 낮으면 높은 우선순위
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20
sudo update-alternatives --config gcc
There are 2 choices for the alternative gcc (providing /usr/bin/gcc).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/gcc-4.8 20 auto mode
1 /usr/bin/gcc-4.8 20 manual mode
2 /usr/bin/gcc-5 10 manual mode
Press enter to keep the current choice[*], or type selection number: 2
husky에서 요구하는 최소 버전이 2.13.0 이상이다.
2.7.4을 사용하고 있었기에 올릴 필요가 있었다.
sudo add-apt-repository ppa:git-core/ppa -y
sudo apt-get update
sudo apt-get install git -y
npm cache clean -f
를 실행해줬다. 앞서 npm6에 깔린 cache들을 전부 날려주고 다시 설치하기 위함.
git pull을 받아 앞서 적용된 node16에서의 package-lock.json이 존재한 상황이다.
npm install을 운영서버나 배포서버에서 자유롭게 설치가 가능해졌다.
forever를 통해 restart 하면서 새롭게 적용된 node16이 완료됨.
특정서버로 자동배포가 되게 테스트를 진행함. 문제가 보이지 않아 일단은 완료.
혹시나 싶어 2-3일은 수동배포도 병행하도록 체크.
node16으로 환경을 바꿔서 개발할 수 있도록 팀원에게 문서를 공유했고 미리 세팅을 할 수 있도록 조치를 취했다.
또한 먼저 올라온 PR의 경우에는 node16으로 적용하고 다시 테스트를 해본 뒤 적용하도록 요청을 드렸다.
앞으로 해당 서비스는 node16으로 동작하면서 FE에서만 적용했던 javascript 새로운 문법을 BE에서도 사용할 수 있게 되었다.
팀원들이 코딩하는데에 불편사항을 해소시켜 줄 수 있어서 다행이다.
1. 앞으로 해야할 부분은 lagacy에 대한 peer dependency를 마저 조사하고 하나씩 버전업을 진행해야 한다.
2. code내에 우리가 따로 package.json에 명시하지 않은채 import해서 사용하고 있는 라이브러리는 없는지 추가 체크