SlideShare a Scribd company logo
1 of 50
Download to read offline
App Engine Admin API
を利用した
GAE/Go環境へのデプロイ
と
東京GCPリージョンの
性能評価
2016/11/08 appengine ja night #35
熊野 良 (Ryo Kumano)
2014/06 〜 株式会社グルーヴノーツ 入社
- 肩書きは 「サーバエンジニア・データベースエンジニア」
- GCP上で稼動している自社サービスのインフラ設計・構築・運用を担当
- 2015/08 〜 東京 -> 福岡に移住
twitter: @ryok0607
過去(5年以内)に携わった業務
- 国内大手B2Cサイトのインフラ設計・構築・運用・DB設計・チューニング
など
App Engine Admin API
を利用した
GAE/Go環境へのデプロイ
“すいません
まずは
弊社サービス
のお話をさせてください
MAGELLAN BLOCKS
https://www.magellanic-clouds.com/blocks/
MAGELLAN BLOCKSの機能
● “VisionAPIとBigQuery” や
“BigQueryとSalsesforce” のように
API同士をマッシュアップする機能。
● ログ収集やファイルアップロード環境を
任意のGCP上に構築する
オーケストレーション機能。
MAGELLAN BLOCKSの機能
● “VisionAPIとBigQuery” や
“BigQueryとSalsesforce” のように
API同士をマッシュアップする機能。
● ログ収集やファイルアップロード環境を
任意のGCP上に構築する
オーケストレーション機能。 今日は
こちらの話
MAGELLAN BLOCKSによる
オーケストレーション
Message収集用のパイプラインと
Deployment Managerによる構築
https publish pull insert
構築には k8sのAPI や
BigQueryのAPI も
使ってますが図からは省略。
appengine ja night なので
https publish pull insert
GAE/Goのデプロイに
フォーカスをあてて
お話を進めます。
“Deployment Managerによる
GAE/Go運用で ハマったこと
が 2つ ありました
“その1
Deployment Manager
serviceを削除できない問題
Deployment Manager
serviceを削除できない問題
deploymentの削除時に
GAE上のserviceを削除することができない。
Cannot delete the final version of a service (module).
Please delete the whole service (module) in order to delete this version.
service上の最後のversionを削除しようとするが
versionが存在しないserviceとなってしまうので
version削除が実行できずエラーとなる。
Deployment Manager
serviceを削除できない問題
原因: Deployment Managerの仕様
version: 1
service: blocks
apps.modules.versions.create
version: 1
service: blocks
apps.modules.versions.delete
が実行されてしまう。
Create Destroy
“serviceを手動で消すか?
(ユーザさんに消していただく)
と思っていたところ…
App Engine Admin API
http://googlecloudplatform-japan.blogspot.jp/2016/08/app-engine-admin-api.html
App Engine Admin APIって
何ができるの?
GAEに対して柔軟な処理が可能。
● service/versionのcreateおよびdelete
● service/versionのupdate
○ トラフィック割り当ての変更
○ Scaling Policyの変更
○ Instance Typeの変更
○ etc…
詳しくはDocで
https://cloud.google.com/appengine/docs/admin-api
apps.services.delete
を実行してserviceと
versionを削除する。
事前にApp Engine Admin APIで殴る
ことでDeployment Managerによる
destroyを実行できる
version: 1
service: blocks
version: 1
service: blocks
apps.modules.versions.delete
が実行されるが既にserviceが
destroy済みなので問題ない。
Destroy: Phase1 Destroy: Phase2
App Engine
Admin API
“その1
Deployment Manager
serviceを削除できない問題
解決!!
“その2
GCSにライブラリファイルを
ステージングするの
面倒くさい問題
GCSにライブラリファイルを
ステージングするの
面倒くさい問題
アプリケーションのリソース?
”アプリケーションのリソース”に
サードパーティのライブラリは
含まれますか?
答: 含まれます。
アプリケーションのソースコードだけでなく
go getコマンド等で取得済みの
サードパーティのライブラリファイル群も
GCSにアップロードしてから
Deployment Manager
(もしくは App Engine Admin API)で
deployする必要があります。
ライブラリのファイル群を洗い出すの
面倒では?
ライブラリのファイル群を洗い出すの
面倒では?
弊社では
“appcfg.pyの処理を模倣してGAE/Go用の
パッケージングを行うシェルスクリプト”
を利用してGCSへの配置を実現している。
https://github.com/groovenauts/magellan-gcs-uploader/blob/master/makepkg.sh
ライブラリファイル群のuploadと
Deployment Managerを用いた
GAE/Goのdeploy
makepkg
.sh
pkg
pkg
App Engine
Admin API
1. makepkg.shを
実行して
ファイル群を
作成する
2. ファイル群を
GCSに
uploadする
3. Deployment Manager
(またはApp Engine Admin API)
を用いてdeployする
“その2
GCSにライブラリファイルを
ステージングするの
面倒くさい問題
解決!!
今回の発表における
App Engine Admin API まとめ
● GAEに対する操作を柔軟に実行できる。
● Deployment Managerのみでは
対応できない部分のフォローができる。
○ App Engine Admin API + Deployment Manager
のハイブリッド構成でいいとこ取りが可能。
● GAE/Goのdeployに関しては
ライブラリをGCSに配置するのが面倒。
○ ツールで頑張ればフォローできる。
“もう一つのテーマである
例のアレ
の話をさせてください!
祝!!
東京GCPリージョン
(asia-northeast1)
リリース!!
GAEに関しては
asia-east1を
飛び越えてのリリース
東京GCPリージョンの
性能評価
検証内容
1. Client -> GAE
us-centralと
asia-northeast1の
GAEに対して
apache benchを実行し
レスポンス速度を
比較する。
2. GAE -> Datastore
us-centralと
asia-northeast1で
GAEから
Datastoreに対して
put / get 処理を実行し
regionごとの性能を
比較する。
3. GAE -> CloudSQL
us-centralと
asia-northeast1で
GAEから
CloudSQLに対して
日付取得のSQLを実行し
regionごとの性能を
比較する。
asia-northeast1
us-central
性能検証1. Client -> GAE
http
(apache bench)
VS
http
(apache bench)
性能検証1. Client -> GAE
検証結果
性能検証1. Client -> GAE
所感
● asia-northeast1の応答速度は
約1.79倍(弊社検証時)
● 福岡からのアクセスでの数値なので
東京からのアクセスだともっと早い?
○ client環境(HW/NW)を完全に同一にすることは
難しいので残念ながら検証を断念。
asia-northeast1
us-central
性能検証2. GAE -> Datastore
(10万件put)
put 10万件
VS
put 10万件
性能検証2. GAE -> Datastore
(10万件put)
検証結果
asia-northeast1
us-central
性能検証2. GAE -> Datastore
(10万件から1件get x 10000回)
get x 10000回
VS
get x 10000回
性能検証2. GAE -> Datastore
(10万件から1件get x 10000回)
検証結果
性能検証2. GAE -> Datastore
所感
● なんか分からんけどasia-northeast1の方がput
もgetもパフォーマンスが良い。
● Datastoreのパフォーマンスを上げるために
asia-northeast1への移行検討はありかも。
○ 実際のデータ・クエリで検証してね。
asia-northeast1
us-central
性能検証3. GAE -> CloudSQL
select now() from dual x 1000回
VS
select now() from dual x 1000回
性能検証3. GAE -> CloudSQL
(各regionのGAE -> us-central1)
検証結果
asia-northeast1
us-central
性能検証3. GAE -> CloudSQL
延長戦
select now() from dual x 1000回
VS
select now() from dual x 1000回
asia-east1
性能検証3. GAE -> CloudSQL
(asia-northeast1のGAE -> asia-east1)
検証結果
“なんてことをやってたら
asia-northeast1に
CloudSQLがきました。
これで勝つる!
asia-northeast1
us-central
性能検証3. GAE -> CloudSQL
再延長戦
select now() from dual x 1000回
VS
select now() from dual x 1000回
性能検証3. GAE -> CloudSQL
asia-northeast1同士での
検証結果
asia-northeast1の
CloudSQL
GAEで叩くと何故か遅い
(asia-east1越しに叩くより遅い)
性能検証3. GAE -> CloudSQL
所感
● regionを跨いでCloudSQLのアクセスを
実行すると、ものすっごい性能が落ちる。
● asia-northeast1 での CloudSQL構成は
要検証。
今回の発表における
東京GCPリージョン性能評価まとめ
● 国内からGAEへのHTTPレスポンスが向上。
○ asia-northeast1 利用で2倍近い性能向上も。
● Datastoreのput/get性能向上。
○ asia-northeast1 & Datastore はいいぞ!
● GAE/CloudSQLもバリバリ使いたいなー。
○ asia-northeast1 の検証をもう少し頑張る。
○ 発表当日にCloudSQLリリースとか資料しんどい
ご清聴ありがとうございました

