현재 프로젝트를 진행하기 전 2번의 협업 시에 배포 및 CI/CD 작업을 다른 분이 해주셨다. 개인적으로 배포와 CI/CD 구축 작업을 경험해보고 싶어서 내가 해보겠다고 팀원들에게 이야기한 후 작업을 진행했다.
🔎 어떤 배포 서비스를 사용해야 할까??
Next.js로 구축한 웹 사이트는 어떤 호스팅 서비스를 이용해 배포해야 할지와 관련해 많은 고민을 했다. 구글에vercel vs netlify for next js
,vercel vs netlify vs github pages
와 같은 keyword로 검색 한 후 우리 웹 사이트에 적합한 배포 서비스를 찾기 위해 아래 글들을 읽어보았다.
🔎 vercel을 선택한 이유
고민을 하다 netlify와 vercel 중 하나를 선택하기로 했다. 무료 요금제인 상황에서 두 서비스의 큰 차이점이 없어 선택하기가 어려웠다.
- 두 서비스의 공통점
- Git 저장소와 연결하여 자동으로 빌드 및 배포
- 글로벌 CDN을 제공하여 전 세계 사용자에게 빠른 성능을 제공
- 프리티어(무료) 플랜이 있으며, 트래픽과 기능에 따라 추가 비용이 발생
- 그럼에도 vercel은 Next.js의 공식 호스팅 파트너로써 Next.js에 대한 강력한 지원(공식 지원 및 최적화)을 해주기 때문에 vercel을 선택하게되었다.
GitHub
를 통해 배포를 진행을 할 것이므로 GitHub 버튼을 선택해 Login을 해준다.Add GitHub Account
버튼을 통해 개인 저장소 뿐만 아니라 다른 organization을 선택할 수 있다.🔎 CI를 구축한 이유
- 위에서도 언급했듯이 vercel은 자동으로 CI/CD를 하기 때문에 CI 구축이 필요없다고 생각할 수 있다. 하지만 개인적으로 type이나 eslint error와 관련해 배포전에 check 해야겠다는 생각이 들었다. error가 있는 상황에서 프로그램이 정상적으로 동작한다면 개발자 입장에서는 정상적으로 동작하니 그대로 배포해야겠다는 생각을 할 수 있다.
- 지금은 실행에 문제가 없으나 그 오류가 쌓이고 쌓여서 실행에 직접적인 영향을 줄수도 있고 코드 품질 검사를 함으로써 장점이 많아
git action
을 통해 CI를 구축하기로 했다.- TypeScript 및 ESLint를 통해 코드 품질 검사 장점 => 잠재적 error 제거, 코드 안정성 확보, 가독성 향상, 유지/보수 시 도움
set up a workflow yourself
클릭name: 'Continuous Integration'
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
quality:
name: 'CI: Check quality'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: yarn install --frozen-lockfile
- name: Check typescript
run: yarn type:check
- name: Check eslint
run: yarn lint
Require status checks to pass before merging
를 check 하면 하단에 검색 input이 뜬다.배포 및 CI/CD 작업이 처음이라 쉽지 않을 것이라 예상했지만 vercel을 통해 쉽게 배포 할 수 있었다. CI 구축같은 경우는 많은 블로그 및 부트캠프 때 CI를 구축하신 분들이 어떻게 했는지 찾아보면서 해결할 수 있었다. 틀린 부분이나 수정할 부분 있으면 피드백 환영합니다!
https://velog.io/@mjooon98/Next.js-vercel%EC%97%90-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0