다중 테넌트 지원

분리된 데이터 파티션을 여러 클라이언트 조직(테넌트)에 제공하는 방법으로 애플리케이션에서 다중 테넌트 지원을 지원할 수 있습니다. 이렇게 하면 모든 테넌트에 대해 동일한 데이터 스키마를 유지하는 동시에 각 테넌트에 대한 데이터 값을 맞춤설정할 수 있습니다. 테넌트를 추가할 때 데이터 구조를 변경할 필요가 없기 때문에 새로운 테넌트의 프로비저닝이 보다 효율적으로 이루어집니다.

다중 테넌트 지원의 이점

Google Cloud Datastore는 다음을 사용하는 동안 다중 테넌트 지원 애플리케이션이 각 테넌트에 대해 분리된 데이터 사일로를 사용하도록 허용합니다.

  • 단일 프로젝트
  • 종류의 단일 논리 구조
  • 단일 색인 정의 집합(종류가 각 테넌트에 대해 논리적으로 동일하기 때문)

Cloud Datastore는 네임스페이스를 제공하여 다중 테넌트 지원을 사용 설정합니다. 또한 네임스페이스가 사용 설정된 기타 Google App Engine API에 대해서도 다중 테넌트 지원이 제공됩니다(Go, 자바, Python).

다중 테넌트 지원 및 파티션으로 나누어진 데이터

Cloud Datastore는 각 테넌트의 데이터를 사일로로 격리하기 위해 파티션을 사용합니다. 프로젝트 ID 및 네임스페이스 ID의 조합으로 각 파티션을 식별하는 파티션 ID가 만들어집니다. 항목은 단일 파티션에 속하며 쿼리의 범위도 단일 파티션으로 지정됩니다.

항목의 네임스페이스 지정

네임스페이스는 항목을 생성할 때 지정하게 되며 항목을 생성한 후에는 네임스페이스를 변경할 수 없습니다. 항목의 네임스페이스를 명시적으로 지정하지 않으면 문자열 식별자가 없는 기본 네임스페이스로 자동 할당됩니다.

상위 항목이 있는 경우 네임스페이스 사용법

항목과 그 상위에 있는 모든 항목은 단 하나의 네임스페이스에 소속됩니다. 즉, 다른 상위 항목이 지정된 항목을 생성하면 하위 항목과 상위 항목이 모두 동일한 네임스페이스에 있게 되며 다른 네임스페이스를 지정할 수 없습니다.

샘플 사용 사례

다중 테넌트 지원의 주요 이점은 동일한 애플리케이션을 다양한 클라이언트 조직에 사용할 수 있다는 데 있습니다. 특정 종류에 대해 이 이점을 활용하려면 네임스페이스에 상관없이 애플리케이션이 동일하게 작동해야 합니다. 예를 들어 애플리케이션의 관점에서 한 네임스페이스에 있는 Task 종류의 항목은 기타 모든 네임스페이스의 Task 종류 항목과 논리적으로 동일해야 합니다. 그래야 애플리케이션에서 Task 항목이 포함된 네임스페이스에 상관없이 단일 집합의 색인 정의를 사용해 Task 쿼리를 지원할 수 있습니다.

사용자 기반으로 데이터를 격리하는 Task List 애플리케이션을 예로 들어보겠습니다. 애플리케이션은 사용자 이름을 기반으로 네임스페이스를 정의하므로 다음과 같은 파티션으로 나누어집니다.

Partition ID: project:"my_project_id"/namespace:"Joe"
Partition ID: project:"my_project_id"/namespace:"Alice"
Partition ID: project:"my_project_id"/namespace:"Charlie"

애플리케이션은 모든 네임스페이스에 사용할 Task 종류의 논리적 구조를 다음과 같이 정의할 수 있습니다.

kind: Task
properties:
 - "done", Boolean
 - "created", DateTime
 - "description", String, excluded from index

사용자가 Task 종류의 항목을 생성할 때 항목은 사용자의 자체 파티션에 저장되므로 데이터가 격리됩니다. Task 종류에는 단 하나의 스키마가 사용되므로 애플리케이션은 네임스페이스 전반에 걸쳐 Task 항목을 일관되게 처리합니다. 데이터가 격리되어 있고 일관된 작동을 하는 애플리케이션은 다중 테넌트 지원이라고 할 수 있습니다.

Task 종류의 논리적 구조가 네임스페이스별로 차이가 있는 경우에는 네임스페이스 전반적으로 Task 항목을 다르게 처리하기 때문에 애플리케이션이 다중 테넌트가 아니게 됩니다. 네임스페이스에 따라 스키마가 다른 Task 종류를 예로 들어보겠습니다.

  • Joe 네임스페이스의 Task 항목이 색인에서 description 속성을 제외하는 경우
  • Alice 색인의 Task 항목이 색인의 description 속성을 포함하는 경우

애플리케이션은 description 속성에서 Alice의 Task 항목을 쿼리할 수 있지만 description 속성에서는 Joe의 Task 항목을 쿼리할 수 없기 때문에 애플리케이션은 다중 테넌트 지원이 되지 않습니다.

콘솔에서 네임스페이스 보기

프로젝트에서 사용되는 네임스페이스의 통계를 확인하려면 Google Cloud Platform 콘솔의 Datastore 대시보드 페이지를 방문하세요. 프로젝트에서 어떤 네임스페이스가 사용되는지 프로그래매틱 방식으로 확인하려면 네임스페이스 쿼리를 참조하세요.

테넌트 에 데이터를 그룹화해야 한다면 데이터를 종류별로 분류하고 항목 그룹과 관련이 높은 데이터를 구성할 수도 있습니다.

다음 단계

  • 항목 자세히 알아보기
  • 쿼리 자세히 알아보기
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Cloud Datastore 문서