More Related Content

What's hot

123MASPでのGoogle Apps Scriptの活用
123MASPでのGoogle Apps Scriptの活用123MASPでのGoogle Apps Scriptの活用
123MASPでのGoogle Apps Scriptの活用
Junya Sato
 

What's hot (20)

123MASPでのGoogle Apps Scriptの活用
123MASPでのGoogle Apps Scriptの活用123MASPでのGoogle Apps Scriptの活用
123MASPでのGoogle Apps Scriptの活用
 
Google Apps Script 概要
Google Apps Script 概要Google Apps Script 概要
Google Apps Script 概要
 
GCPで広告動画を自動生成した話し
GCPで広告動画を自動生成した話しGCPで広告動画を自動生成した話し
GCPで広告動画を自動生成した話し
 
[デブサミ秋2015] 新卒入社エンジニアが 2年間fluentdを運用して学んだ事いろいろ
[デブサミ秋2015] 新卒入社エンジニアが2年間fluentdを運用して学んだ事いろいろ[デブサミ秋2015] 新卒入社エンジニアが2年間fluentdを運用して学んだ事いろいろ
[デブサミ秋2015] 新卒入社エンジニアが 2年間fluentdを運用して学んだ事いろいろ
 
LIGでのDocker活用
LIGでのDocker活用LIGでのDocker活用
LIGでのDocker活用
 
