티스토리 뷰
도입
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에서 요구하는 최소 버전이 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해서 사용하고 있는 라이브러리는 없는지 추가 체크
참고사이트
'Problem Solving > 작업일기' 카테고리의 다른 글
EUC-KR 인코딩을 사용하는 서버와 통신하기 (0) | 2023.10.09 |
---|---|
Node.js 12에서 16로 한번에 업데이트 적용후기 - 환경 세팅편 (1) | 2023.10.08 |
- Total
- Today
- Yesterday
- Content-Type
- 트랜잭션
- 클린코드
- SSAFY 퇴소
- 디자인시스템
- SSAFY 특화프로젝트 회고
- S3
- JRE
- 너디너리데모데이
- HTTP
- PresignedURL
- 디미터법칙
- 점진적개선
- 콘웨이법칙
- nodejs 버전 관리
- 필수단어
- 자바기초
- nodejs
- AntPattern
- PUT vs POST
- 소프트웨어개발프로세스
- 개발기록
- 개발프로세스
- LTS 개선
- application/x-www-form-urlencoded
- charset
- UI/UX
- 동기/비동기
- 2022년 회고
- 블로킹/논블로킹
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |