Suche senden
Hochladen
Namespace API を用いたマルチテナント型 Web アプリの実践
•
4 gefällt mir
•
2,763 views
Takuya Ueda
Folgen
やっぱり App Engine ja Night #1 で登壇した時の資料です。
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 25
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法
Takuya Ueda
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
Takuya Ueda
Cloud functionsの紹介
Cloud functionsの紹介
Takuya Ueda
Cloud Functionsの紹介
Cloud Functionsの紹介
Takuya Ueda
goパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現する
Takuya Ueda
Goだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろう
Takuya Ueda
GoによるiOSアプリの開発
GoによるiOSアプリの開発
Takuya Ueda
Google Assistant関係のセッションまとめ
Google Assistant関係のセッションまとめ
Takuya Ueda
Empfohlen
粗探しをしてGoのコントリビューターになる方法
粗探しをしてGoのコントリビューターになる方法
Takuya Ueda
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
静的解析とUIの自動生成を駆使してモバイルアプリの運用コストを大幅に下げた話
Takuya Ueda
Cloud functionsの紹介
Cloud functionsの紹介
Takuya Ueda
Cloud Functionsの紹介
Cloud Functionsの紹介
Takuya Ueda
goパッケージで型情報を用いたソースコード検索を実現する
goパッケージで型情報を用いたソースコード検索を実現する
Takuya Ueda
Goだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろう
Takuya Ueda
GoによるiOSアプリの開発
GoによるiOSアプリの開発
Takuya Ueda
Google Assistant関係のセッションまとめ
Google Assistant関係のセッションまとめ
Takuya Ueda
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
Takuya Ueda
Goだけでモバイルアプリを作る
Goだけでモバイルアプリを作る
Takuya Ueda
Go Friday 傑作選
Go Friday 傑作選
Takuya Ueda
過去に自作したGoプロダクトの紹介 - Goオールスターズ
過去に自作したGoプロダクトの紹介 - Goオールスターズ
Shogo Ichinose
GAE/GoでLINE Messaging API を使う
GAE/GoでLINE Messaging API を使う
Takuya Ueda
Goにおけるバージョン管理の必要性 − vgoについて −
Goにおけるバージョン管理の必要性 − vgoについて −
Takuya Ueda
Pythonを始めよう
Pythonを始めよう
shouta yoshikai
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Takahiro Yoshimura
ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法
Keisuke Yamaguchi
Android6.0の機能まとめ 実機でサンプルを動かしてみた
Android6.0の機能まとめ 実機でサンプルを動かしてみた
Satoshi Noda
僕がAndroid開発する時にちょっと便利だと思うtips
僕がAndroid開発する時にちょっと便利だと思うtips
Masataka Kono
gopher-lua
gopher-lua
Takuya Ueda
2017823 pythonを始めよう
2017823 pythonを始めよう
shouta yoshikai
Git GUI
Git GUI
Meta Meta
GAE/Goとsyncパッケージ
GAE/Goとsyncパッケージ
Takuya Ueda
モバイルVR「Daydream」について
モバイルVR「Daydream」について
Satoshi Noda
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
Takuya Ueda
WebAssembly with Go
WebAssembly with Go
Takuya Ueda
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
You&I
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
Yu Nobuoka
HTTP2 RFC 発行記念祝賀会
HTTP2 RFC 発行記念祝賀会
Jxck Jxck
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Norito Agetsuma
Weitere ähnliche Inhalte
Was ist angesagt?
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
Takuya Ueda
Goだけでモバイルアプリを作る
Goだけでモバイルアプリを作る
Takuya Ueda
Go Friday 傑作選
Go Friday 傑作選
Takuya Ueda
過去に自作したGoプロダクトの紹介 - Goオールスターズ
過去に自作したGoプロダクトの紹介 - Goオールスターズ
Shogo Ichinose
GAE/GoでLINE Messaging API を使う
GAE/GoでLINE Messaging API を使う
Takuya Ueda
Goにおけるバージョン管理の必要性 − vgoについて −
Goにおけるバージョン管理の必要性 − vgoについて −
Takuya Ueda
Pythonを始めよう
Pythonを始めよう
shouta yoshikai
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Takahiro Yoshimura
ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法
Keisuke Yamaguchi
Android6.0の機能まとめ 実機でサンプルを動かしてみた
Android6.0の機能まとめ 実機でサンプルを動かしてみた
Satoshi Noda
僕がAndroid開発する時にちょっと便利だと思うtips
僕がAndroid開発する時にちょっと便利だと思うtips
Masataka Kono
gopher-lua
gopher-lua
Takuya Ueda
2017823 pythonを始めよう
2017823 pythonを始めよう
shouta yoshikai
Git GUI
Git GUI
Meta Meta
GAE/Goとsyncパッケージ
GAE/Goとsyncパッケージ
Takuya Ueda
モバイルVR「Daydream」について
モバイルVR「Daydream」について
Satoshi Noda
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
Takuya Ueda
WebAssembly with Go
WebAssembly with Go
Takuya Ueda
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
You&I
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
Yu Nobuoka
Was ist angesagt?
(20)
オススメの標準・準標準パッケージ20選
オススメの標準・準標準パッケージ20選
Goだけでモバイルアプリを作る
Goだけでモバイルアプリを作る
Go Friday 傑作選
Go Friday 傑作選
過去に自作したGoプロダクトの紹介 - Goオールスターズ
過去に自作したGoプロダクトの紹介 - Goオールスターズ
GAE/GoでLINE Messaging API を使う
GAE/GoでLINE Messaging API を使う
Goにおけるバージョン管理の必要性 − vgoについて −
Goにおけるバージョン管理の必要性 − vgoについて −
Pythonを始めよう
Pythonを始めよう
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法
Android6.0の機能まとめ 実機でサンプルを動かしてみた
Android6.0の機能まとめ 実機でサンプルを動かしてみた
僕がAndroid開発する時にちょっと便利だと思うtips
僕がAndroid開発する時にちょっと便利だと思うtips
gopher-lua
gopher-lua
2017823 pythonを始めよう
2017823 pythonを始めよう
Git GUI
Git GUI
GAE/Goとsyncパッケージ
GAE/Goとsyncパッケージ
モバイルVR「Daydream」について
モバイルVR「Daydream」について
Go MobileでAndroidアプリ開発
Go MobileでAndroidアプリ開発
WebAssembly with Go
WebAssembly with Go
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
Andere mochten auch
HTTP2 RFC 発行記念祝賀会
HTTP2 RFC 発行記念祝賀会
Jxck Jxck
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Norito Agetsuma
うしちゃん WebRTC Chat on SkyWayの開発コードw
うしちゃん WebRTC Chat on SkyWayの開発コードw
Kensaku Komatsu
Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用
Takuya Ueda
Go静的解析ハンズオン
Go静的解析ハンズオン
Takuya Ueda
Static Analysis in Go
Static Analysis in Go
Takuya Ueda
Go1.8 for Google App Engine
Go1.8 for Google App Engine
Takuya Ueda
Mobile Apps by Pure Go with Reverse Binding
Mobile Apps by Pure Go with Reverse Binding
Takuya Ueda
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
Takuya Ueda
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
Takuya Ueda
HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2
Jxck Jxck
WebRTC Browsers n Stacks Implementation differences
WebRTC Browsers n Stacks Implementation differences
Alexandre Gouaillard
Go入門
Go入門
Takuya Ueda
エキスパートGo
エキスパートGo
Takuya Ueda
メルカリ カウルのマスタデータの更新
メルカリ カウルのマスタデータの更新
Takuya Ueda
Gopher Fest 2017参加レポート
Gopher Fest 2017参加レポート
Takuya Ueda
Andere mochten auch
(16)
HTTP2 RFC 発行記念祝賀会
HTTP2 RFC 発行記念祝賀会
Javaトラブルに備えよう #jjug_ccc #ccc_h2
Javaトラブルに備えよう #jjug_ccc #ccc_h2
うしちゃん WebRTC Chat on SkyWayの開発コードw
うしちゃん WebRTC Chat on SkyWayの開発コードw
Goにおける静的解析と製品開発への応用
Goにおける静的解析と製品開発への応用
Go静的解析ハンズオン
Go静的解析ハンズオン
Static Analysis in Go
Static Analysis in Go
Go1.8 for Google App Engine
Go1.8 for Google App Engine
Mobile Apps by Pure Go with Reverse Binding
Mobile Apps by Pure Go with Reverse Binding
条件式評価器の実装による管理ツールの抽象化
条件式評価器の実装による管理ツールの抽象化
メルカリ・ソウゾウでは どうGoを活用しているのか?
メルカリ・ソウゾウでは どうGoを活用しているのか?
HTTP2 時代の Web - web over http2
HTTP2 時代の Web - web over http2
WebRTC Browsers n Stacks Implementation differences
WebRTC Browsers n Stacks Implementation differences
Go入門
Go入門
エキスパートGo
エキスパートGo
メルカリ カウルのマスタデータの更新
メルカリ カウルのマスタデータの更新
Gopher Fest 2017参加レポート
Gopher Fest 2017参加レポート
Ähnlich wie Namespace API を用いたマルチテナント型 Web アプリの実践
KobeGTUG GAE/Java
KobeGTUG GAE/Java
takagig
Google for モバイル アプリ 15-00- maps apiで、かしこく地図アプリを開発しよう
Google for モバイル アプリ 15-00- maps apiで、かしこく地図アプリを開発しよう
Google Cloud Platform - Japan
cloudmix GAE slides
cloudmix GAE slides
Kazunori Sato
[Lt]versionごとにurlを自動生成
[Lt]versionごとにurlを自動生成
shouta yoshikai
20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~
20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~
MasashiOtsuka1
gcp ja night #27 Google Cloud Endpoints with Golang
gcp ja night #27 Google Cloud Endpoints with Golang
啓介 大橋
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
Google Cloud Platform - Japan
ngCore engine for mobage platform
ngCore engine for mobage platform
Toru Yamaguchi
PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化
Takashi Okamoto
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
エンジニア勉強会 エスキュービズム
GTMF 2016:5.4で何がどう変わる?Unity最新情報アップデート ユニティ・テクノロジーズ・ジャパン合同会社
GTMF 2016:5.4で何がどう変わる?Unity最新情報アップデート ユニティ・テクノロジーズ・ジャパン合同会社
Game Tools & Middleware Forum
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
拓将 平林
Trat_sprint3
Trat_sprint3
tratwakate
Google io2011報告
Google io2011報告
cat kaotaro
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
Tsutomu Ogasawara
Google Apps をSocial にするOpenSocialPages (;゜○゜) お願いですから応募してください
Google Apps をSocial にするOpenSocialPages (;゜○゜) お願いですから応募してください
Nobuhiro Nakajima
PhoneGap勉強会 in 熊本
PhoneGap勉強会 in 熊本
Suguru Murakami
デブサミ2011 LT大会【17-E-7】appengine ja night
デブサミ2011 LT大会【17-E-7】appengine ja night
bluerabbit777jp
EclipseCon Europe 2019 modeling report
EclipseCon Europe 2019 modeling report
Akira Tanaka
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
Yoichiro Sakurai
Ähnlich wie Namespace API を用いたマルチテナント型 Web アプリの実践
(20)
KobeGTUG GAE/Java
KobeGTUG GAE/Java
Google for モバイル アプリ 15-00- maps apiで、かしこく地図アプリを開発しよう
Google for モバイル アプリ 15-00- maps apiで、かしこく地図アプリを開発しよう
cloudmix GAE slides
cloudmix GAE slides
[Lt]versionごとにurlを自動生成
[Lt]versionごとにurlを自動生成
20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~
20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~
gcp ja night #27 Google Cloud Endpoints with Golang
gcp ja night #27 Google Cloud Endpoints with Golang
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
ngCore engine for mobage platform
ngCore engine for mobage platform
PhoneGapでWebアプリをスマホアプリ化
PhoneGapでWebアプリをスマホアプリ化
Go言語によるWebアプリケーション開発
Go言語によるWebアプリケーション開発
GTMF 2016:5.4で何がどう変わる?Unity最新情報アップデート ユニティ・テクノロジーズ・ジャパン合同会社
GTMF 2016:5.4で何がどう変わる?Unity最新情報アップデート ユニティ・テクノロジーズ・ジャパン合同会社
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
[REV UP] あなたならどう使う?最新Azureレシピ for LINE Platform
Trat_sprint3
Trat_sprint3
Google io2011報告
Google io2011報告
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
Google Apps をSocial にするOpenSocialPages (;゜○゜) お願いですから応募してください
Google Apps をSocial にするOpenSocialPages (;゜○゜) お願いですから応募してください
PhoneGap勉強会 in 熊本
PhoneGap勉強会 in 熊本
デブサミ2011 LT大会【17-E-7】appengine ja night
デブサミ2011 LT大会【17-E-7】appengine ja night
EclipseCon Europe 2019 modeling report
EclipseCon Europe 2019 modeling report
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
Mehr von Takuya Ueda
静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発
Takuya Ueda
そうだ、Goを始めよう
そうだ、Goを始めよう
Takuya Ueda
マスター・オブ・goパッケージ
マスター・オブ・goパッケージ
Takuya Ueda
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
Takuya Ueda
Goでwebアプリを開発してみよう
Goでwebアプリを開発してみよう
Takuya Ueda
GAE/GoでWebアプリ開発入門
GAE/GoでWebアプリ開発入門
Takuya Ueda
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
Takuya Ueda
Mehr von Takuya Ueda
(7)
静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発
そうだ、Goを始めよう
そうだ、Goを始めよう
マスター・オブ・goパッケージ
マスター・オブ・goパッケージ
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
Goでwebアプリを開発してみよう
Goでwebアプリを開発してみよう
GAE/GoでWebアプリ開発入門
GAE/GoでWebアプリ開発入門
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
メルカリアッテの実務で使えた、GAE/Goの開発を効率的にする方法
Kürzlich hochgeladen
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Kürzlich hochgeladen
(8)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
Namespace API を用いたマルチテナント型 Web アプリの実践
1.
Namespace APIを用いた マルチテナント型Webアプリの実践 2017/03/02(木) @やっぱり App
Engine ja Night #1 The Go gopher was designed by Renee French. The gopher stickers was made by Takuya Ueda. Licensed under the Creative Commons 3.0 Attributions license.
2.
自己紹介 メルカリ/ソウゾウ 上田拓也 twitter: @tenntenn ■ コミュニティ活動 Google
Cloud Platform User Group (GCPUG) Tokyo Goビギナーズ golang.tokyo Go Conference ■ 業務 GAE/Goでメルカリアッテを作ってます GoやGCPコミュニティを盛り上げる仕事 Gopherを描く仕事(LINEスタンプ) 2
3.
アッテ開発の技術 : Golang
と Google App Engine
4.
アジェンダ ■ 複数アプリにバナーを配信するツールの開発 ● バナー配信ツールと必要とされた背景 ●
柔軟さと運用のしやすさの実現 ● 複数アプリから利用する ● デモ ■ Namespace APIとマルチテナント型アプリ ● Namespace APIとは ● マルチテナント型とは ● マルチテナント型アプリの実現 ■ まとめ 4
5.
複数のアプリに バナーを配信するツールを作る 5
6.
バナー配信ツール ■ 何をするツールか? ● モバイルアプリにバナーを配信する ●
バナーの管理や配信条件を設定する 6
7.
バナー配信ツールの要件 ■ 複数のアプリから利用する ● メルカリアッテとメルカリから利用 ●
サービス間で干渉させたくない ● サービスごとの特有の処理は入れない ■ わかりやすいUI ● 非エンジニアが使う ● サービスごとに別な人が入力する ■ デバッグがしやすい ● 個人環境や開発環境が作りやすい 7
8.
柔軟性と運用のしやすさの実現 ■ コア部分は柔軟に ● 配信条件は式で表現 ●
関数や変数も使えるようにする ■ UIはわかりやすく ● JSON Editorを用いて自動生成 ● 複雑な式は入力させず組み合わせる 8 String(os) == "ios" この話は別の機会に!
9.
複数のアプリから利用する ■ Namespace APIを使う ●
Namespaceを分けることで干渉させない ● サービスごとの設定はデータとして保存 ○ ソースコードの中には一切書かない ● 管理コンソールのエンドポイントも分ける 9
10.
デモ 10
11.
Namespace APIと マルチテナント型のWebアプリ 11
12.
Namespace APIとは? 12 ■ Namespace
API ● Namespaceを分けることのできるAPI ● 利用可能なAPI ○ Datastore, Memcache, Task Queue, Search ■ Namespaceを分ける理由 ● Namespace間でデータの干渉を防ぐ ● マルチテナント型のWebアプリを作れる
13.
マルチテナント型のWebアプリとは? ■ マルチテナント型 ● 1つのシステムを複数のユーザ(企業など) に提供する ■
GAEでの実現方法 13 Application Datastore NS1 NS2 NS3 Memcache NS1 NS2 NS3
14.
Namespaceを設定する ■ Contextに埋め込む ■ Datastoreにアクセスする 14 newCtx,
err := appengine.Namespace(ctx, ns) ... err = datastore.Get(newCtx, key, &val) Contextを差し替えるだけ!
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 }
16.
ホスト名でNamespaceを切り替える ■ Context付きのハンドラを作る 16 type AEHandler
interface { ServeHTTP(c context.Context, w http.ResponseWriter, r *http.Request) error } type AEHandlerFunc func(...) error func (f AEHandlerFunc) ServeHTTP(...) error { return f(c, w, r) } 省略
17.
ホスト名でNamespaceを切り替える ■ ミドルウェアでNamespaceを切り替える 17 func WithNS(h
AEHandler) AEHandler { return AEHandlerFunc(func(...){ ns, err := FindNS(c, r.Host) if err != nil {...} c, err = WithNamespace(c, ns) if err != nil {...} }) } ホスト名で探す DatastoreにNamespaceを保存
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
19.
管理用APIの分離 ■ Namespaceを保存するNamespaceは? ● 管理用のNamespaceは統一しておく ●
アプリ全体の共通設定などに使う ○ Namespaceの管理など ■ 管理用のAPIは管理者権限を要求する ● Namespaceの保存などは管理者だけ ● app.yamlで設定しておく 19 - url: /admin/api/ns/.* script: _go_app login: admin secure: always
20.
Cloud Console上での扱い ■ Cloud
Datastore ■ Memcahe 20
21.
マルチテナント型にした利点 ■ 他のサービス(アプリ)に影響与えない ● 見かけ上別のものになってる ●
データが競合しない ■ 開発環境をすぐ作れる ● Namespaceを登録すれば作れる ● 同じサービス(アプリ)内でも別の用途に環境 を提供できる ○ バナーだけじゃなく、他のコンテンツも 21
22.
マルチテナント型にしときの課題 ■ Namespace間の設定の移行 ● 開発環境を用意する際にほしい ●
移行するAPIを用意する必要がある ■ バグが出ると全滅する ● すべて同じソースコードを使ってる ● バージョンをうまく使って移行する ■ ローカルでのデバッグが面倒 ● ローカルのコンソールのNamespaceの対応が貧弱 ● MemcacheはNamespaceを指定できない 22
23.
まとめ ■ 柔軟さと運用のしやすさのバランスは大事 ● 柔軟でも使いづらかったら意味がない ●
工夫次第で両立することは可能 ■ GAEでマルチテナント型のアプリは簡単 ● Namespace APIが使える ● バージョン/サービスとうまく組み合わせる ■ GAEで社内ツールを作ると便利 ● アクセス制御も簡単 ● G Suite のアカウントも使える 23
24.
golang.tokyo ☓ GCPUG 24 4月開催予定@メルカリ 発表者募集中!
25.
Thank you! twitter: @tenntenn Qiita:
tenntenn connpass: tenntenn 25
Jetzt herunterladen