GCPのサーバレス
GCPのサーバレスGCPのサーバレス
GCPのサーバレス
 
Yahoo!ブラウザーにおける市場環境の分析と戦略化
Yahoo!ブラウザーにおける市場環境の分析と戦略化Yahoo!ブラウザーにおける市場環境の分析と戦略化
Yahoo!ブラウザーにおける市場環境の分析と戦略化
 
チームではじめるJetpack compose
チームではじめるJetpack composeチームではじめるJetpack compose
チームではじめるJetpack compose
 
Front-end package managers
Front-end package managersFront-end package managers
Front-end package managers
 
GAEの紹介
GAEの紹介GAEの紹介
GAEの紹介
 
GoogleスプレッドシートをクラウドDBっぽく使う方法
GoogleスプレッドシートをクラウドDBっぽく使う方法GoogleスプレッドシートをクラウドDBっぽく使う方法
GoogleスプレッドシートをクラウドDBっぽく使う方法
 
Sumo Logic活用事例とその運用
Sumo Logic活用事例とその運用Sumo Logic活用事例とその運用
Sumo Logic活用事例とその運用
 
1019 まぁ!簡単!google apps script入門
1019 まぁ!簡単!google apps script入門1019 まぁ!簡単!google apps script入門
1019 まぁ!簡単!google apps script入門
 
LIGにおけるフロントエンドチーム構築
LIGにおけるフロントエンドチーム構築LIGにおけるフロントエンドチーム構築
LIGにおけるフロントエンドチーム構築
 
行ってみよう、やってみよう!
行ってみよう、やってみよう!行ってみよう、やってみよう!
行ってみよう、やってみよう!
 
いい感じのフロントエンド開発環境を作ってみた
いい感じのフロントエンド開発環境を作ってみたいい感じのフロントエンド開発環境を作ってみた
いい感じのフロントエンド開発環境を作ってみた
 
アナザーエデンを支える技術〜効率的なコンテンツ制作のための開発基盤〜
アナザーエデンを支える技術〜効率的なコンテンツ制作のための開発基盤〜アナザーエデンを支える技術〜効率的なコンテンツ制作のための開発基盤〜
アナザーエデンを支える技術〜効率的なコンテンツ制作のための開発基盤〜
 
