사용 가이드

프리뷰·프로덕션·승격·롤백

배포가 어떻게 프로덕션이 되고, 어떻게 되돌리는지, 각 배포의 주소와 한도를 설명합니다.

핵심 원리: 배포는 바뀌지 않고, 주소만 옮겨 다닙니다

ntro deploy를 실행할 때마다 새 배포가 하나 생깁니다. 한 번 만들어진 배포는 절대 바뀌지 않습니다(불변). 대신 프로덕션 주소 my-app.ntro.run이 "지금 어느 배포를 보여 줄지"를 가리키는 화살표처럼 동작합니다.

  • 승격(promote): 화살표를 확인을 마친 프리뷰 배포로 옮깁니다.
  • 롤백(rollback): 화살표를 예전 배포로 되돌립니다.

둘 다 새로 빌드하지 않고 화살표만 옮깁니다.

프로덕션과 프리뷰

상황결과
앱의 첫 배포 (프로덕션 배포가 아직 없음)프로덕션
그 뒤의 기본 배포프리뷰
--prod (또는 --target production)프로덕션
--preview (또는 --target preview)프리뷰

--prod, --preview, --target은 하나만 쓸 수 있습니다. 프리뷰가 저절로 프로덕션이 되는 일은 없습니다.

ntro deploy . --preview                          # 프리뷰 배포
ntro deployments list --target preview           # 프리뷰만 보기
ntro deployments show <짧은 ID>                  # 배포 상세

배포 주소

배포 하나에는 주소가 여러 개 붙습니다.

주소형식가리키는 대상
프로덕션 주소my-app.ntro.run현재 프로덕션 배포 (승격·롤백 시 바뀜)
리비전 주소my-app-<짧은 ID>.rev.ntro.run그 배포 하나에 영원히 고정
브랜치 주소my-app-git-<브랜치>.rev.ntro.run그 Git 브랜치의 가장 최근 ready 배포
커스텀 도메인www.example.com현재 프로덕션 배포 (커스텀 도메인)

브랜치 주소는 Git 브랜치 정보가 있는 배포(GitHub 연동 등)에만 생기며, 프로덕션 브랜치에서 만든 배포에도 생깁니다. 브랜치 이름이 주소로 바뀌는 규칙은 Git 저장소 배포에 있습니다.

앱 슬러그를 바꾸면 기존 ntro.run 주소가 즉시 끊깁니다

앱 설정에서 슬러그를 바꾸면 프로덕션·리비전·브랜치 주소가 모두 새 슬러그로 바뀌고, 예전 주소는 바로 동작하지 않습니다. 커스텀 도메인은 영향이 없습니다. 스크립트에서 --app <예전 슬러그>를 썼다면 새 슬러그나 앱 ID로 바꾸세요. ntro link로 연결한 폴더는 앱 ID로 연결되어 있어 다시 연결할 필요가 없습니다.

짧은 ID

리비전 주소의 <짧은 ID>는 이렇게 정해집니다. 이미 만든 배포의 짧은 ID는 바뀌지 않습니다.

  • Git 커밋이 있는 배포: 커밋 SHA 앞 7글자(소문자). 커밋하지 않은 변경이 있어도 커밋 SHA 기준입니다. 같은 앱에 이미 있으면 -2, -3… 을 붙입니다.
  • Git 정보가 없는 배포: 무작위 7글자. 겹치면 최대 12글자까지 늘어납니다.

짧은 ID는 앱 안에서만 겹치지 않습니다. 다른 앱은 같은 짧은 ID를 가질 수 있지만, 주소 앞에 앱 슬러그가 붙어 있어 주소는 서로 다릅니다.

승격·롤백·재배포

ntro promote <짧은 ID> --yes      # 이 배포를 프로덕션으로
ntro rollback <짧은 ID> --yes     # 프로덕션을 예전 배포로 되돌리기
ntro redeploy <짧은 ID> --preview # 같은 파일로 새 배포 만들기
ntro logs <짧은 ID> --follow      # 빌드·배포 이벤트 보기
명령하는 일
promote이미 ready인 배포를 프로덕션으로 지정합니다. 새 배포를 만들지 않습니다.
rollback프로덕션을 예전 ready 배포로 되돌립니다.
redeploy기존 배포의 파일로 새 배포를 만듭니다.
logs빌드·배포 과정의 이벤트를 보여 줍니다. 앱의 요청 로그는 아닙니다.

promote와 rollback은 실행 전에 한 번 더 묻습니다. 터미널에서 직접 확인하려면 --yes를 빼고, CI나 스크립트에서는 --yes를 붙이세요.

컴퓨트 설정을 바꿨을 때

일반 배포에서는 리전·티어·인스턴스 수·포트 같은 컴퓨트 설정을 여러 곳에서 정할 수 있고, 항목별로 아래 순서대로 먼저 있는 값을 씁니다.

  1. CLI 플래그 (--local·--image·--bundle-dir 직접 업로드에서만)
  2. nitroship.json
  3. 콘솔 App Settings > Compute 또는 컴퓨트 설정 API로 저장한 앱 설정
  4. 플랫폼 기본값

