기존 서비스와 워크로드를 애플리케이션에 등록하면 비즈니스 목적에 따라 리소스를 구성하여 관리를 간소화할 수 있습니다. 이 접근 방식은 통합된 가시성, 모니터링, 거버넌스, 운영 제어를 제공합니다.
이 가이드에서는 아직 애플리케이션으로 공식적으로 정의되지 않은Google Cloud 에서 실행되는 기존 서비스와 워크로드를 그룹화하는 방법을 보여줍니다.
시작하기 전에
애플리케이션으로 리소스를 정리하기 전에 애플리케이션 관리의 초기 설정을 완료해야 합니다. 이 프로세스에는 일반적으로 다음과 같은 역할과 단계가 포함됩니다.
- 관리자: - 애플리케이션 관리 설정 앱 지원 폴더 또는 호스트 프로젝트가 애플리케이션의 관리 경계 역할을 하도록 구성합니다.
- 필요한 API를 사용 설정하세요. 사용하려는 모든 리소스에 대해 API를 사용 설정합니다.
- 사용자에게 액세스 권한 부여 애플리케이션 수명 주기에서 사용자의 책임에 따라 적절한 IAM 역할을 할당합니다.
 
- 개발자 및 운영자: - 관리자에게 초기 설정이 완료되었는지 확인합니다.
- 수행하려는 작업에 필요한 IAM 역할이 있는지 확인합니다.
- 설정 모델에 따라 앱 지원 폴더 또는 호스트 프로젝트를 엽니다.
 
애플리케이션 만들기
App Hub에서 기존 서비스와 워크로드의 논리적 컨테이너 역할을 하는 애플리케이션을 만듭니다.
콘솔
- Google Cloud 콘솔에서 프로젝트 선택기를 사용하여 설정 모델에 따라 호스트 프로젝트 또는 앱 지원 폴더의 관리 프로젝트를 선택합니다.
- App Hub에서 애플리케이션 페이지로 이동합니다. 
- 애플리케이션 만들기를 클릭합니다. 
- 애플리케이션 리전 및 이름 선택 창에서 지리적 분포 요구사항에 따라 애플리케이션에 가장 적합한 위치를 선택합니다. - 리전을 선택하여 리전 애플리케이션을 만듭니다. 그런 다음 App Hub 지원 리전에 따라 애플리케이션의 특정 리전을 선택합니다.
- 전역을 선택하여 전역 애플리케이션을 만듭니다.
 - 애플리케이션에 가장 적합한 위치에 대한 자세한 내용은 전역 및 리전 애플리케이션을 참고하세요. 
- 애플리케이션 이름을 입력하고 계속을 클릭합니다. 
- 선택사항: 검색 가능성과 거버넌스를 지원하도록 애플리케이션의 최상위 속성을 정의합니다. - 속성 추가 섹션에 표시 이름을 입력합니다.
- 중요도 목록에서 애플리케이션의 중요도를 나타내는 값을 선택합니다.
- 환경 목록에서 소프트웨어 수명 주기 단계를 나타내는 값을 선택합니다.
- 소유자의 표시 이름과 이메일 주소를 포함한 연락처 정보를 추가합니다. 이메일 주소는 username@yourdomain형식이어야 합니다(예:jane-doe@gmail.com).
 
- 만들기를 클릭합니다. 
gcloud
- 터미널 또는 Cloud Shell에서 Google Cloud CLI를 사용하여 애플리케이션을 만듭니다. - gcloud apphub applications create APPLICATION_NAME \ --project=PROJECT_ID \ --scope-type=LOCATION \ --location=REGION \ --display-name=DISPLAY_NAME \ --criticality-type=CRITICALITY \ --environment-type=ENVIRONMENT \ --developer-owners=display-name=DEV_NAME,email=DEV_EMAIL \ --operator-owners=display-name=OPERATOR_NAME,email=OPERATOR_EMAIL \ --business-owners=display-name=BUSINESS_NAME,email=BUSINESS_EMAIL- APPLICATION_NAME을 애플리케이션 이름으로 바꿉니다. 이름은 공백이 없는 소문자 영숫자 문자만 포함해야 합니다.- --criticality-type와 같은 선택적 플래그를 사용하여 애플리케이션의 최상위 속성을 정의하고 검색 가능성 및 거버넌스를 지원합니다.- 필수 플래그와 선택적 플래그의 경우 다음을 바꿉니다. - 필수: PROJECT_ID: 설정 모델에 따라 호스트 프로젝트 또는 관리 프로젝트의 ID입니다.
- 필수: - LOCATION: 지리적 배포 요구사항에 따른 애플리케이션의 위치입니다. 다음 중 한 가지 값을 사용합니다.- 리전 애플리케이션의 경우 REGIONAL
- 전역 애플리케이션의 경우 GLOBAL
 - 애플리케이션에 가장 적합한 위치에 대한 자세한 내용은 전역 및 리전 애플리케이션을 참고하세요. 
