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

Hisashi SOGA

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
  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. 話の前提・範囲 話の前提・範囲 Terraform で構築 AWS Fargate (on Amazon ECS) 上で稼働

    CircleCI / Bitbucket Pipelines での自動/ 手動運用 最近、CodeBuild に一部移行 Blue/Green Deployment 対応あり    ( の続き) 「Laravel プロダクト Fargate 化への道」@ PHPerKaigi2021 (2021/3/28) 2 . 2
  5. 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
  6. toolkit for containerized applications on AWS ゼロから App Runner をデプロイできる

    Dockerfile の準備は必要 こちらもシンプルなコマンド体系&設定 パラメータ定義は然程がんばらなくてよい CloudFormation ベース 未対応な点がいくつかある v1.11 で StartCommand に対応? copilot-cli copilot-cli 3 . 3
  7. テンプレートから 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
  8. 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
  9. ・ ・ 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
  10. 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