사이트의 실시간 및 미리보기 채널, 출시, 버전 관리

Firebase 호스팅은 Firebase Console 및 Firebase CLI를 통해 호스팅 사이트의 채널, 출시, 버전을 관리하기 위한 도구를 제공합니다.

호스팅 인프라 개요

호스팅 인프라가 무엇인지 알면 이 페이지에 설명된 관리 옵션을 이해하는 데 도움이 됩니다.

모든 Firebase 프로젝트에는 프로젝트의 모든 리소스(데이터베이스, 인증, 함수 등)에 액세스할 수 있는 기본 호스팅 사이트가 포함되어 있습니다. 사이트에는 하나 이상의 채널이 포함되어 있으며, 각 채널은 특정 콘텐츠 및 호스팅 구성을 제공하는 URL과 연결되어 있습니다.

Firebase 호스팅 계층 구조 이미지

모든 호스팅 사이트에는 (1) Firebase에 프로비저닝된 사이트의 하위 도메인(SITE_ID.web.appSITE_ID.firebaseapp.com)과 (2) 연결된 모든 커스텀 도메인에 대한 콘텐츠 및 호스팅 구성을 제공하는 '실시간' 채널이 있습니다. 또한 선택적으로 '미리보기' 채널을 만들어서 공유 가능한 임시 '미리보기 URL'(SITE_ID--CHANNEL_ID-RANDOM_HASH.web.app)에 고유 콘텐츠 및 구성을 제공할 수도 있습니다.

각 채널에서 제공하는 콘텐츠 및 구성은 고유 식별자가 있는 버전 객체로 패키징됩니다. 사이트에 배포할 때 Firebase는 특정 버전을 가리키는 출시 객체를 만듭니다. 출시에는 배포한 사람, 배포된 시간과 같은 배포에 대한 메타데이터가 포함됩니다.

Firebase 프로젝트의 호스팅 대시보드에 있는 출시 내역 표에서 실시간 채널의 전체 출시 내역을 볼 수 있습니다. 호스팅 사이트가 여러 개 있는 경우에는 원하는 사이트의 를 클릭하여 출시 내역을 확인합니다. 미리보기 채널이 있으면 이것도 호스팅 대시보드에 표시됩니다.

채널 설정 관리

사이트의 각 채널에 대한 설정을 관리할 수 있습니다. 채널 만료와 같은 일부 설정은 미리보기 채널에만 해당됩니다.

보관할 출시 개수 제한

채널에 배포하고 출시 버전을 만들 때마다 호스팅은 프로젝트의 호스팅 스토리지에 이전 출시와 관련된 버전을 보관합니다. 실시간 및 미리보기 채널 모두 프로젝트에 각 채널에 대해 보관할 출시 수를 설정할 수 있습니다.

  • 호스팅이 이전 출시를 보관하는 이유는 무엇인가요?
    실시간 채널의 경우 이전 출시를 보관하면 필요에 따라 사이트의 이전 버전으로 롤백할 수 있습니다. 미리보기 채널의 경우에는 롤백이 아직 제공되지 않습니다.

  • 보관할 출시 수는 왜 제한되나요?
    이 기능을 사용하면 프로젝트의 호스팅 스토리지의 사용 수준을 제어할 수 있습니다. 이전 출시의 콘텐츠가 이 스토리지에 보관됩니다. Console의 스토리지에서 호스팅 스토리지를 모니터링할 수 있습니다.

  • 보관할 출시를 제한하면 어떻게 되나요?
    보관할 출시에 한도를 설정하면 설정한 한도를 넘는 모든 출시의 콘텐츠가 가장 오래된 것부터 시작해서 삭제가 예약됩니다.

채널에 출시 스토리지 한도를 설정하는 방법은 다음과 같습니다.

  1. Firebase Console에서 출시 스토리지 설정 대화상자에 액세스합니다.

    • 실시간 채널의 경우
      사이트의 출시 내역 테이블에서 를 클릭한 후 출시 스토리지 설정을 선택합니다.

    • 미리보기 채널의 경우
      미리보기 채널의 해당 행에서 를 클릭한 후 채널 설정을 선택합니다.

  2. 보관할 출시 개수를 입력한 다음 저장을 클릭합니다.

미리보기 채널 만료 설정

기본적으로 미리보기 채널은 만든 날짜로부터 7일 후 만료됩니다. 하지만 사이트의 실시간 채널은 만료되지 않습니다.

