Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

「やっぱり AppEngine ja night #2」のLTで発表した資料です。

Tomoya Amachi

October 26, 2017
Tweet

More Decks by Tomoya Amachi

Other Decks in Programming

Transcript

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

    View Slide

  2. ター
    ゲット/
    目的
    GAE
    初心者向け
    自分もまだ1
    ヶ月いじった程度
    その間にdeploy
    をどのように変更していったかを共有
    有識者の方へ

    ぼくのかんがえたさいきょうのでぷろい」
    つぶやき希望!!

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. デプロイプロセスを分解
    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.
    安全に向き先を切り替え

    View Slide

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

    View Slide

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

    View Slide

  10. 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
    | .
    .
    . (
    同じ構成)

    View Slide

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

    View Slide

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

    View Slide

  13. View Slide

  14. 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

    View Slide

  15. その他のストレス対策
    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
    }

    View Slide

  16. その他のストレス対策
    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

    View Slide

  17. おわり

    View Slide