앱 호스팅 및 작동 방식 이해

App Hosting은 복잡한 백그라운드 작업을 처리하여 앱 배포를 간소화합니다. 이 페이지에서는 작업 흐름의 주요 부분을 설명하며 앱의 요구사항에 따라 흐름을 맞춤설정할 수 있는 지점에 관한 정보를 제공합니다.

프레임워크 지원

App Hosting은 다음 프레임워크에서 개발된 웹 앱을 구성할 필요가 없는 빌드 및 배포 지원을 제공합니다.

  • Next.js 13 이상
  • Angular 17.2 이상

App Hosting은 저장소의 package-lock.json 파일이나 기타 잠금 파일을 검사하여 사용 중인 프레임워크를 식별합니다. 잠금 파일이 없는 Node.js 앱을 배포하려고 하면 App Hosting에서 앱을 빌드 및 실행하지 못합니다. 루트 디렉터리에서 npm install를 실행하여 package-lock.json를 만들 수 있습니다.

App Hosting 프레임워크 어댑터에는 두 가지 주요 역할이 있습니다.

  1. 앱의 구성된 동작을 이해하기 위해 소스 코드와 프레임워크별 구성 파일 (예: next.config.js)을 파싱합니다.
  2. 앱의 빌드 명령어를 실행하여 정적 애셋을 생성하고 프로덕션에 최적화된 버전의 앱을 만듭니다.

프레임워크 어댑터는 npm run build를 사용하여 Node.js 앱을 빌드하며, 각 프레임워크의 기본 빌드 스크립트(Next.js의 경우 next build, Angular의 경우 ng build)에서 가장 잘 작동합니다. App Hosting은 커스텀 빌드 명령어로 빌드를 시도하지만 반드시 성공을 보장할 수는 없습니다.

App Hosting 저장소 통합 작동 방식

GitHub 저장소와 App Hosting 백엔드 간의 중요한 연결은 외부 DevOps 도구를 위한 Google Cloud의 연결 플랫폼인 Developer Connect에서 처리합니다. App Hosting 백엔드를 만드는 동안 Developer Connect의 UI 워크플로는 Firebase GitHub 앱을 설치하는 과정을 안내합니다. 이 프로세스의 주요 단계는 다음과 같습니다.

  1. Developer Connect에 Secret Manager 관리자 역할을 부여합니다. 이렇게 하면 시스템이 Cloud Secret Manager에 사용자 인증 정보를 '보안 비밀'로 안전하게 저장할 수 있습니다.
  2. Firebase GitHub 앱이 GitHub 저장소에 액세스하도록 승인합니다.
  3. Developer Connect는 프로젝트의 보안 비밀 관리자 저장소에 전용 GitHub 승인 토큰을 저장합니다. 이 토큰을 수정하거나 삭제하지 마세요.

또한 App Hosting은 GitHub 검사 API와 통합되어 출시 확인 기능을 제공합니다. 이렇게 확인하면 GitHub에서 출시 상태를 확인하고 오류가 있는 경우 배포 프로세스를 디버그할 수 있습니다.

Firebase 및 다른 Google 서비스와 통합

App Hosting은 빌드 환경과 런타임 환경을 모두 설정하므로 Google 애플리케이션 기본 사용자 인증 정보로 Firebase Admin SDK를 초기화할 수 있습니다. 이렇게 하면 백엔드가 빌드 및 배포 중에 다른 Firebase 제품과 통신할 수 있습니다.

App Hosting 백엔드 서비스 계정

빌드하는 동안 그리고 런타임 시 App Hosting 백엔드는 서비스 계정을 사용하여 다른 Google 서비스에 인증합니다. Firebase 프로젝트에서 App Hosting을 처음 사용 설정하면 이러한 용도로 기본 서비스 계정이 생성됩니다.

firebase-app-hosting-compute@PROJECT ID.iam.gserviceaccount.com

이 서비스 계정은 기본적으로 모든 백엔드에 적용되며 앱을 빌드, 실행, 모니터링할 수 있는 최소한의 권한만 가집니다. 또한 Cloud Firestore에서 데이터를 로드하는 것과 같은 작업을 수행하기 위해 애플리케이션 기본 사용자 인증 정보로 Admin SDK를 인증할 수 있는 권한이 있습니다. Firebase App Hosting 역할을 참조하세요.

앱이 빌드 시 또는 실행 중인 백엔드에서 추가 Google 서비스와 상호작용해야 하는 경우 역할을 추가하여 기본 서비스 계정을 맞춤설정할 수 있습니다. 예를 들어 앱에 Vertex AI 권한이 필요한 경우 roles/aiplatform.user 또는 관련 역할을 추가해야 할 수 있습니다.

핵심 용어 및 정의

  • 백엔드: App Hosting에서 웹 앱을 빌드하고 실행하기 위해 만드는 관리형 리소스 모음입니다.
  • 출시: 서비스 중인 앱의 특정 버전으로, git 커밋에 연결됩니다.
  • 라이브 브랜치: 라이브 URL에 배포되는 GitHub 저장소의 브랜치입니다. 기능 브랜치 또는 개발 브랜치가 병합되는 브랜치인 경우가 많습니다.

알려진 문제 및 제한사항

App Hosting 미리보기에는 몇 가지 알려진 제한사항이 있습니다.

  • 중첩된 package.json 파일이 있는 프로젝트는 root\_directory이 Firebase Console 또는 CLI로 구성되었는지에 관계없이 현재 지원되지 않습니다. 향후 출시 버전에서 수정사항이 제공될 예정입니다.
  • 이미지 최적화를 아직 사용할 수 없습니다.
  • 경우에 따라 App Hosting 백엔드가 앱의 URL에서 Intermittent connection error 메시지를 반환할 수 있습니다. 향후 출시 버전에서 수정사항이 제공될 예정입니다.
  • Cache-Control 헤더는 CDN 캐시를 60초로 제한하도록 수정됩니다. 향후 App Hosting에서 배포 시 캐시를 빠르게 삭제할 수 있게 되면 이 제한이 해제됩니다.
  • App Hosting 데이터 영역을 통해 제공되는 응답에서 Set-Cookie 헤더가 제거됩니다. 향후 출시 버전에서 수정사항이 제공될 예정입니다.
  • 캐시되지 않은 정적 파일은 Cloud Run에서 제공됩니다. 이후 출시 버전에서는 성능 향상을 위해 App Hosting 원본에서 저장 및 제공됩니다.
  • 커스텀 도메인으로서의 와일드 카드 하위 도메인은 이후 출시 버전에서 사용할 수 있습니다.
  • Firebase Console의 백엔드 사용량 페이지에 App Hosting SKU가 표시되지 않을 수 있습니다. 향후 출시 버전에서 사용할 수 있습니다.
  • 백엔드 생성 시 Firebase Console에서 '빌드를 찾을 수 없고 유효하지 않음' 오류가 간헐적으로 표시될 수 있습니다.
  • 현재 동일한 프로젝트의 모든 백엔드는 GitHub 조직/계정을 공유합니다. 해당 조직/계정의 다른 저장소에 연결할 수 있습니다. 다른 GitHub 계정에 연결된 백엔드를 만들려면 별도의 프로젝트에 배치합니다.
  • 현재 us-central1 리전만 지원됩니다.