Next.js 애플리케이션 개발은 초기 단계에 불과하며, 그 다음으 중요한 단계는 배포입니다. 이 프로세스에는 인터넷을 통해 사용자가 애플리케이션을 사용할 수 있도록 하는 작업이 포함됩니다. 효과적인 배포 전략은 애플리케이션의 성능, 확장성, 안정성을 보장하는 데 매우 중요합니다. 이 가이드에서는 Next.js 앱을 성공적으로 배포하기 위한 단계를 안내합니다.
Next.js는 프로덕션에 즉시 사용 가능한 웹사이트를 더 쉽게 빌드하고 자동으로 최적화할 수 있는 기능을 추가하여 React를 기반으로 빌드된 React 프레임워크입니다.
간단히 말해 Next.js는 React로 최신 앱을 빌드하는 데 도움이 되는 프레임워크입니다. 서버를 지원하며, 파일 전송을 작게 유지하면서도 빠른 결과를 얻을 수 있도록 최적화된 이미지와 구성요소를 갖추고 있습니다.
둘 다 비슷해 보이고 JavaScript를 실행하지만 수행하는 작업과 기능에는 큰 차이가 있습니다.
특성 | React(기본값) | Next.js |
SEO 친화성 | 어려울 수 있음 | SEO 친화적 |
초기 로드 성능 | 더 느림 | 더 빠름 |
데이터 가져오기 | 수동 구현 필요 | getServerSideProps 및 getStaticProps와 함께 기본 제공 |
라우팅 | 라우팅 라이브러리(예: React 라우터) 사용 | 파일 시스템 기반 라우팅 |
복잡성 | 더 간편함 | 즉시 사용 가능한 구성 |
React(기본값)
Next.js
SEO 친화성
어려울 수 있음
SEO 친화적
초기 로드 성능
더 느림
더 빠름
데이터 가져오기
수동 구현 필요
getServerSideProps 및 getStaticProps와 함께 기본 제공
라우팅
라우팅 라이브러리(예: React 라우터) 사용
파일 시스템 기반 라우팅
복잡성
더 간편함
즉시 사용 가능한 구성
대부분의 React 앱에서 단계는 일반적으로 동일하지만 Next.js 프레임워크를 사용하는 것이 좋습니다. 고성능 및 고급 수준 요구사항의 경우 이 프레임워크는 앱을 보다 효율적으로 확장하고 React 사이트의 SEO를 최적화하는 데 도움이 되는 많은 구성요소를 관리합니다.
모든 세부정보와 코드 요구사항이 포함되도록 터미널을 사용하여 템플릿을 생성해야 합니다.
터미널 사용:
npx create-next-app@latest
따라 하려면 몇 가지 구성도 필요합니다.
필요한 요소, 필요한 정보(서버 또는 클라이언트 정보), 이러한 정보가 있는 위치에 대한 안내가 필요합니다. 이는 빌드에서 기대할 수 있는 것입니다.
"성능과 속도가 중요합니다."
다시 말하지만, 서버 또는 클라이언트 측 구성요소를 원하는 부분을 준비하는 데 도움이 될 수 있습니다.
이제 코드를 업데이트하고 레이아웃을 보기 좋게 만듭니다.
이와 관련된 정보가 필요할 수 있으므로 이 문서를 참고하세요.
이제 이러한 변경사항을 적용했으므로 설정이 완료되었습니다. 렌더링되도록 허용합니다.
최적의 검색엔진 최적화를 위해서는 웹사이트 속도가 중요합니다. JavaScript 자체는 렌더링 속도를 늦추고 검색 성능에 부정적인 영향을 미칠 수 있습니다. 하지만 Next.js를 사용하면 이 문제를 완화할 수 있습니다. 따라서 사이트에서 빠른 로딩 환경과 효율적인 데이터 관리를 우선시해야 합니다. 강력한 보안과 최고 품질의 제품을 위해서는 테스트 데이터를 신중하게 사용하고 개인 정보 보호 및 액세스를 준수해야 합니다.
클라이언트 측 라우팅
대부분의 React 앱은 react-router-dom과 같은 라이브러리를 사용하여 탐색을 처리합니다. 브라우저에서 발생하므로 호스팅 서버가 이를 지원하도록 구성되어 있어야 합니다. 일반적으로 이는 모든 페이지 요청을 루트 index.html 파일로 전달하여 React 라우터가 이를 처리하고 올바른 구성요소를 표시하도록 하는 것을 의미합니다.
환경 변수
애플리케이션에는 API 키 또는 데이터베이스 엔드포인트와 같이 개발 및 프로덕션에 서로 다른 구성이 필요할 수 있습니다. 소스 코드에 민감한 정보가 노출되지 않도록 환경 변수(예: .env 파일을 통해)를 사용하여 이러한 정보를 관리하는 것이 중요합니다.
백엔드 API 통신
React 프런트엔드는 UI를 담당하지만 일반적으로 백엔드 API에서 동적 데이터를 가져옵니다. 배포할 때는 React 애플리케이션이 프로덕션 API의 올바른 URL을 알고 있는지 확인하고 API가 다른 도메인에서 호스팅되는 경우 교차 출처 리소스 공유(CORS)를 처리하도록 구성해야 합니다.
제대로 전송하려면 데이터 및 전송 설정에 대한 모든 관련 세부정보를 구현했는지 확인하세요.
이러한 단계를 사용하여 각 단계에 프로젝트에 필요한 모든 세부정보가 포함되도록 합니다.
# 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와 같은 플랫폼을 사용하고 구성 파일을 연결합니다.
이제 Cloud Run이 이를 처리하는 최종 방법이 되도록 하되, 도움이 되는지, 올바른지 염두에 두세요. 주요 도구와 코드를 참조하여 원활하게 실행되도록 하세요.
Firebase는 배포하기에 좋은 플랫폼이므로 이 간단한 단계를 기억해 두세요. Firebase에서 Next.js를 통합할 준비가 되셨나요? 전체 문서를 참고하세요.
이 이미지 또는 문서에 필요한 구성(SSL 필요)을 따라 모든 것이 안전하게 작동하도록 합니다.
CLI, Firebase가 설치되고 작동하는 방식을 후속 조치로 확인합니다.
npm install -g firebase-tools
'Firebase Init - Hosting'을 따릅니다.
URL이 다시 작성되고 명령줄에서 정확한지 확인합니다.
'no'와 함께 사용합니다. 이렇게 하면 모든 것이 배포될 때 문제가 발생하지 않습니다.
로컬 테스트가 권장되며, 이를 위해서는 로컬 호스트 코드가 필요합니다.
CLI를 인증한 후 이 저장소에 푸시합니다.
이제 다음을 업로드합니다.
Cloud Run의 일반적인 개발 팁 전체 목록은 이 문서를 참조하세요.