[FedEx 스터디] 배포 플랫폼

상민·2023년 4월 2일
0

[FedEx] 스터디

목록 보기
7/10
post-thumbnail

배포 플랫폼

Vercel, Netlify, Heroku 같은 클라우드 플랫폼
→ 배포 과정이 거의 표준화되어 있으며 누구나 접근이 쉽도록 간소화

AWS, Azure, DigitalOcean 같은 클라우드 서비스 제공 업체
→ 배포 과정 전체를 완전히 제어할 수 있도록 지원

Vercel에 배포하기

Vercel에 배포하면 따로 설정해야 할 것이 거의 없다.

CLI 도구를 사용해 배포할 수도 있고 Git 브랜치에 코드를 푸쉬하면 자동으로 애플리케이션 배포도 할 수 있다.

Vercel은 오직 정적 사이트와 프론트엔드 프레임워크만을 위해 만들어 졌다.

따라서 별도의 Node.js 서버를 사용할 수 없음.

엄밀히 말하면 Vercel이 CSR 또는 정적으로 생성된 웹 사이트만 지원하는 것은 아님.

Vercel은 serverless function을 사용해서 SSR 페이지를 지원

Next.js 애플리케이션을 Vercel에 배포하면 serverless function 설정 작업을 알아서 해줌.

Vercel에서 GUI환경으로 프로젝트 저장소를 연결하여 배포할 수 있고

명령줄에서 모든 것을 수동으로도 할 수 있다.

Next.js를 사용하면 Vercel이 가장 쉽고 좋은 방법일 수 있다.

→ 프론트엔드 성능을 측정하고 분석하는 도구를 제공하기 때문

Netlify 도 좋은 선택지.

CDN에 정적 사이트 배포하기

CDN은 데이터 센터가 지리적으로 지리적으로 분산되어 있다

따라서 전 세계에 서비스나 콘텐츠를 제공할 때 높은 가용성과 성능을 보여줌.

Next.js로 만든 정적 생성 웹 사이트 같은 경우는 CDN에 배포하기 안성맞춤.

적절한 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을 실행할 수도 있음.

아무 서버에나 Next.js 배포하기

CDN, Vercel, Netlify 같은 관리형 인프라에 배포하는 방법의 장점은

  • 자동 배포
  • 이전 배포로의 롤백
  • 기능별 브랜치에 대한 자동 배포 지원
  • Node.js 환경이나 리버스 프록시 등 다양한 서버 설정 자동화
  • 내장 확장 기능

아주 큰 회사라면 대규모 인프라나 AWS같은 클라우드 서비스를 사용할 확률이 높음

아무것도 없는 빈 서버에서 시작하려면 다음과 같은 준비 작업이 필요하다.

  • Node.js 실행 환경 구성
  • 프로세스 관리자 설정
    PM2같은 프로세스 관리자를 사용해 Node.js 프로세스를 감시 및 관리
  • 리버스 프록시 사용
    → NGinX같은 리버스 프록시를 두어 보안 문제 해결
  • 방화벽 규칙 설정
    → 외부로부터 HTTP 요청을 받아서 처리할 수 있도록 :443 및 :80 포트를 열어야 한다.
  • 효율적인 개발 파이프라인 구성
    → Jenkins, CircleCI, Github Actions 등을 사용해서 CI/CD 파이프라인을 구성해야 한다.

도커 컨테이너에서 Next.js 애플리케이션 실행하기

도커를 사용해 가상 머신을 생성하여 운영체제에 관계없이 모든 서버에서 배포하고 실행할 수 있다

Dockerfile을 작성하고 build 명령어를 통해 이미지를 생성해 run 명령어로 실행 가능

도커가 설치된 모든 서버에서 애플리케이션을 실행할 수 있다.

애플리케이션을 실행하기 위해 간단한 환경 설정만 하면 되고, 복제하거나 확장하거나 다시 빌드하고자 할 때는 Dockerfile을 사용해서 이미지를 만들거나 미리 만들어둔 이미지로 애플리케이션을 실행하기만 하면 된다.

profile
FE Developer

0개의 댓글