Google App Engine의 Namespaces API를 사용하면 Google App Engine 데이터를 손쉽게 구분하여 관리할 수 있습니다. 이 API는 appengine.Namespace
함수를 통해 구현되며 특정 네임스페이스 사용 API에 통합되어 있습니다.
네임스페이스 관리자에서 네임스페이스를 설정하면 이 API에서 현재 네임스페이스를 가져와서 전역적으로 사용합니다. 네임스페이스를 명시적으로 로컬에서 선언할 수는 있지만, 네임스페이스를 명시적으로 선언하면 의도치 않은 데이터 유출 및 기타 버그가 발생할 수 있으므로 주의해야 합니다. 모든 App Engine 요청에서 모든 네임스페이스에 액세스할 수 있으므로 여러 네임스페이스 간에 액세스 제어 정책을 적용할 책임은 애플리케이션에 있습니다.
Namespaces API를 사용하여 다양한 애플리케이션을 개발할 수 있습니다. 이 API는 아래의 설명과 같이 멀티테넌시를 지원하는 애플리케이션에 특히 유용합니다.
멀티테넌시 정보
멀티테넌시란 원격 서버에서 실행되는 애플리케이션의 인스턴스 중 하나로 여러 클라이언트 조직(테넌트라고도 함)에 제공하는 소프트웨어 아키텍처를 가리키는 용어입니다.
멀티테넌시 아키텍처를 사용하면 테넌트를 간단하게 관리하고 프로비저닝할 수 있습니다. 보다 간결하고 맞춤화된 사용자 환경을 제공할 뿐 아니라 격리된 여러 데이터를 단일 데이터베이스 스키마로 집계할 수 있습니다. 결과적으로 애플리케이션의 확장성이 강화되고 확장에 따르는 비용 효율성도 개선됩니다. 모든 테넌트가 동일한 데이터베이스 스키마를 공유하므로 여러 테넌트의 데이터를 보다 쉽게 구분하고 분석할 수 있습니다. 또한 더욱 효율적인 애플리케이션을 통해 다양한 사용자 그룹에 커스텀 콘텐츠를 제공할 수 있습니다.
Namespaces API를 사용한 멀티테넌시 애플리케이션 구축
Namespaces API를 사용하면 테넌트마다 고유한 네임스페이스 문자열을 지정하여 각 테넌트의 데이터를 간단히 분리할 수 있습니다. 개별 요청에서 네임스페이스를 명시적으로 설정할 필요 없이 네임스페이스 관리자를 사용하여 전역적으로 각 테넌트의 네임스페이스를 설정하면 됩니다. 네임스페이스 사용 API는 항상 이 현재 네임스페이스를 기본적으로 사용합니다.
Namespaces API는 Google Workspace와 통합되어 Google Workspace 도메인을 현재 네임스페이스로 사용할 수 있습니다. Google Workspace를 사용하면 소유한 모든 도메인에 앱을 배포할 수 있으므로 Google Workspace 계정에 연결된 모든 도메인에 고유한 네임스페이스를 손쉽게 설정할 수 있습니다.
멀티테넌시 애플리케이션을 설계할 때는 네임스페이스 간에 데이터가 유출되지 않도록 방지해야 합니다. 자세한 내용은 데이터 유출 방지를 참조하세요.
네임스페이스를 사용하는 App Engine API
App Engine에서 현재 네임스페이스를 지원하는 API는 다음과 같습니다.
네임스페이스를 사용한 샘플 프로젝트
네임스페이스를 사용하는 2개의 샘플 방명록 애플리케이션이 제공됩니다.
- Python App Engine: appengine-multitenancy – 네임스페이스 인식 샘플 방명록 애플리케이션
- 자바 App Engine: appengine-gwtguestbook-namespaces-java – GWT를 사용한 네임스페이스 인식 샘플 방명록 애플리케이션
Namespace API의 기타 용도
Namespaces API는 App Engine에서 멀티테넌시를 지원하는 용도 이외에도 다음과 같이 다양하게 사용됩니다.
- 사용자 정보 격리
- 관리 데이터와 애플리케이션 데이터 분리
- 테스트용과 프로덕션용으로 별도의 Datastore 인스턴스 만들기
- 단일 App Engine 인스턴스에서 여러 앱 실행