Vercel, Netlify, Heroku 같은 클라우드 플랫폼
→ 배포 과정이 거의 표준화되어 있으며 누구나 접근이 쉽도록 간소화
AWS, Azure, DigitalOcean 같은 클라우드 서비스 제공 업체
→ 배포 과정 전체를 완전히 제어할 수 있도록 지원
Vercel에 배포하면 따로 설정해야 할 것이 거의 없다.
CLI 도구를 사용해 배포할 수도 있고 Git 브랜치에 코드를 푸쉬하면 자동으로 애플리케이션 배포도 할 수 있다.
Vercel은 오직 정적 사이트와 프론트엔드 프레임워크만을 위해 만들어 졌다.
→ 따라서 별도의 Node.js 서버를 사용할 수 없음.
엄밀히 말하면 Vercel이 CSR 또는 정적으로 생성된 웹 사이트만 지원하는 것은 아님.
Vercel은 serverless function
을 사용해서 SSR 페이지를 지원
Next.js 애플리케이션을 Vercel에 배포하면 serverless function 설정 작업을 알아서 해줌.
Vercel에서 GUI환경으로 프로젝트 저장소를 연결하여 배포할 수 있고
명령줄에서 모든 것을 수동으로도 할 수 있다.
Next.js를 사용하면 Vercel이 가장 쉽고 좋은 방법일 수 있다.
→ 프론트엔드 성능을 측정하고 분석하는 도구를 제공하기 때문
Netlify
도 좋은 선택지.
CDN은 데이터 센터가 지리적으로 지리적으로 분산되어 있다
따라서 전 세계에 서비스나 콘텐츠를 제공할 때 높은 가용성과 성능을 보여줌.
Next.js로 만든 정적 생성 웹 사이트 같은 경우는 CDN에 배포하기 안성맞춤.
웹 애플리케이션을 배포할 수 있는 CDN은 대표적으로 AWS
, Azure
, Cloudflare
가 있음
CDN 배포는 몇 가지 설정 작업이 필요하지만 최고의 성능을 얻을 수 있음
Github Actions나 GitLab Pipelines를 사용해 정적 웹 애플리케이션을 만든 후 AWS S3에 업로드 하는 파이프라인을 만들고 AWS CDN인 CloudFront를 사용해 클라이언트가 정적 자원에 접근할 수 있도록 하고 AWS Route 53을 사용해 도메인과 CloudFront를 연결…
→ Vercel에 비해 배포 과정이 직관적이지 않음.
정적 웹 사이트와 상관 없이 AWS Lambda
, Azure Function
, Cloudflare Workers
등을 사용해서 serverless function을 실행할 수도 있음.
CDN, Vercel, Netlify 같은 관리형 인프라에 배포하는 방법의 장점은
아주 큰 회사라면 대규모 인프라나 AWS같은 클라우드 서비스를 사용할 확률이 높음
아무것도 없는 빈 서버에서 시작하려면 다음과 같은 준비 작업이 필요하다.
도커를 사용해 가상 머신을 생성하여 운영체제에 관계없이 모든 서버에서 배포하고 실행할 수 있다
Dockerfile
을 작성하고 build
명령어를 통해 이미지를 생성해 run
명령어로 실행 가능
도커가 설치된 모든 서버에서 애플리케이션을 실행할 수 있다.
애플리케이션을 실행하기 위해 간단한 환경 설정만 하면 되고, 복제하거나 확장하거나 다시 빌드하고자 할 때는 Dockerfile
을 사용해서 이미지를 만들거나 미리 만들어둔 이미지로 애플리케이션을 실행하기만 하면 된다.