이 값들은 빌드를 시작할 때 고정되고, 배포마다 "어떤 값을 어디서(flag·file·app·default) 가져왔는지"가 기록됩니다. 그래서 콘솔 설정을 바꿔도 이미 있는 배포는 그대로입니다.

nitroship.json이나 CLI 플래그로 정한 항목도 콘솔·API에서 언제든 수정할 수 있습니다. 저장한 앱 설정을 반영하려면 콘솔의 지금 적용을 누르세요. 다시 빌드하지 않고 현재 프로덕션을 재배포하며, 앱 설정의 null이 아닌 값은 파일·플래그에서 온 값까지 바꿉니다. 바뀐 항목의 출처는 app이고, 앱 설정에 없는 항목은 이전 값을 유지합니다. 출처 기록이 생기기 전에 만든 오래된 배포는 다시 빌드해야 합니다.

콘솔 App Settings > Compute에서 앱 설정이 비어 있고 현재 프로덕션이 nitroship.json이나 CLI 플래그 값을 쓰는 항목은 그 값이 미리 채워져 표시됩니다. 미리 채워진 값을 그대로 두고 저장하면 그 항목은 앱 설정에 저장되지 않고 비어 있는 상태로 남습니다.

일반 배포를 할 때마다 nitroship.json에 선언한 항목이 다시 콘솔·API 설정보다 우선하며, 지원되는 CLI 플래그는 여전히 파일보다 우선합니다. 지금 적용은 그 재배포에서만 값을 덮어쓰며, 다음 일반 배포에서는 위 우선순위로 돌아갑니다.

동시 요청이 인스턴스의 메모리를 어떻게 공유하는지, 인스턴스 수가 바뀔 때 로컬 캐시를 어떻게 다뤄야 하는지는 인스턴스와 공유 메모리를 참고하세요.

오래된 배포 정리

현재 프로덕션 배포와 가장 최근의 ready 배포 10개는 항상 보관합니다. 활성 브랜치 주소가 가리키는 배포도 보관합니다. 그보다 오래된 배포는 pruned(정리됨) 상태가 될 수 있고, 정리된 배포는 리비전 주소로 열 수 없으며 승격·롤백 대상도 될 수 없습니다.

크기 한도

한도는 앱이 속한 팀의 플랜을 따릅니다. 팀에 지정된 플랜이 없으면 기본 플랜을 씁니다. 단위는 십진법입니다(1 MB = 1,000,000바이트).

항목FreePro적용 대상
함수 요청 본문4.5 MB4.5 MB함수(서버) 호출
함수 응답 본문4.5 MB4.5 MBContent-Length가 있는 함수 응답
소스 크기 합계100 MB1 GB기본 ntro deploy의 소스 업로드
소스 파일 수15,000개15,000개기본 ntro deploy의 소스 업로드, Git 빌드
함수 번들250 MB250 MB모든 함수를 담은 배포 번들 하나 (bundle.tar)
  • 소스 크기는 압축 전 파일 크기의 합입니다. 전송량이 아닙니다.
  • 파일 수는 .git/ 밖의 일반 파일만 셉니다. 폴더와 심볼릭 링크는 세지 않습니다. --local 직접 업로드의 결과물 파일 수 한도(100,000개)는 이와 별개입니다.
  • 스트리밍 응답(SSE 등 길이를 미리 알리지 않는 응답)에는 응답 본문 한도가 없습니다. 요청 본문은 스트리밍 중에도 제한합니다.

한도를 넘으면 HTTP 413과 함께 source_too_large, source_too_many_files, function_bundle_too_large, function_payload_too_large 중 하나가 반환되며, 메시지에 실제 크기·한도·플랜이 표시됩니다.

API 참고: 배포의 url과 urls

배포 목록·상세 API의 응답에는 주소 필드가 두 개 있습니다. 콘솔의 앱 개요와 배포 상세에서도 같은 주소를 볼 수 있습니다.

  • url: 대표 주소 하나. 현재 프로덕션 배포는 활성 커스텀 도메인 중 가장 먼저 등록한 것을, 없으면 my-app.ntro.run을 씁니다. 다른 배포는 리비전 주소입니다.
  • urls: 지금 이 배포를 가리키는 모든 주소. 활성 커스텀 도메인(등록 순), 프로덕션 주소(현재 프로덕션일 때), 브랜치 주소(그 브랜치의 현재 대상일 때), 리비전 주소 순서입니다. 브랜치 주소가 새 배포로 옮겨 가면 이전 배포의 urls에서는 빠집니다.

배포가 ready가 아니거나 정리된 상태라면 나열된 주소가 실제로 열리지 않을 수 있습니다.

이 페이지에서