티스토리 뷰

728x90

도입

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

1. python과 gcc 버전 올리기

올리게 된 이유는 관련된 dependency가 있는 node-gyp에서 python3.6버전, gcc 5.2.0 이상을 요구했다.

  • python3 업데이트
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
  • gcc 업데이트
    #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

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

2. git version 올리기

husky 버전업 이슈


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

3. npm cache clean -f

npm cache clean -f 

를 실행해줬다. 앞서 npm6에 깔린 cache들을 전부 날려주고 다시 설치하기 위함.

4. npm isntall

git pull을 받아 앞서 적용된 node16에서의 package-lock.json이 존재한 상황이다.
npm install을 운영서버나 배포서버에서 자유롭게 설치가 가능해졌다.

5. forever app restartall

forever를 통해 restart 하면서 새롭게 적용된 node16이 완료됨.

6. 일부러 hotfix를 열어 자동배포가 가능한지 확인

특정서버로 자동배포가 되게 테스트를 진행함. 문제가 보이지 않아 일단은 완료.
혹시나 싶어 2-3일은 수동배포도 병행하도록 체크.

7. 개발팀에 node16설치방법 문서공유

node16으로 환경을 바꿔서 개발할 수 있도록 팀원에게 문서를 공유했고 미리 세팅을 할 수 있도록 조치를 취했다.

또한 먼저 올라온 PR의 경우에는 node16으로 적용하고 다시 테스트를 해본 뒤 적용하도록 요청을 드렸다.

8. node16

앞으로 해당 서비스는 node16으로 동작하면서 FE에서만 적용했던 javascript 새로운 문법을 BE에서도 사용할 수 있게 되었다.
팀원들이 코딩하는데에 불편사항을 해소시켜 줄 수 있어서 다행이다.

TODO

1. 앞으로 해야할 부분은 lagacy에 대한 peer dependency를 마저 조사하고 하나씩 버전업을 진행해야 한다.
2. code내에 우리가 따로 package.json에 명시하지 않은채 import해서 사용하고 있는 라이브러리는 없는지 추가 체크

참고사이트

GCC, G++ 다른 버전 추가하고 패키지 관리하기

반응형