- 리전 애플리케이션의 경우 
- 필수: - REGION: 애플리케이션의 특정 지역입니다. 다음 중 한 가지 값을 사용합니다.- 애플리케이션의 --scope-type위치가REGIONAL로 설정된 경우 App Hub 지원 리전 이름을 지정합니다.
- 애플리케이션의 --scope-type위치가GLOBAL로 설정된 경우global를 사용합니다.
 
- 애플리케이션의 
- 선택사항: - DISPLAY_NAME: 애플리케이션의 표시 이름입니다.
- 선택사항: - CRITICALITY: 작업에 대한 애플리케이션의 중요도 수준입니다. 다음 값 중 하나를 사용하세요.- MISSION_CRITICAL
- HIGH
- MEDIUM
- LOW
 
- 선택사항: - ENVIRONMENT: 소프트웨어 수명 주기의 단계입니다. 다음 중 한 가지 값을 사용합니다.- PRODUCTION
- STAGING
- DEVELOPMENT
- TEST
 
- 선택사항: - DEV_NAME및- DEV_EMAIL: 개발자 소유자의 표시 이름과 이메일 주소입니다.
- 선택사항: - OPERATOR_NAME및- OPERATOR_EMAIL: 작업자 소유자의 표시 이름과 이메일 주소입니다.
- 선택사항: - BUSINESS_NAME및- BUSINESS_EMAIL: 비즈니스 소유자의 표시 이름과 이메일 주소입니다.
 
- 필수: 
- 프로젝트의 애플리케이션을 나열합니다. - gcloud apphub applications list \ --project=PROJECT_ID \ --location=REGION- 다음과 비슷한 출력이 표시되어야 합니다. - ID DISPLAY_NAME CREATE_TIME APPLICATION_NAME DISPLAY_NAME 2023-10-31T18:33:48
Terraform
Terraform으로 애플리케이션을 만들려면 google_apphub_application 리소스를 사용합니다.
이 리소스를 사용하면 이름, 위치, 속성 등 애플리케이션의 속성을 정의할 수 있습니다.
다음 예시에서는 정의된 심각도, 환경, 소유자 속성을 사용하여 us-central1에 리전 애플리케이션을 만듭니다.
resource "google_apphub_application" "example" {
    project        = "my-project-id"
    location       = "us-central1"
    application_id = "my-application"
    display_name   = "My Application"
    description    = "This application represents our platform."
    scope {
        type = "REGIONAL"
    }
    attributes {
        criticality {
            type = "MISSION_CRITICAL"
        }
        environment {
            type = "PRODUCTION"
        }
        business_owners {
            display_name = "Alice"
            email        = "alice@example.com"
        }
        developer_owners {
            display_name = "Bob"
            email        = "bob@example.com"
        }
        operator_owners {
            display_name = "Charlie"
            email        = "charlie@example.com"
        }
    }
}
서비스 및 워크로드 등록
애플리케이션을 만든 후 기존 서비스와 워크로드를 등록합니다.
콘솔
- Google Cloud 콘솔에서 프로젝트 선택기를 사용하여 설정 모델에 따라 호스트 프로젝트 또는 앱 지원 폴더의 관리 프로젝트를 선택합니다.
- App Hub에서 애플리케이션 페이지로 이동합니다. 
- 기존 서비스 및 워크로드를 등록할 애플리케이션의 이름을 클릭합니다. 
- 애플리케이션의 세부정보 페이지에서 서비스 및 워크로드 탭을 선택합니다. 이 탭에는 애플리케이션에 등록할 수 있는 기존 리소스 목록이 표시됩니다. App Hub를 사용하면 리소스 계층 구조 내에 있는 지원되는 리소스를 서비스 및 워크로드로 선택할 수 있습니다. 
- 등록하려는 각 서비스 또는 워크로드에 대해 다음을 수행합니다. - 서비스 및 워크로드 탭에서 서비스/워크로드 등록을 클릭합니다.
- 리소스 선택 창으로 이동하여 찾아보기를 클릭하여 등록하려는 서비스 또는 워크로드를 찾습니다.
- 서비스 또는 워크로드를 선택하고 선택을 클릭합니다.
- 리소스 선택 창에서 서비스 또는 워크로드의 이름을 입력하고 계속을 클릭합니다.
- 선택사항: 속성 추가 창에서 검색 가능성 및 거버넌스를 지원하도록 리소스의 최상위 속성을 정의합니다. 
- 계속을 클릭합니다. 
- 선택사항: 소유자 추가 섹션에서 서비스 또는 워크로드 소유자에 대한 세부정보를 추가합니다. 
- 등록을 클릭합니다. 
 
