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

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

7e3cdbf62ad6e34cf379443678b1b378?s=128

Hisashi SOGA

October 03, 2021
Tweet

Transcript

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

    CLI ツールたち 2021/10/03 LT @ @sogaoh https://phpcon.php.gr.jp/2021/ 1 . 1
  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
  3. AGENDA AGENDA はじめに 主役級のツール 脇役級のツール 一点特化なツール おわりに 資料は公開してあります -> ※1.

    履歴が増殖するため、シークレットウィンドウでご覧ください(Chrome を推奨) ※2. ところどころのオレンジの文字はリンクになっています ※3. スペースで次のページに進みます([o] でOverview が見れます)) ( はダウンロードしたPDF ではリンクに飛べるはずなのでご利用ください) https://kutt.it/53AoU3 SpeakerDeck 版 1 . 3
  4. はじめに 主役級のツール 脇役級のツール 一点特化なツール おわりに 2 . 1

  5. 話の前提・範囲 話の前提・範囲 Terraform で構築 AWS Fargate (on Amazon ECS) 上で稼働

    CircleCI / Bitbucket Pipelines での自動/ 手動運用 最近、CodeBuild に一部移行 Blue/Green Deployment 対応あり    ( の続き) 「Laravel プロダクト Fargate 化への道」@ PHPerKaigi2021 (2021/3/28) 2 . 2
  6. 某2021 年3 月リリース案件 2 . 3

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

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

  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
  10. toolkit for containerized applications on AWS ゼロから App Runner をデプロイできる

    Dockerfile の準備は必要 こちらもシンプルなコマンド体系&設定 パラメータ定義は然程がんばらなくてよい CloudFormation ベース 未対応な点がいくつかある v1.11 で StartCommand に対応? copilot-cli copilot-cli 3 . 3
  11. はじめに 主役級のツール 脇役級のツール 一点特化なツール おわりに 4 . 1

  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
  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
  14. はじめに 主役級のツール 脇役級のツール 一点特化なツール おわりに 5 . 1

  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
  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
  17. はじめに 主役級のツール 脇役級のツール 一点特化なツール おわりに 6 . 1

  18. おわりに おわりに Deploy はプロダクトの価値を届ける最大事。 ラクに誰でもできる状態にすることで開発に注力 もできる。 ラクなDeploy を実現させる、 " 設定+少複数パラメータ"

    のCLI ツールがいろい ろあって素晴らしい時代。大いに使っていこう。 6 . 2
  19. End End お気づきの点あれば まで @sogaoh 6 . 3