Slide 1

Slide 1 text

GAE Flexible のdeploy ストレスを軽減する 10 の方法

Slide 2

Slide 2 text

ター ゲット/ 目的 GAE 初心者向け 自分もまだ1 ヶ月いじった程度 その間にdeploy をどのように変更していったかを共有 有識者の方へ 「 ぼくのかんがえたさいきょうのでぷろい」 つぶやき希望!!

Slide 3

Slide 3 text

自己紹介 天地 知也 ( あまち ともや) 略歴 看護師 ネイティブゲー ムのプロダクトマネー ジャ ネット広告の運用マネー ジャ システムエンジニアリングをさせてもらえないので 会社をつくり、 フリー のシステム屋

Slide 4

Slide 4 text

紹介するプロジェクトの概要 runtime : custom base : gcr.io/google‑appengine/php:latest

Slide 5

Slide 5 text

デプロイ 2 大ストレス デプロイ時間が長い 複数環境への対応

Slide 6

Slide 6 text

デプロイ時間が長い について

Slide 7

Slide 7 text

デプロイプロセスを分解 g c l o u d a p p d e p l o y のプロセスをまず確認 1. ひもづくservice などをチェック ( 詳しくは知らない) 2. CloudBuilder にファイルを送る 3. CloudBuilder でimage をビルド i. ファイルをコンテナ内にCOPY ii. 管理されているパッケー ジを取得 4. ContainerResistory にimage をPush 5. Service を更新 ( 詳しくは知らない) 6. 安全に向き先を切り替え

Slide 8

Slide 8 text

ビルドを速くする対策 1. GCE サー バでビルドしGCR へPUSH イメー ジを指定し、 直接デプロイ GCR への距離を短く CPU, メモリは環境ごとに要調整 2. 依存しているライブラリごとビルド ライブラリの初期インストー ルをなくす composer.json requires.txt etc...

Slide 9

Slide 9 text

向き先の切り替えを速く 3. 長いプロセスは分解しTaskQueue などを利用 ※ GAE Flexible はalpha (us‑central‑1 のみ申請したら利用可) ※ Pub/Sub で代替 4. Queue で利用するものはservice を分ける

Slide 10

Slide 10 text

Makefile の一部 PHP の場合 d e p l o y : $ { E N V } c p - f $ ( T A R G E T _ D I R ) c o m p o s e r . j s o n $ ( T A R G E T _ D I R ) / c o m p o s e r c p - f $ ( T A R G E T _ D I R ) / c o m p o s e r . g a e . j s o n $ ( T A R G E T _ D I R ) # # # デプロイコマンド # # # c p - f $ ( T A R G E T _ D I R ) / c o m p o s e r . l o c a l . j s o n $ ( T A R G E T _ D I R ) p r o j e c t | - s e r v i c e 1 | | - c o m p o s e r . l o c a l . j s o n | | - c o m p o s e r . g a e . j s o n | | - / v a r / c o m p o s e r / v e n d o r / { 常に利用するライブラリ} | | - / v e n d o r / { G A E だけで必要なライブラリ} e x t - r e d i s , e x t - m b s t r i n g | - s e r v i c e 2 | . . . ( 同じ構成)

Slide 11

Slide 11 text

複数環境への対応 について

Slide 12

Slide 12 text

複数環境の構築 5. 環境ごとにGCP のプロジェクトを分ける 6. 環境ごとにビルド用サー バのプロジェクトを分ける 7. 全プロジェクトに、 全環境用の設定ファイルを入れる 8. ルー ルをつくり、 バー ジョンは自動で採択

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

Makefile d e p l o y : $ { E N V } V E R S I O N = $ $ ( ( \ $ $ ( g c l o u d a p p v e r s i o n s l i s t - - s e r v i c e $ { S E R V I C E } - - p r o j e c | t a i l - 1 | a w k ' { p r i n t $ $ 2 } ' ) + 1 \ ) ) g c l o u d a p p d e p l o y a p p - $ { S E R V I C E } - $ { E N V } . y a m l \ - - q u i e t - - v e r s i o n $ { V E R S I O N } - - s e r v i c e $ { S E R V I C E } \ - - p r o j e c t p r o j - $ { E N V } p r o d : D o c k e r f i l e . p r o d c p - f $ ( P R O J E C T _ D I R ) / $ ( S E R V I C E _ D I R ) / D o c k e r f i l e . p r o d \ $ ( P R O J E C T _ D I R ) / $ ( S E R V I C E _ D I R ) / D o c k e r f i l e s t g : D o c k e r f i l e . s t g c p - f $ ( P R O J E C T _ D I R ) / $ ( S E R V I C E _ D I R ) / D o c k e r f i l e . s t g \ $ ( P R O J E C T _ D I R ) / $ ( S E R V I C E _ D I R ) / D o c k e r f i l e d e v : D o c k e r f i l e . d e v c p - f $ ( P R O J E C T _ D I R ) / $ ( S E R V I C E _ D I R ) / D o c k e r f i l e . d e v \ $ ( P R O J E C T _ D I R ) / $ ( S E R V I C E _ D I R ) / D o c k e r f i l e

Slide 15

Slide 15 text

その他のストレス対策 9. 過去のバー ジョンを自動で消すように( お金節約対策) d e p l o y : $ { E N V } g c l o u d a p p v e r s i o n s d e l e t e - - q u i e t \ $ $ ( g c l o u d a p p v e r s i o n s l i s t - - p r o j e c t p r o j - $ { E N V } \ - - s e r v i c e $ { S E R V I C E } \ - - f i l t e r = S E R V I N G _ S T A T U S : S T O P P E D | a w k ' { p r i n t $ $ 2 } ' ) \ - - s e r v i c e $ { S E R V I C E } - - p r o j e c t b i z s h i f t - $ { E N V }

Slide 16

Slide 16 text

その他のストレス対策 10. デプロイ開始と終了時にSlack に通知( デプロイまだ ですか? 対策) c u r l - X P O S T - - d a t a - u r l e n c o d e " p a y l o a d j s o n d a t a " \ h t t p s : / / h o o k s . s l a c k . c o m / s e r v i c e s / x x x x x x x x

Slide 17

Slide 17 text

おわり