미리보기 채널이 만료되면 해당 출시 및 연결된 버전 모두가 24시간 내에 삭제되도록 예약됩니다. 연결된 미리보기 URL도 비활성화됩니다. 예외적으로, 다른 출시와 연결된 버전은 삭제되지 않습니다. 예를 들어 동일한 사이트 내에서 한 채널에서 다른 채널로 클론한 버전은 삭제되지 않습니다.

호스팅은 채널 만료를 제어하는 두 가지 방법을 지원합니다.

  • Firebase Console
    미리보기 채널에 대한 행에서 를 클릭한 후 채널 설정을 선택합니다. 만료 날짜와 시간을 입력합니다.

  • Firebase CLI
    미리보기 채널로 배포할 때는 --expires DURATION 플래그를 전달합니다. 예를 들면 다음과 같습니다.

    firebase hosting:channel:deploy new-awesome-feature --expires 7d

    만료 날짜는 배포 날짜로부터 최대 30일까지 가능합니다. h는 시간, d는 일, w는 주를 나타냅니다(예: 12h, 7d, 2w).

한 채널에서 다른 채널로 버전 클론

배포된 버전을 한 채널에서 다른 버전으로 클론할 수 있습니다. 실시간 또는 미리보기 채널 간, 호스팅 사이트 간, 심지어 Firebase 프로젝트 간에도 클론이 가능합니다.

클론 명령어는 또한 클론된 호스팅 콘텐츠 및 구성이 '대상' 채널에 연결된 URL에서 자동으로 제공되도록 '대상' 채널로 배포를 수행합니다.

이 기능은 버전 추적에 유용하며, 다른 채널에서 확인했거나 테스트한 정확한 콘텐츠를 확실하게 배포하려는 경우에도 유용합니다. 예를 들면 다음과 같습니다.

  • 'QA' 미리보기 채널에서 사이트의 실시간 채널로 클론(실시간으로 전환)

  • 사이트의 실시간 채널에서 '디버그' 미리보기 채널로 클론(롤백 전과 유사)

  • '스테이징' Firebase 프로젝트의 채널에서 '프로덕션' Firebase 프로젝트의 미리보기 채널로 클론

버전을 클론하려면 어느 디렉터리에서든 다음 명령어를 실행합니다.

firebase hosting:clone SOURCE_SITE_ID:SOURCE_CHANNEL_ID TARGET_SITE_ID:TARGET_CHANNEL_ID

각 자리표시자를 다음 항목으로 바꿉니다.

  • SOURCE_SITE_IDTARGET_SITE_ID: 채널이 포함된 호스팅 사이트의 ID입니다.

    • 기본 호스팅 사이트의 경우 Firebase 프로젝트 ID를 사용합니다.
    • 동일한 Firebase 프로젝트 또는 다른 Firebase 프로젝트에 있는 호스팅 사이트도 지정 가능합니다.
  • SOURCE_CHANNEL_IDTARGET_CHANNEL_ID: 채널의 식별자입니다.

    • 실시간 채널의 경우 live를 채널 ID로 사용합니다.
    • 지정된 '대상' 채널이 아직 존재하지 않으면 이 명령어가 배포를 수행하기 전 채널을 먼저 만듭니다.

사이트의 이전 버전으로 롤백

사이트의 실시간 채널을 이전 버전으로 제공하기 위해 롤백할 수 있습니다. 이 작업은 현재 출시에 문제가 있어 사이트의 알려진 작동 버전으로 롤백하려는 경우에 유용합니다. 또는 사이트에 연말연시나 특별 이벤트용으로 임시 콘텐츠를 게재한 경우 다시 '일반' 콘텐츠를 제공하기 위해 롤백할 수도 있습니다.

롤백하면 이전 출시와 동일한 버전의 콘텐츠를 제공하는 새 출시가 만들어집니다. 출시 내역 표에는 두 출시 모두 동일한 버전의 식별자로 표시됩니다.

롤백하는 방법은 다음과 같습니다.

  1. Firebase Console에 있는 사이트의 출시 내역 테이블에서 롤백하려는 이전 출시 항목 위로 마우스를 가져갑니다.

  2. 아이콘을 클릭한 다음 롤백을 선택합니다.

수동으로 출시 삭제

프로젝트의 호스팅 스토리지를 비우기 위해 실시간 채널에서 출시를 수동으로 삭제해야 할 수 있습니다. 이전 출시만 삭제할 수 있고 실시간 사이트에서 현재 제공 중인 출시는 삭제할 수 없습니다.