서비스 및 워크로드 탭에 등록된 서비스 또는 워크로드가 표시됩니다.
gcloud
App Hub를 사용하면 리소스 계층 구조 내에 있는 지원되는 리소스를 서비스 및 워크로드로 선택할 수 있습니다. Google Cloud CLI를 사용하여 터미널 또는 Cloud Shell에서 애플리케이션에 등록할 수 있는 서비스 또는 워크로드를 나열합니다. 서비스와 워크로드의 명령어는 약간 다릅니다.
서비스 등록
- 애플리케이션에 등록할 수 있는 사용 가능한 서비스를 나열합니다. - gcloud apphub discovered-services list \ --project=PROJECT_ID \ --location=REGION \ --filter=FILTER_EXPRESSION- 필수 플래그와 선택적 플래그의 경우 다음을 바꿉니다. - 필수: PROJECT_ID: 설정 모델에 따라 호스트 프로젝트 또는 관리 프로젝트의 ID입니다.
- 필수: - REGION: 지리적 분포에 따른 서비스의 특정 지역입니다. 다음 값 중 하나를 사용합니다.- 서비스가 리전인 경우 App Hub 지원 리전 이름을 지정합니다.
- 서비스가 전역인 경우 global을 사용합니다.
 
- 선택사항: - FILTER_EXPRESSION:- --filter플래그의 필터 표현식으로, 지정된 프로젝트의 서비스 또는 특정 속성이 있는 서비스만 표시합니다. 예를 들면 다음과 같습니다.- service_properties.gcp_project=projects/PROJECT_ID
- service_properties.gcp_project=projects/PROJECT_ID AND service_reference.uri~"forwardingRules"
 
 - 출력은 다음 예시와 비슷합니다. - ID SERVICE_REFERENCE SERVICE_PROPERTIES SERVICE_ID {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/forwardingRules/forwarding-rule'} {'gcpProject': 'projects/PROJECT_ID', 'location': 'REGION'}
- 필수: 
- 출력에서 서비스 ID - SERVICE_ID를 복사합니다.
- 애플리케이션에 서비스를 등록합니다. - gcloud apphub applications services create SERVICE_NAME \ --project=PROJECT_ID \ --location=REGION \ --application=APPLICATION_NAME \ --discovered-service=projects/PROJECT_ID/locations/REGION/discoveredServices/SERVICE_ID \ --display-name=SERVICE_DISPLAY_NAME \ --criticality-type=CRITICALITY \ --environment-type=ENVIRONMENT \ --developer-owners=display-name=DEV_NAME,email=DEV_EMAIL \ --operator-owners=display-name=OPERATOR_NAME,email=OPERATOR_EMAIL \ --business-owners=display-name=BUSINESS_NAME,email=BUSINESS_EMAIL- SERVICE_NAME을 애플리케이션에 서비스를 등록하는 데 사용할 이름으로 바꿉니다.- --criticality-type와 같은 선택적 플래그를 사용하여 서비스의 최상위 속성을 정의하고 검색 가능성과 거버넌스를 지원합니다.- 필수 플래그와 선택적 플래그의 경우 다음을 바꿉니다. - 필수: PROJECT_ID: 설정 모델에 따라 호스트 프로젝트 또는 관리 프로젝트의 ID입니다.
- 필수: - REGION: 지리적 분포에 따른 서비스의 특정 지역입니다. 다음 값 중 하나를 사용합니다.- 서비스가 리전인 경우 App Hub 지원 리전 이름을 지정합니다.
- 서비스가 전역인 경우 global을 사용합니다.
 
- 필수: - APPLICATION_NAME: 서비스를 등록할 애플리케이션의 이름입니다.
- 필수: - SERVICE_ID: 이전 출력에서 복사한 서비스 ID입니다.
- 선택사항: - SERVICE_DISPLAY_NAME: 서비스의 표시 이름입니다.
- 선택사항: - CRITICALITY: 작업에 대한 서비스의 중요도 수준입니다. 다음 값 중 하나를 사용합니다.- MISSION_CRITICAL
- HIGH
- MEDIUM
- LOW
 
- 선택사항: - ENVIRONMENT: 소프트웨어 수명 주기의 단계입니다. 다음 중 한 가지 값을 사용합니다.- PRODUCTION
- STAGING
- DEVELOPMENT
- TEST
 
- 선택사항: - DEV_NAME및- DEV_EMAIL: 개발자 소유자의 표시 이름과 이메일 주소입니다.
- 선택사항: - OPERATOR_NAME및- OPERATOR_EMAIL: 운영자 소유자의 표시 이름과 이메일 주소입니다.
- 선택사항: - BUSINESS_NAME및- BUSINESS_EMAIL: 비즈니스 소유자의 표시 이름과 이메일 주소입니다.
 
- 필수: 
- 애플리케이션에 등록된 서비스를 나열합니다. - gcloud apphub applications services list \ --application=APPLICATION_NAME --project=PROJECT_ID \ --location=REGION- 등록된 각 서비스에 대해 다음과 비슷한 출력을 얻어야 합니다. - ID DISPLAY_NAME SERVICE_REFERENCE CREATE_TIME SERVICE_NAME SERVICE_DISPLAY_NAME {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/forwardingRules/forwarding-rule'} 2023-11-01T21:38:08
워크로드 등록
- 애플리케이션에 등록할 수 있는 사용 가능한 워크로드를 나열합니다. - gcloud apphub discovered-workloads list \ --project=PROJECT_ID \ --location=REGION \ --filter=FILTER_EXPRESSION- 필수 플래그와 선택적 플래그의 경우 다음을 바꿉니다. - 필수: PROJECT_ID: 설정 모델에 따라 호스트 프로젝트 또는 관리 프로젝트의 ID입니다.
- 필수: - REGION: 지리적 분포에 따른 워크로드의 특정 리전입니다. 다음 값 중 하나를 사용합니다.- 워크로드가 리전인 경우 App Hub 지원 리전 이름을 지정합니다.
- 워크로드가 전역인 경우 global을 사용합니다.
 
- 선택사항: - FILTER_EXPRESSION:- --filter플래그의 필터 표현식으로, 지정된 프로젝트의 워크로드 또는 특정 속성이 있는 워크로드만 표시합니다(예:- workload_properties.gcp_project=projects/PROJECT_ID).
 - 출력은 다음 예시와 비슷합니다. - ID WORKLOAD_REFERENCE WORKLOAD_PROPERTIES WORKLOAD_ID {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/instanceGroups/mig-name'} {'gcpProject': 'projects/PROJECT_ID', 'location': 'REGION'}
- 필수: 
- 출력에서 워크로드 ID( - WORKLOAD_ID)를 복사합니다.
- 애플리케이션에 워크로드를 등록합니다. - gcloud apphub applications workloads create WORKLOAD_NAME \ --project=PROJECT_ID \ --location=REGION \ --application=APPLICATION_NAME \ --discovered-workload=projects/PROJECT_ID/locations/REGION/discoveredWorkloads/WORKLOAD_ID \ --display-name=WORKLOAD_DISPLAY_NAME \ --criticality-type=CRITICALITY \ --environment-type=ENVIRONMENT \ --developer-owners=display-name=DEV_NAME,email=DEV_EMAIL \ --operator-owners=display-name=OPERATOR_NAME,email=OPERATOR_EMAIL \ --business-owners=display-name=BUSINESS_NAME,email=BUSINESS_EMAIL- WORKLOAD_NAME을 워크로드를 애플리케이션에 등록하는 데 사용할 이름으로 바꿉니다.- --criticality-type와 같은 선택적 플래그를 사용하여 워크로드의 최상위 속성을 정의하고 검색 가능성과 거버넌스를 지원합니다.- 필수 플래그와 선택적 플래그의 경우 다음을 바꿉니다. - 필수: PROJECT_ID: 설정 모델에 따라 호스트 프로젝트 또는 관리 프로젝트의 ID입니다.
- 필수: - REGION: 지리적 분포에 따른 워크로드의 특정 리전입니다. 다음 값 중 하나를 사용합니다.- 워크로드가 리전인 경우 App Hub 지원 리전 이름을 지정합니다.
- 워크로드가 전역인 경우 global을 사용합니다.
 
- 필수: - APPLICATION_NAME: 워크로드를 등록할 애플리케이션의 이름입니다.
- 필수: - WORKLOAD_ID: 이전 출력에서 복사한 워크로드 ID입니다.
- 선택사항: - WORKLOAD_DISPLAY_NAME: 워크로드의 표시 이름입니다.
- 선택사항: - CRITICALITY: 운영에 대한 워크로드의 중요도 수준입니다. 다음 값 중 하나를 사용합니다.- MISSION_CRITICAL
- HIGH
- MEDIUM
- LOW
 
- 선택사항: - ENVIRONMENT: 소프트웨어 수명 주기의 단계입니다. 다음 중 한 가지 값을 사용합니다.- PRODUCTION
- STAGING
- DEVELOPMENT
- TEST
 
- 선택사항: - DEV_NAME및- DEV_EMAIL: 개발자 소유자의 표시 이름과 이메일 주소입니다.
- 선택사항: - OPERATOR_NAME및- OPERATOR_EMAIL: 운영자 소유자의 표시 이름과 이메일 주소입니다.
- 선택사항: - BUSINESS_NAME및- BUSINESS_EMAIL: 비즈니스 소유자의 표시 이름과 이메일 주소입니다.
 
- 필수: 
- 애플리케이션에 등록된 워크로드를 나열합니다. - gcloud apphub applications workloads list \ --application=APPLICATION_NAME --project=PROJECT_ID \ --location=REGION- 등록된 각 워크로드에 대해 다음과 유사한 출력을 얻어야 합니다. - ID DISPLAY_NAME WORKLOAD_REFERENCE CREATE_TIME WORKLOAD_NAME WORKLOAD_DISPLAY_NAME {'uri': '//compute.googleapis.com/projects/PROJECT_NUMBER/regions/REGION/instanceGroups/mig-name'} 2023-11-01T21:38:08
Terraform
Terraform을 사용하여 서비스 또는 워크로드를 애플리케이션에 등록하려면 google_apphub_discovered_service 및 google_apphub_discovered_workload 데이터 소스를 사용하여 등록하려는 리소스에 관한 정보를 동적으로 가져옵니다.
그런 다음 google_apphub_service 또는 google_apphub_workload 리소스를 사용하여 각각 서비스 또는 워크로드를 등록합니다.
서비스 등록
- URI를 사용하여 서비스에 관한 정보를 가져옵니다. - data "google_apphub_discovered_service" "my-service" { location = "REGION" service_uri = "SERVICE_URI" }
- 검색된 서비스를 애플리케이션에 등록합니다(예: - resource "google_apphub_service" "example" { project = "my-project-id" location = "us-central1" application_id = google_apphub_application.example.application_id service_id = "frontend-load-balancer" discovered_service = data.google_apphub_discovered_service.my-forwarding-rule.name display_name = "Frontend Load Balancer" description = "The primary load balancer for the frontend." }
워크로드 등록
- URI를 사용하여 워크로드에 관한 정보를 가져옵니다. - data "google_apphub_discovered_workload" "my-workload" { location = "REGION" workload_uri = "WORKLOAD_URI" }
- 탐색된 워크로드를 애플리케이션에 등록합니다. 예를 들면 다음과 같습니다. - resource "google_apphub_workload" "example" { project = "my-project-id" location = "us-central1" application_id = google_apphub_application.example.application_id workload_id = "frontend-instance-group" discovered_workload = data.google_apphub_discovered_workload.my-mig.name display_name = "Frontend Instance Group" description = "The managed instance group for the frontend." }
Google Cloud 리소스의 조직 구조를 수정하거나 기본 리소스를 삭제하면 애플리케이션에 등록된 서비스 및 워크로드의 등록 상태가 분리됨으로 변경될 수 있습니다. 분리된 서비스 및 워크로드는 등록 취소할 때까지 애플리케이션에 남아 있습니다. 자세한 내용은 서비스 및 워크로드의 등록 상태를 참고하세요.
권한 부여 및 작업 시작
애플리케이션을 만들고 App Hub에 리소스를 등록한 후에는 책임에 따라 사용자 액세스 권한을 부여하고 이 논리적 그룹을 단일 단위로 관리합니다.
- 액세스 요구사항에 따라 애플리케이션에 권한을 부여할 수 있습니다. 권장 역할 목록은 사용자에게 애플리케이션 중심 역할 부여를 참고하세요.
- Cloud Hub로 이동하여 상태, 성능, 비용 데이터를 비롯해 정의된 애플리케이션의 통합 운영 대시보드를 확인합니다.