Angularおじさんの1年
Angularおじさんの1年Angularおじさんの1年
Angularおじさんの1年
 
animation_prototype_campfire_design
animation_prototype_campfire_designanimation_prototype_campfire_design
animation_prototype_campfire_design
 
20190725 mspj nagatani
20190725 mspj nagatani20190725 mspj nagatani
20190725 mspj nagatani
 

Similar to App engine admin apiを利用したgae%2 f go環境へのデプロイとgcp東京リージョンの性能評価

KobeGTUG GAE/Java
KobeGTUG GAE/JavaKobeGTUG GAE/Java
KobeGTUG GAE/Java
takagig
 
Googleクラウドサービスを利用したシステム構築
Googleクラウドサービスを利用したシステム構築Googleクラウドサービスを利用したシステム構築
Googleクラウドサービスを利用したシステム構築
Naomichi Yamakita
 

Similar to App engine admin apiを利用したgae%2 f go環境へのデプロイとgcp東京リージョンの性能評価 (20)

Angular 4がやってくる!? 新機能ダイジェスト
Angular 4がやってくる!? 新機能ダイジェストAngular 4がやってくる!? 新機能ダイジェスト
Angular 4がやってくる!? 新機能ダイジェスト
 
20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~
20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~
20220303_SAP AppGyverとSAP CAPで簡単なアプリを作ってみた~市民開発者とプロ開発者で作業を分担してみた~
 
長期運用タイトルの GCP 移行実例とグレンジのこれから | Google Cloud INSIDE Games & Apps
長期運用タイトルの GCP 移行実例とグレンジのこれから | Google Cloud INSIDE Games & Apps 長期運用タイトルの GCP 移行実例とグレンジのこれから | Google Cloud INSIDE Games & Apps
長期運用タイトルの GCP 移行実例とグレンジのこれから | Google Cloud INSIDE Games & Apps
 
KobeGTUG GAE/Java
KobeGTUG GAE/JavaKobeGTUG GAE/Java
KobeGTUG GAE/Java
 
Googleクラウドサービスを利用したシステム構築
Googleクラウドサービスを利用したシステム構築Googleクラウドサービスを利用したシステム構築
Googleクラウドサービスを利用したシステム構築
 
Agile Japan 2013 サテライト<長野>事例研究講演資料
Agile Japan 2013 サテライト<長野>事例研究講演資料Agile Japan 2013 サテライト<長野>事例研究講演資料
Agile Japan 2013 サテライト<長野>事例研究講演資料
 
Google App Engine Java 入門
Google App Engine Java 入門Google App Engine Java 入門
Google App Engine Java 入門
 
CloudSQL v2は デキる子なのか?
CloudSQL v2は デキる子なのか?CloudSQL v2は デキる子なのか?
CloudSQL v2は デキる子なのか?
 
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
 
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
Java クライント実装におけるAPIスタイル頂上決戦! 野良REST vs GraphQL vs OData vs OpenAPI (Swagger)
 
マイクロサービスのためのフレームワークGoaのご紹介
マイクロサービスのためのフレームワークGoaのご紹介マイクロサービスのためのフレームワークGoaのご紹介
マイクロサービスのためのフレームワークGoaのご紹介
 
Goji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャGoji とレイヤ化アーキテクチャ
Goji とレイヤ化アーキテクチャ
 
今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おう今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おう
 
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化2021/03/19 パブリッククラウドを活かす運用プロセス自動化
2021/03/19 パブリッククラウドを活かす運用プロセス自動化
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechcon
 
AMP & PWA
AMP & PWAAMP & PWA
AMP & PWA
 
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Appsグリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
 
私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由
 
Ignite 2021秋 recap - 開発者向け新機能紹介
Ignite 2021秋 recap - 開発者向け新機能紹介Ignite 2021秋 recap - 開発者向け新機能紹介
Ignite 2021秋 recap - 開発者向け新機能紹介
 
Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介Rails on GKEで運用するWebアプリケーションの紹介
Rails on GKEで運用するWebアプリケーションの紹介
 

App engine admin apiを利用したgae%2 f go環境へのデプロイとgcp東京リージョンの性能評価