Next.js 앱 만들기 및 배포 가이드

Next.js 애플리케이션 개발은 초기 단계에 불과하며, 그 다음으 중요한 단계는 배포입니다. 이 프로세스에는 인터넷을 통해 사용자가 애플리케이션을 사용할 수 있도록 하는 작업이 포함됩니다. 효과적인 배포 전략은 애플리케이션의 성능, 확장성, 안정성을 보장하는 데 매우 중요합니다. 이 가이드에서는 Next.js 앱을 성공적으로 배포하기 위한 단계를 안내합니다.

Cloud Run에서 Next.js 앱 실행

Next.js 프레임워크란 무엇인가요?

Next.js는 프로덕션에 즉시 사용 가능한 웹사이트를 더 쉽게 빌드하고 자동으로 최적화할 수 있는 기능을 추가하여 React를 기반으로 빌드된 React 프레임워크입니다. 

간단히 말해 Next.js는 React로 최신 앱을 빌드하는 데 도움이 되는 프레임워크입니다. 서버를 지원하며, 파일 전송을 작게 유지하면서도 빠른 결과를 얻을 수 있도록 최적화된 이미지와 구성요소를 갖추고 있습니다.

React(기본값)와 Next.js의 차이점

둘 다 비슷해 보이고 JavaScript를 실행하지만 수행하는 작업과 기능에는 큰 차이가 있습니다.

특성

React(기본값)

Next.js

SEO 친화성

어려울 수 있음

SEO 친화적

초기 로드 성능

더 느림

더 빠름

데이터 가져오기

수동 구현 필요

getServerSideProps 및 getStaticProps와 함께 기본 제공

라우팅

라우팅 라이브러리(예: React 라우터) 사용

파일 시스템 기반 라우팅

복잡성

더 간편함

즉시 사용 가능한 구성

특성

React(기본값)

Next.js

SEO 친화성

어려울 수 있음

SEO 친화적

초기 로드 성능

더 느림

더 빠름

데이터 가져오기

수동 구현 필요

getServerSideProps 및 getStaticProps와 함께 기본 제공

라우팅

라우팅 라이브러리(예: React 라우터) 사용

파일 시스템 기반 라우팅

복잡성

더 간편함

즉시 사용 가능한 구성

Next.js 앱을 만드는 방법

대부분의 React 앱에서 단계는 일반적으로 동일하지만 Next.js 프레임워크를 사용하는 것이 좋습니다. 고성능 및 고급 수준 요구사항의 경우 이 프레임워크는 앱을 보다 효율적으로 확장하고 React 사이트의 SEO를 최적화하는 데 도움이 되는 많은 구성요소를 관리합니다.

모든 세부정보와 코드 요구사항이 포함되도록 터미널을 사용하여 템플릿을 생성해야 합니다. 

터미널 사용:

npx create-next-app@latest

따라 하려면 몇 가지 구성도 필요합니다.

필요한 요소, 필요한 정보(서버 또는 클라이언트 정보), 이러한 정보가 있는 위치에 대한 안내가 필요합니다. 이는 빌드에서 기대할 수 있는 것입니다.

"성능과 속도가 중요합니다."

다시 말하지만, 서버 또는 클라이언트 측 구성요소를 원하는 부분을 준비하는 데 도움이 될 수 있습니다.

이제 코드를 업데이트하고 레이아웃을 보기 좋게 만듭니다.

이와 관련된 정보가 필요할 수 있으므로 이 문서를 참고하세요.

이제 이러한 변경사항을 적용했으므로 설정이 완료되었습니다. 렌더링되도록 허용합니다.

Next.js 앱을 만들 때 주요 고려사항

최적의 검색엔진 최적화를 위해서는 웹사이트 속도가 중요합니다. JavaScript 자체는 렌더링 속도를 늦추고 검색 성능에 부정적인 영향을 미칠 수 있습니다. 하지만 Next.js를 사용하면 이 문제를 완화할 수 있습니다. 따라서 사이트에서 빠른 로딩 환경과 효율적인 데이터 관리를 우선시해야 합니다. 강력한 보안과 최고 품질의 제품을 위해서는 테스트 데이터를 신중하게 사용하고 개인 정보 보호 및 액세스를 준수해야 합니다.

클라이언트 측 라우팅

대부분의 React 앱은 react-router-dom과 같은 라이브러리를 사용하여 탐색을 처리합니다. 브라우저에서 발생하므로 호스팅 서버가 이를 지원하도록 구성되어 있어야 합니다. 일반적으로 이는 모든 페이지 요청을 루트 index.html 파일로 전달하여 React 라우터가 이를 처리하고 올바른 구성요소를 표시하도록 하는 것을 의미합니다.

환경 변수

애플리케이션에는 API 키 또는 데이터베이스 엔드포인트와 같이 개발 및 프로덕션에 서로 다른 구성이 필요할 수 있습니다. 소스 코드에 민감한 정보가 노출되지 않도록 환경 변수(예: .env 파일을 통해)를 사용하여 이러한 정보를 관리하는 것이 중요합니다.

백엔드 API 통신

React 프런트엔드는 UI를 담당하지만 일반적으로 백엔드 API에서 동적 데이터를 가져옵니다. 배포할 때는 React 애플리케이션이 프로덕션 API의 올바른 URL을 알고 있는지 확인하고 API가 다른 도메인에서 호스팅되는 경우 교차 출처 리소스 공유(CORS)를 처리하도록 구성해야 합니다.


