템플릿 만들기 및 확인

이 빠른 시작에서는 프런트엔드, 백엔드, 데이터베이스 구성요소가 포함된 3계층 웹 애플리케이션 템플릿을 만들고 배포하는 방법을 알아봅니다. 다음 이미지는 애플리케이션 구성요소와 연결이 포함된 디자인 캔버스를 보여줍니다.

디자인 캔버스에 있는 3계층 웹 애플리케이션 애플리케이션에는 프런트엔드, 백엔드, 데이터베이스 구성요소가 포함됩니다.

다음 중 하나를 사용하여 템플릿을 디자인합니다.

설계를 완료한 후 App Design Center에서 테스트 애플리케이션을 배포하여 템플릿을 확인합니다.


Google Cloud 콘솔에서 이 태스크에 대한 단계별 안내를 직접 수행하려면 둘러보기를 클릭합니다.

둘러보기


시작하기 전에

  1. App Design Center를 설정합니다.

  2. 앱 지원 폴더에 하위 프로젝트를 만듭니다.

    애플리케이션을 배포할 때 이 프로젝트에 Google Cloud 리소스를 배포합니다.

  3. 하위 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

도구 설정

다음 중 하나를 사용하여 이 빠른 시작을 완료할 수 있습니다.

  • Google Cloud 콘솔에서 디자인 캔버스를 사용합니다.

  • Gemini Cloud Assist를 사용하여 디자인을 만들려면 Gemini Cloud Assist 설정을 참고하세요.

  • Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  • Install the Google Cloud CLI.

  • 외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  • gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.

    gcloud init
  • Install the Google Cloud CLI.

  • 외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

  • gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.

    gcloud init
  • 필수 역할이 있는지 확인

    1. 템플릿을 만들려면 관리 프로젝트에 다음 역할 중 하나가 있어야 합니다.

    2. 애플리케이션을 배포하려면 관리 프로젝트에 다음 역할 중 하나가 있어야 합니다.

    3. 배포 중에 서비스 계정을 만들려면 다음 역할이 있어야 합니다.

      • 서비스 계정을 만들려면 관리 프로젝트에 대한 서비스 계정 만들기(roles/iam.serviceAccountCreator) 역할이 있어야 합니다.

      • 하위 프로젝트에 대한 액세스 권한을 서비스 계정에 부여하려면 하위 프로젝트에 대한 프로젝트 IAM 관리자(roles/resourcemanager.projectIamAdmin)가 있어야 합니다.

    새 템플릿 만들기 및 세부정보 추가

    디자인 캔버스

    1. Google Cloud 콘솔에서 템플릿 페이지로 이동합니다.

      템플릿으로 이동

    2. 템플릿 만들기를 클릭하고 다음 세부정보를 입력합니다.

      1. 템플릿 ID 필드에서 quickstart-three-tier-web-app을 입력합니다.

      2. 템플릿 이름 필드에 Quickstart three-tier web app을 입력합니다.

      3. 설명 필드에 A template to generate a three-tier web application을 입력합니다.

      4. 템플릿 만들기를 클릭합니다.

      템플릿이 생성되고 디자인 캔버스가 표시됩니다.

    3. 구성요소 영역에서 다음 구성요소를 클릭하여 디자인 캔버스에 추가합니다.

      • Cloud Run(구성요소 2개 추가)
      • Cloud SQL(PostgreSQL)
    4. 구성요소 간에 연결을 만들려면 다음 단계를 따르세요.

      1. cloud-run-1 하단의 파란색 점을 cloud-run-2 상단의 파란색 점으로 드래그합니다.

      2. cloud-run-2 하단의 파란색 점을 sql-postgresql-1 상단의 파란색 점으로 드래그합니다.

      템플릿에는 세 가지 구성요소가 포함되어 있습니다. 캔버스에는 구성요소 간의 연결을 나타내는 선이 표시됩니다.

    Gemini Cloud Assist

    1. Google Cloud 콘솔 툴바에서 spark Gemini Cloud Assist 채팅 열기 또는 닫기를 클릭합니다.

      Cloud Assist 패널이 열립니다.

    2. Gemini Cloud Assist 채팅에서 다음 프롬프트를 입력합니다.

      I want to create a three-tier web application.
      

      Gemini Cloud Assist가 3계층 웹 애플리케이션의 기본 설계를 생성합니다.

    3. 부하 분산기 및 Secret Manager 구성요소를 삭제하려면 다음 프롬프트를 입력합니다.

      I don't need load balancers or Secret Manager.
      

      Gemini Cloud Assist에서 구성요소를 삭제하도록 디자인을 업데이트합니다.

    4. 다음 구성요소가 포함된 업데이트된 디자인을 검토합니다.

      • Cloud Run (구성요소 2개)
      • PostgreSQL용 Cloud SQL
    5. 앱 디자인 수정을 클릭합니다.

      새 템플릿 만들기 페이지가 표시됩니다.

    6. 다음 템플릿 세부정보를 입력합니다.

      1. 템플릿 ID 필드에서 quickstart-three-tier-web-app을 입력합니다.

      2. 템플릿 이름 필드에 Quickstart three-tier web app을 입력합니다.

      3. 설명 필드에 A template to generate a three-tier web application을 입력합니다.

    7. 템플릿 만들기를 클릭합니다.

      시스템에서 새 템플릿을 만들고 디자인 캔버스를 표시합니다.

    gcloud CLI

    1. 애플리케이션 템플릿을 만듭니다.

      gcloud design-center spaces application-templates create quickstart-three-tier-web-app \
      --display-name="Quickstart three-tier web app" \
      --description="A template to generate a three-tier web application" \
      --space=SPACE \
      --location=us-central1 \
      --project=MANAGEMENT_PROJECT_ID
      
    2. Google 카탈로그에서 공유 템플릿을 나열합니다.

      gcloud design-center spaces shared-templates list \
      --google-catalog \
      --location=us-central1
      
      1. Cloud Run 및 Cloud SQL의 공유 템플릿 ID를 확인합니다.
    3. 프런트엔드로 사용할 Cloud Run 구성요소를 추가합니다.

      gcloud design-center spaces application-templates components create cloud-run-1 \
      --application-template=quickstart-three-tier-web-app \
      --shared-template-revision-uri=google/1b5e09c8-780f-484e-b8ed-c7178f4e4342 \
      --space=SPACE \
      --location=us-central1 \
      --project=MANAGEMENT_PROJECT_ID
      
    4. 백엔드로 사용할 두 번째 Cloud Run 구성요소를 추가합니다.

      gcloud design-center spaces application-templates components create cloud-run-2 \
      --application-template=quickstart-three-tier-web-app \
      --shared-template-revision-uri=google/1b5e09c8-780f-484e-b8ed-c7178f4e4342 \
      --space=SPACE \
      --location=us-central1 \
      --project=MANAGEMENT_PROJECT_ID
      
    5. Cloud SQL 구성요소를 추가합니다.

      gcloud design-center spaces application-templates components create sql-postgresql-1 \
      --application-template=quickstart-three-tier-web-app \
      --shared-template-revision-uri=google/45be1bc2-89bc-477b-9b5d-64c41ff3b146 \
      --space=SPACE \
      --location=us-central1 \
      --project=MANAGEMENT_PROJECT_ID
      
    6. cloud-run-1을 cloud-run-2에 연결합니다.

       gcloud design-center spaces application-templates components connections create frontend-to-backend \
       --application-template=quickstart-three-tier-web-app \
       --component=cloud-run-1 \
       --destination-component-uri=cloud-run-2 \
       --space=SPACE \
       --location=us-central1 \
       --project=MANAGEMENT_PROJECT_ID
      
    7. cloud-run-2를 sql-postgresql-1에 연결합니다.

       gcloud design-center spaces application-templates components connections create backend-to-database \
       --application-template=quickstart-three-tier-web-app \
       --component=cloud-run-2 \
       --destination-component-uri=sql-postgresql-1 \
       --space=SPACE \
       --location=us-central1 \
       --project=MANAGEMENT_PROJECT_ID
      
    8. 변경사항을 커밋하여 애플리케이션 템플릿 버전을 만듭니다.

       gcloud design-center spaces application-templates commit quickstart-three-tier-web-app \
       --space=SPACE \
       --location=us-central1 \
       --project=MANAGEMENT_PROJECT_ID
      

    애플리케이션 초안 만들기

    디자인 캔버스

    1. 디자인 캔버스에서 앱 구성을 클릭합니다.

    2. 새 애플리케이션 만들기를 클릭하고 다음을 수행합니다.

      1. 이름 필드에 quickstart-three-tier-test를 입력합니다.

      2. 표시 이름 필드에 Quickstart three-tier test를 입력합니다.

      3. 리전 목록에서 us-central1 (Iowa)을 선택합니다.

      4. 환경 목록에서 Test를 선택합니다.

      5. 중요도 목록에서 Low을 선택합니다.

      6. 범위 영역의 애플리케이션 범위 목록에서 Regional을 선택합니다.

    3. 애플리케이션 만들기를 클릭합니다.

      시스템에서 애플리케이션 초안을 만듭니다.

    gcloud CLI

    1. 애플리케이션 템플릿 최신 버전 URI를 식별합니다.

       gcloud design-center spaces application-templates describe quickstart-three-tier-web-app \
       --space=SPACE \
       --location=us-central1 \
       --project=MANAGEMENT_PROJECT_ID \
       --format='yaml(name,latestRevision)'
      
    2. 템플릿을 기반으로 애플리케이션 초안을 만듭니다.

         gcloud design-center spaces applications create quickstart-three-tier-test \
         --space=SPACE \
         --location=us-central1 \
         --project=MANAGEMENT_PROJECT_ID \
         --source-application-template-revision=projects/MANAGEMENT_PROJECT_ID/locations/us-central1/spaces/SPACE/applicationTemplates/quickstart-three-tier-web-app/revisions/TEMPLATE_REVISION \
         --display-name="Quickstart three-tier test" \
         --environment-type=test \
         --criticality-type=low \
         --scope-type=regional \
         --deployment-region=us-central1
      

    구성요소 구성

    디자인 캔버스

    1. 디자인 캔버스에서 cloud-run-1을 클릭하고 구성 영역에서 다음을 수행합니다.

      1. 프로젝트 ID 목록에서 시작하기 전에에서 만든 하위 프로젝트를 선택합니다. 리소스가 이 프로젝트에 배포됩니다.

      2. 서비스 이름 필드에 frontend-service를 입력합니다.

      3. 저장을 클릭합니다.

    2. 디자인 캔버스에서 cloud-run-2를 클릭하고 구성 영역에서 다음을 수행합니다.

      1. 프로젝트 ID 목록에서 시작하기 전에에서 만든 하위 프로젝트를 선택합니다. 리소스가 이 프로젝트에 배포됩니다.

      2. 서비스 이름 필드에 backend-service를 입력합니다.

      3. 저장을 클릭합니다.

    3. 디자인 캔버스에서 sql-postgresql-1을 클릭하고 구성 영역에서 다음을 수행합니다.

      1. 프로젝트 ID 목록에서 시작하기 전에에서 만든 하위 프로젝트를 선택합니다. 리소스가 이 프로젝트에 배포됩니다.

      2. 이름 필드에 database-postgresql를 입력합니다.

      3. 데이터베이스 버전 목록에서 POSTGRES_15를 선택합니다.

      4. 영역 드롭다운 목록에서 us-central1-a를 선택합니다.

      5. 저장을 클릭합니다.

      캔버스에는 각 구성요소에 녹색 체크표시가 표시되어 필수 파라미터를 지정했음을 나타냅니다. 이제 애플리케이션 초안을 Test 환경에 배포하여 확인할 수 있습니다.

    gcloud CLI

    1. 애플리케이션을 설명하여 필요한 구성 매개변수를 식별합니다.

       gcloud design-center spaces applications describe quickstart-three-tier-test \
       --space=SPACE \
       --location=us-central1 \
       --project=MANAGEMENT_PROJECT_ID \
       --format='yaml(name,componentParameters)'
      
    2. 홈 디렉터리에서 각 구성요소에 필요한 매개변수 값이 포함된 JSON 파일을 만듭니다.

      1. frontend-service.json를 만듭니다.

         {
           "component": "projects/MANAGEMENT_PROJECT_ID/locations/us-central1/spaces/SPACE/applicationTemplates/quickstart-three-tier-web-app/components/cloud-run-1",
           "parameters": [
              {
                 "key": "service_name",
                 "value": "frontend-service"
              },
              {
                 "key": "project_id",
                 "value": "DEPLOYMENT_PROJECT_ID"
              }
           ]
         }
        
      2. backend-service.json를 만듭니다.

         {
           "component": "projects/MANAGEMENT_PROJECT_ID/locations/us-central1/spaces/SPACE/applicationTemplates/quickstart-three-tier-web-app/components/cloud-run-2",
           "parameters": [
              {
                 "key": "service_name",
                 "value": "backend-service"
              },
              {
                 "key": "project_id",
                 "value": "DEPLOYMENT_PROJECT_ID"
              }
           ]
         }
        
      3. database-postgresql.json를 만듭니다.

         {
           "component": "projects/MANAGEMENT_PROJECT_ID/locations/us-central1/spaces/SPACE/applicationTemplates/quickstart-three-tier-web-app/components/sql-postgresql-1",
           "parameters": [
              {
                 "key": "name",
                 "value": "database-postgresql"
              },
              {
                 "key": "project_id",
                 "value": "DEPLOYMENT_PROJECT_ID"
              },
              {
                 "key": "database_version",
                 "value": "POSTGRES_15"
              },
              {
                 "key": "region",
                 "value": "us-central1"
              },
              {
                 "key": "zone",
                 "value": "us-central1-a"
              }
           ]
         }
        
    3. 필수 매개변수를 구성하도록 애플리케이션을 업데이트합니다.

       gcloud design-center spaces applications update quickstart-three-tier-test \
       --space=SPACE \
       --location=us-central1 \
       --project=MANAGEMENT_PROJECT_ID \
       --component-parameters=./frontend-service.json \
       --component-parameters=./backend-service.json \
       --component-parameters=./database-postgresql.json
      

    애플리케이션 배포

    디자인 캔버스

    1. 배포를 클릭합니다.

    2. 서비스 계정 선택 영역에서 다음을 수행합니다.

      1. 새 서비스 계정 만들기를 클릭합니다.

      2. 계속을 클릭합니다.

    3. 배포를 클릭합니다.

      몇 분 후 시스템에서 애플리케이션을 배포하고 프로젝트에 리소스를 만듭니다. 시스템에 다음 세부정보가 표시됩니다.

      • 배포된 리소스 세부정보(모니터링 대시보드 링크 포함)를 볼 수 있는 App Hub 링크
      • 배포 오류를 해결하는 데 사용할 수 있는 Cloud Build 로그 링크
      • 배포된 리소스와 상호작용하는 데 사용할 수 있는 서비스 URI와 같은 출력 표시
    4. 이 빠른 시작을 기반으로 빌드하려면 애플리케이션 템플릿 업데이트 및 재배포를 참조하세요.

    gcloud CLI

    1. 애플리케이션을 설명하여 배포 서비스 계정에 필요한 IAM 역할을 식별합니다.

       gcloud design-center spaces applications describe quickstart-three-tier-test \
       --space=SPACE \
       --location=us-central1 \
       --project=MANAGEMENT_PROJECT_ID \
       --format='yaml(name,projectParameters)'
      
    2. 애플리케이션을 배포할 새 서비스 계정을 만듭니다.

       gcloud iam service-accounts create quickstart-service-account \
       --project=MANAGEMENT_PROJECT_ID \
       --display-name="Quickstart service account" \
       --description="A service account to deploy the ADC quickstart"
      
    3. 서비스 계정에 필요한 배포 프로젝트 역할을 추가합니다.

      #!/bin/bash
      
      PROJECT_ID="DEPLOYMENT_PROJECT_ID"
      SERVICE_ACCOUNT="quickstart-service-account@MANAGEMENT_PROJECT_ID.iam.gserviceaccount.com"
      
      ROLES=(
      "roles/iap.admin"
      "roles/compute.networkAdmin"
      "roles/compute.viewer"
      "roles/run.admin"
      "roles/iam.serviceAccountAdmin"
      "roles/serviceusage.serviceUsageAdmin"
      "roles/cloudkms.admin"
      "roles/logging.logWriter"
      "roles/iam.serviceAccountUser"
      "roles/cloudsql.admin"
      "roles/cloudkms.autokeyAdmin"
      "roles/storage.admin"
      "roles/serviceusage.serviceUsageViewer"
      "roles/resourcemanager.projectIamAdmin"
      "roles/cloudkms.cryptoKeyEncrypterDecrypter"
      )
      
      for role in "${ROLES[@]}"; do
      echo "Adding role: ${role}"
      gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
         --member="serviceAccount:${SERVICE_ACCOUNT}" \
         --role="${role}"
      echo "---"
      done
      
      echo "Finished adding roles."
      
    4. 서비스 계정에 필요한 관리 프로젝트 역할을 추가합니다.

      #!/bin/bash
      
      PROJECT_ID="MANAGEMENT_PROJECT_ID"
      SERVICE_ACCOUNT="quickstart-service-account@MANAGEMENT_PROJECT_ID.iam.gserviceaccount.com"
      
      ROLES=(
      "roles/config.agent"
      "roles/apphub.editor"
      )
      
      for role in "${ROLES[@]}"; do
      echo "Adding role: ${role}"
      gcloud projects add-iam-policy-binding "${PROJECT_ID}" \
         --member="serviceAccount:${SERVICE_ACCOUNT}" \
         --role="${role}"
      echo "---"
      done
      
      echo "Finished adding roles."
      
    5. 관리 프로젝트 번호를 확인합니다.

      gcloud projects describe MANAGEMENT_PROJECT_ID \
      --format="value(projectNumber)"
      
    6. 관리 프로젝트에 roles/iam.serviceAccountUser 역할의 IAM 정책 바인딩을 추가합니다.

      gcloud iam service-accounts add-iam-policy-binding projects/MANAGEMENT_PROJECT_ID/serviceAccounts/quickstart-service-account@MANAGEMENT_PROJECT_ID.iam.gserviceaccount.com \
      --project=MANAGEMENT_PROJECT_ID \
      --member="serviceAccount:service-MANAGEMENT_PROJECT_NUMBER@gcp-sa-designcenter.iam.gserviceaccount.com" \
      --role="roles/iam.serviceAccountUser"
      
    7. 서비스 계정을 사용하도록 애플리케이션을 업데이트합니다.

      gcloud design-center spaces applications update quickstart-three-tier-test \
      --space=SPACE \
      --location=us-central1 \
      --project=MANAGEMENT_PROJECT_ID \
      --service-account=projects/MANAGEMENT_PROJECT_ID/serviceAccounts/quickstart-service-account@MANAGEMENT_PROJECT_ID.iam.gserviceaccount.com
      
    8. 서비스 계정에 대한 actAs 권한을 사용자에게 부여합니다.

      gcloud iam service-accounts add-iam-policy-binding quickstart-service-account@MANAGEMENT_PROJECT_ID.iam.gserviceaccount.com \
      --project=MANAGEMENT_PROJECT_ID \
      --member="user:USER" \
      --role="roles/iam.serviceAccountUser"
      

      USER은 Google Cloud 사용자입니다. 예를 들면 dana@example.com입니다.

    9. 애플리케이션을 미리 봅니다.

      미리보기를 생성하는 데 몇 분 정도 걸립니다.

      gcloud design-center spaces applications preview quickstart-three-tier-test \
      --location=us-central1 \
      --space=SPACE \
      --project=MANAGEMENT_PROJECT_ID
      
    10. 애플리케이션을 배포합니다.

      gcloud design-center spaces applications deploy quickstart-three-tier-test \
      --space=SPACE \
      --location=us-central1 \
      --project=MANAGEMENT_PROJECT_ID \
      --async
      
    11. 작업 ID를 확인합니다.

    12. 배포를 완료하는 데 몇 분 정도 걸립니다. 배포 상태를 추적합니다.

      gcloud design-center operations describe operation-OPERATION_ID \
      --space=SPACE \
      --location=us-central1 \
      --project=MANAGEMENT_PROJECT_ID
      
    13. 배포가 완료되면 애플리케이션 출력 매개변수를 식별합니다.

       gcloud design-center spaces applications describe quickstart-three-tier-test \
       --space=SPACE \
       --location=us-central1 \
       --project=MANAGEMENT_PROJECT_ID \
       --format='yaml(name,appParameters,componentParameters,deploymentMetadata,deploymentRevision,previewReference)'
      

    선택사항: 배포 모니터링

    애플리케이션을 배포한 후 애플리케이션 모니터링을 사용하여 애플리케이션 원격 분석을 확인하고 상태와 성능을 모니터링할 수 있습니다.

    1. Google Cloud 콘솔에서 애플리케이션 모니터링 페이지로 이동합니다.

      애플리케이션 모니터링으로 이동

      검색창을 사용하여 이 페이지를 찾은 경우 부제목이 Monitoring인 결과를 선택합니다.

    2. Google Cloud 콘솔의 프로젝트 선택 도구에서 관리 프로젝트를 선택합니다.

    3. 사전 정의된 대시보드를 사용하고 원격 분석 데이터를 탐색하는 방법에 관한 자세한 안내는 애플리케이션 원격 분석 보기를 참고하세요.

    Cloud Hub에서 배포 실패 및 업데이트할 수 있는 배포, 애플리케이션에 영향을 미치는 Google Cloud 사고에 관한 정보, 할당량 한도에 가까운 서비스 등 추가 건강 및 성능 정보를 확인할 수도 있습니다.

    삭제

    이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 Google Cloud 프로젝트를 삭제하세요.

    배포된 애플리케이션 삭제

    1. 탐색 메뉴에서 애플리케이션을 클릭합니다.

      애플리케이션으로 이동

    2. 표에서 빠른 시작 3계층 웹 앱을 클릭합니다.

    3. 작업을 클릭하고 애플리케이션 삭제를 선택합니다.

    4. 삭제 필드에 Quickstart three-tier web app를 입력합니다.

    5. 삭제를 클릭합니다.

    시스템은 다음을 비롯한 애플리케이션을 삭제합니다.

    • 애플리케이션 세부정보가 App Design Center에서 삭제됩니다.
    • 기본 App Hub 애플리케이션이 삭제됩니다.
    • 기본 리소스가 삭제됩니다.

    선택사항: 프로젝트 삭제

    시작하기 전에에서 만든 하위 프로젝트를 삭제하려면 다음 단계를 따르세요.

    1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

      리소스 관리로 이동

    2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
    3. 프롬프트에서 프로젝트 ID를 입력한 후 종료를 클릭합니다.

    다음 단계