출시를 삭제하면 실제로 해당 콘텐츠가 삭제되며, 24시간 내에 삭제하도록 예약됩니다. 출시 객체 자체는 보관되므로 해당 메타데이터(배포한 사람, 배포 시간)를 계속 볼 수 있습니다.

출시를 삭제하는 방법은 다음과 같습니다.

  1. Firebase Console에 있는 사이트의 출시 내역 테이블에서 삭제하려는 이전 출시 항목 위로 마우스를 가져갑니다.

  2. 를 클릭한 다음 삭제를 선택합니다.

수동으로 미리보기 채널 삭제

미리 보려는 채널을 클릭하여 채널을 미리 볼 수 있습니다. 이 뷰에서 특정 채널에 연결된 최신 배포 및 출시 버전 보기, 삭제, 되돌리기를 수행할 수 있습니다. 미리보기 채널을 삭제할 수 있지만 사이트의 실시간 채널은 삭제할 수 없습니다.

미리보기 채널을 삭제할 때는 해당 출시 및 연결된 버전과 함께 24시간 내에 채널이 삭제되도록 예약됩니다. 연결된 미리보기 URL도 비활성화됩니다. 예외적으로, 다른 출시와 연결된 버전은 삭제되지 않습니다. 예를 들어 동일한 사이트 내에서 한 채널에서 다른 채널로 클론한 버전은 삭제되지 않습니다.

호스팅은 미리보기 채널을 삭제하는 두 가지 방법을 지원합니다.

  • Firebase Console
    미리보기 채널의 해당 행에서 를 클릭한 후 채널 삭제를 선택합니다. 삭제를 확인합니다.

  • Firebase CLI
    디렉터리에서 다음 명령어를 실행합니다.

    firebase hosting:channel:delete CHANNEL_ID

미리보기 채널 및 클론을 위한 CLI 명령어

미리보기 채널 명령어

여러 호스팅 사이트가 있는 경우 미리보기 채널의 모든 명령어에서 배포 대상이 지원됩니다.

명령어 설명
firebase hosting:channel:create CHANNEL_ID

지정된 CHANNEL_ID를 사용하여 기본 호스팅 사이트에서 새 미리보기 채널을 만듭니다.

이 명령어는 채널에 배포를 수행하지 않습니다.

firebase hosting:channel:delete CHANNEL_ID

지정된 미리보기 채널을 삭제합니다.

사이트의 실시간 채널은 삭제할 수 없습니다.

firebase hosting:channel:deploy CHANNEL_ID

호스팅 콘텐츠 및 구성을 지정된 미리보기 채널에 배포합니다.

미리보기 채널이 아직 없으면 이 명령어가 채널에 배포를 수행하기 전에 먼저 기본 호스팅 사이트에서 채널을 만듭니다.

firebase hosting:channel:list 기본 호스팅 사이트에 있는 모든 채널('실시간' 채널 포함)을 나열합니다.
firebase hosting:channel:open CHANNEL_ID 지정된 채널의 URL로 브라우저를 열거나 브라우저로 열기를 사용할 수 없으면 URL을 반환합니다.

버전 클론을 위한 명령어

명령어 설명
firebase hosting:clone \
SOURCE_SITE_ID:SOURCE_CHANNEL_ID \
TARGET_SITE_ID:TARGET_CHANNEL_ID

지정된 '소스' 채널에서 최근에 배포된 버전을 지정된 '대상' 채널로 클론합니다.

이 명령어는 또한 지정된 '대상' 채널로의 배포도 수행합니다. '대상' 채널이 아직 없으면 이 명령어가 채널에 배포를 수행하기 전에 먼저 '대상' 호스팅 사이트에서 새로운 미리보기 채널을 만듭니다.

firebase hosting:clone \
SOURCE_SITE_ID:@VERSION_ID \
TARGET_SITE_ID:TARGET_CHANNEL_ID

지정된 버전을 지정된 '대상' 채널로 클론합니다.

이 명령어는 또한 지정된 '대상' 채널로의 배포도 수행합니다. '대상' 채널이 아직 없으면 이 명령어가 채널에 배포를 수행하기 전에 먼저 '대상' 호스팅 사이트에서 새로운 미리보기 채널을 만듭니다.

VERSION_ID는 Firebase Console의 호스팅 대시보드에서 찾을 수 있습니다.