Cloud Run에 Next.js 앱을 배포하는 방법

Cloud Run은 최대 일관성과 이식성을 제공하는 컨테이너 기반 워크플로를 사용하려는 경우 React 앱을 배포하기에 적합한 선택입니다. 빠른 시작 가이드를 통해 Cloud Run에서 Next.js React 앱을 빌드하고 배포해 보세요. 

1단계: 애플리케이션 확인

제대로 전송하려면 데이터 및 전송 설정에 대한 모든 관련 세부정보를 구현했는지 확인하세요.

2단계: Next.js 빌드, Docker 생성

이러한 단계를 사용하여 각 단계에 프로젝트에 필요한 모든 세부정보가 포함되도록 합니다.

# Install dependencies only when needed

FROM node:16-alpine AS deps

# Check https://github.com/nodejs/docker-node/tree/b4117f933ba60658f2812f36b8

117330a1dc25ab#alpine

RUN apk add --no-cache libc6-compat

WORKDIR /app

COPY package.json package-lock.json ./

RUN npm ci


# If using turbo, uncomment this section as well:

# COPY turbo.json ./

# COPY .gitignore ./


# Add env variable

ENV NEXT_TELEMETRY_DISABLED 1


# Rebuild hook allows to check what and what not to include

RUN npm run build


###############

#### Stage 2: Production image ###

###############


 FROM node:16-alpine AS runner


WORKDIR /app


# NEXT_PUBLIC_... env variables during build time.

ENV NODE_ENV production


# you only need to copy next.config.js if you are using a custom config file

COPY --from=builder /app/next.config.js ./

COPY --from=builder /app/public ./public

COPY --from=builder /app/.next ./.next

COPY --from=builder /app/node_modules ./node_modules

COPY --from=builder /app/package.json ./package.json


# See details in: https://cloud.google.com/run/docs

/configuring/traffic

ENV PORT 8080


EXPOSE 8080


CMD ["npm", "start"]

# Install dependencies only when needed

FROM node:16-alpine AS deps

# Check https://github.com/nodejs/docker-node/tree/b4117f933ba60658f2812f36b8

117330a1dc25ab#alpine

RUN apk add --no-cache libc6-compat

WORKDIR /app

COPY package.json package-lock.json ./

RUN npm ci


# If using turbo, uncomment this section as well:

# COPY turbo.json ./

# COPY .gitignore ./


# Add env variable

ENV NEXT_TELEMETRY_DISABLED 1


# Rebuild hook allows to check what and what not to include

RUN npm run build


###############

#### Stage 2: Production image ###

###############


 FROM node:16-alpine AS runner


WORKDIR /app


# NEXT_PUBLIC_... env variables during build time.

ENV NODE_ENV production


# you only need to copy next.config.js if you are using a custom config file

COPY --from=builder /app/next.config.js ./

COPY --from=builder /app/public ./public

COPY --from=builder /app/.next ./.next

COPY --from=builder /app/node_modules ./node_modules

COPY --from=builder /app/package.json ./package.json


# See details in: https://cloud.google.com/run/docs

/configuring/traffic

ENV PORT 8080


EXPOSE 8080


CMD ["npm", "start"]

이제 배포해야 합니다. Cloud Build와 같은 플랫폼을 사용하고 구성 파일을 연결합니다.

3단계: 클라우드를 활용하여 최종적으로 출시

이제 Cloud Run이 이를 처리하는 최종 방법이 되도록 하되, 도움이 되는지, 올바른지 염두에 두세요. 주요 도구와 코드를 참조하여 원활하게 실행되도록 하세요.

Firebase에 Next.js 앱을 배포하는 방법

Firebase는 배포하기에 좋은 플랫폼이므로 이 간단한 단계를 기억해 두세요. Firebase에서 Next.js를 통합할 준비가 되셨나요? 전체 문서를 참고하세요.

1단계: 공개 서버 설정 준비하기

이 이미지 또는 문서에 필요한 구성(SSL 필요)을 따라 모든 것이 안전하게 작동하도록 합니다.

2단계: 설정 및 설치(CMD)

CLI, Firebase가 설치되고 작동하는 방식을 후속 조치로 확인합니다.

npm install -g firebase-tools

3단계: 프로젝트 연결 및 구성

'Firebase Init - Hosting'을 따릅니다.

URL이 다시 작성되고 명령줄에서 정확한지 확인합니다.

'no'와 함께 사용합니다. 이렇게 하면 모든 것이 배포될 때 문제가 발생하지 않습니다.

Google Cloud로 비즈니스 문제 해결

신규 고객에게는 Google Cloud에서 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.

테스트 권장사항

로컬 테스트가 권장되며, 이를 위해서는 로컬 호스트 코드가 필요합니다.

CLI를 인증한 후 이 저장소에 푸시합니다.

  • gcloud auth configure-docker

이제 다음을 업로드합니다.

  • docker tag [IMAGE_NAME] gcr.io/[PROJECT-ID]/[IMAGE_NAME]
  • Gcloud container images and push it in

Cloud Run의 일반적인 개발 팁 전체 목록은 이 문서를 참조하세요.

다음 단계 수행

$300의 무료 크레딧과 20여 개의 항상 무료 제품으로 Google Cloud에서 빌드하세요.

Google Cloud