$30 off During Our Annual Pro Sale. View Details »

PHPプロダクトのDeployをラクにするCLIツールたち

 PHPプロダクトのDeployをラクにするCLIツールたち

sogaoh's LT @ PHP Conference Japan 2021 | 開発したプロダクト、その価値を届けるにはいわゆるDeployを行わなければなりません。
このLTでは、デプロイ先の環境でアプリケーションがDocker上で稼働することを前提として、デプロイ時に利用できる便利なCLIツールをいくつか紹介します。
プロダクトに関わる皆さんの今後の運用・成長に有益となる情報を提供できれば幸いです。

https://fortee.jp/phpcon-2021/proposal/e7f97e1f-dd7e-4b9e-9ff6-a314a09a6c3f

Hisashi SOGA
PRO

October 03, 2021
Tweet

More Decks by Hisashi SOGA

Other Decks in Technology

Transcript

  1. PHP
    プロダクトの
    PHP
    プロダクトの



    Deploy
    をラクにする
    Deploy
    をラクにする



    CLI
    ツールたち
    CLI
    ツールたち
    2021/10/03
    LT @
    @sogaoh
    https://phpcon.php.gr.jp/2021/
    1 . 1

    View Slide

  2. About Me
    About Me
    Backend Engineer [AWS:5 CI/CD:3 Laravel:2]
    4
    月 CircleCI
    で Fargate
    への自動リリース機構構築成功
    5
    月 ECS on EC2 -> Fargate
    への移行で AWS
    ・Datadog
    大幅コストダウン成功 (*1)
    6
    月 NPO
    の新Web
    サービスに App Runner
    を採用するもAWS
    コスト削減に悪戦苦闘
    7
    月 随所で Terraform 1.0
    アップグレード (<- 0.13)
    8
    ・9
    月 “Mackerel+Lambda+Cognito”
    、 FARGATE_SPOT
    、CodeBuild
    (*1) AWS: $140/day
    削減、Datadog:
    年間料金を 20%
    に。CI/CD
    は Bitbucket Pipelines
    。 (*2)(*3) Zenn
    記事へ
    Hisashi SOGA (freelance: ant-in-giant)
    (*2) (*3)
    1 . 2

    View Slide

  3. AGENDA
    AGENDA
    はじめに
    主役級のツール
    脇役級のツール
    一点特化なツール
    おわりに

    資料は公開してあります ->
    ※1.
    履歴が増殖するため、シークレットウィンドウでご覧ください(Chrome
    を推奨)
    ※2.
    ところどころのオレンジの文字はリンクになっています
    ※3.
    スペースで次のページに進みます([o]
    でOverview
    が見れます))
    (
    はダウンロードしたPDF
    ではリンクに飛べるはずなのでご利用ください)
    https://kutt.it/53AoU3
    SpeakerDeck

    1 . 3

    View Slide

  4. はじめに
    主役級のツール
    脇役級のツール
    一点特化なツール
    おわりに
    2 . 1

    View Slide

  5. 話の前提・範囲
    話の前提・範囲
    Terraform
    で構築
    AWS Fargate (on Amazon ECS)
    上で稼働
    CircleCI / Bitbucket Pipelines
    での自動/
    手動運用
    最近、CodeBuild
    に一部移行
    Blue/Green Deployment
    対応あり
       (

    の続き)
    「Laravel
    プロダクト Fargate
    化への道」@ PHPerKaigi2021 (2021/3/28)
    2 . 2

    View Slide

  6. 某2021
    年3
    月リリース案件
    2 . 3

    View Slide

  7. 某2019
    年11
    月リリース案件
    2 . 4

    View Slide

  8. はじめに
    主役級のツール
    脇役級のツール
    一点特化なツール
    おわりに
    3 . 1

    View Slide

  9. deployment tool for Amazon ECS, pronounced same as “espresso”.
    ECS
    サービス定義・タスク定義の作成・更新
    シンプルなコマンド+少複数パラメータ&設定
    終了を待つ/
    待たないを選択可能
    テンプレート記法・tfstate
    読込・CFn
    連携便利
    jsonnet
    でDRY
    にBlue/Green Deployment
    を定義
    ECS Exec
    に対応(v1.5
    〜)
    CodeDeploy x FARGATE_SPOT
    に対応 (v1.6
    〜)
    ecspresso
    ecspresso
    3 . 2

    View Slide

  10. toolkit for containerized applications on AWS
    ゼロから App Runner
    をデプロイできる
    Dockerfile
    の準備は必要
    こちらもシンプルなコマンド体系&設定
    パラメータ定義は然程がんばらなくてよい
    CloudFormation
    ベース
    未対応な点がいくつかある
    v1.11
    で StartCommand
    に対応?
    copilot-cli
    copilot-cli
    3 . 3

    View Slide

  11. はじめに
    主役級のツール
    脇役級のツール
    一点特化なツール
    おわりに
    4 . 1

    View Slide

  12. テンプレートから JSON
    ファイルを生成できる
    import
    式とその継承 (*1)
    "
    似ているが微妙に異なる"
    設定の管理に強力に役立つ
    ECS
    タスク定義を簡素化(
    共通部分外部化) (*2)
    ex) jsonnet task-base.libsonnet > ecs-task-def.json
    使い過ぎに注意
    (*1)
    (*2)
    jsonnet
    jsonnet
    Jsonnet
    の薦め - Qiita
    ecspresso advent calendar 2020 day 20 - Jsonnet
    による定義ファイル生成 - Zenn
    4 . 2

    View Slide

  13. can load environment variables depending on the current directory
    カレントディレクトリ限定で環境変数展開
    AWS_PROFILE
    ・AWS_DEFAULT_REGION
    など
    {{ must_env “HOGE” }}
    で HOGE
    を置換
    bash
    で記述(工夫もできる)
    CI/CD
    で利用するときは↓ (*2)
    direnv allow . && eval "$(direnv export bash)"
    .envrc
    はリポジトリで管理すべきでない
    (*1)
    (*2)
    direnv
    direnv
    ecspresso advent calendar 2020 day 5 -
    テンプレート記法 - Zenn
    https://twitter.com/sogaoh/status/1368514857956384769
    4 . 3

    View Slide

  14. はじめに
    主役級のツール
    脇役級のツール
    一点特化なツール
    おわりに
    5 . 1

    View Slide



  15. a tool to manage ECS Scheduled Tasks / a minimal deployment tool for AWS Lambda
    inspired by ecspresso /
    同様のコマンド体系
    手動 / terraform (module)
    で生成
    dump / init
    で設定を採取
    apply / deploy
    で更新
    (lambroll
    )invoke
    で実行
    ecschedule
    ecschedule lambroll
    lambroll
    5 . 2

    View Slide

  16. Multi group and stream log tailing for AWS CloudWatch Logs
    ロググループをまたいで tail
    できる (*1)
    awscli
    経由なので事前に要 configure
    5
    分前以降のログが見たい場合 -s 5m
    と指定
    ラクに、というよりは確実に Deploy
    に臨む用
    (*1)
    utern
    utern
    AWS CloudWatch Logs
    を見やすくするツールを作った - Qiita
    5 . 3

    View Slide

  17. はじめに
    主役級のツール
    脇役級のツール
    一点特化なツール
    おわりに
    6 . 1

    View Slide

  18. おわりに
    おわりに
    Deploy
    はプロダクトの価値を届ける最大事。
    ラクに誰でもできる状態にすることで開発に注力
    もできる。
    ラクなDeploy
    を実現させる、
    "
    設定+少複数パラメータ"
    のCLI
    ツールがいろい
    ろあって素晴らしい時代。大いに使っていこう。
    6 . 2

    View Slide

  19. End
    End
    お気づきの点あれば
    まで
    @sogaoh
    6 . 3

    View Slide