Mais conteúdo relacionado
Semelhante a Namespace API を用いたマルチテナント型 Web アプリの実践 (20)
Namespace API を用いたマルチテナント型 Web アプリの実践
- 12. Namespace APIとは?
12
■ Namespace API
● Namespaceを分けることのできるAPI
● 利用可能なAPI
○ Datastore, Memcache, Task Queue, Search
■ Namespaceを分ける理由
● Namespace間でデータの干渉を防ぐ
● マルチテナント型のWebアプリを作れる
- 15. Namespaceを取得する
■ 取得する関数はないのでラップする
15
type keyType string
const key keyType = "namespace"
func WithContext(ctx context.Context, ns string)
(context.Context, error) {
c, err := appengine.Namespace(ctx, ns)
if err != nil {...}
return context.WithValue(c, key, ns), nil
}
func FromContext(ctx context.Context) string {
ns, _ := ctx.Value(key).(string)
return ns
}
- 18. URLとルーティングルール
■ GAEのURLは以下のようにアクセスできる
● Inst: インスタンス(数値)
● Ver: バージョン
● Serv: サービス
● AppID: アプリケーションID
■ ゆるいルーティング
● インスタンス、バージョン、サービスが存在しないとデ
フォルトのものにルーティングされる
● インスタンスorバージョンの代わりにNamespaceを書く
18
<Inst>-dot-<Ver>-dot-<Serv>-dot-<AppID>.appspot.com
<NS>-dot-<Ver>-dot-<Serv>-dot-<AppID>.appspot.com