Save 37% off PRO during our Black Friday Sale! »

PHP_Laravel_とAWS_FargateのDeploy戦略.pdf

7fc4cc5734eb20c7f9b9b5791be33661?s=47 TAKU
October 02, 2021

 PHP_Laravel_とAWS_FargateのDeploy戦略.pdf

PHPカンファレンス2021で使用した登壇資料です。

7fc4cc5734eb20c7f9b9b5791be33661?s=128

TAKU

October 02, 2021
Tweet

Transcript

  1. Confidential © dip Corporation. 1 © dip Corporation. PHP(Laravel)とAWS FargateのDeploy戦略

    PHPカンファレンス2021 ディップ株式会社 中川拓哉
  2. Confidential © dip Corporation. 自己紹介 • 中川 拓哉 • 2018年4月にディップ株式会社に新卒入社

    • PHPer歴:3年6ヶ月 • Twitter:@tkdev0728 • Qiita:@taku-0728 2
  3. Confidential © dip Corporation. 今日話すこと • EC2→Fargateに移行した話をデプロイを主軸にして話します • PHPの話を詳しく聞きたい方はdiscordか明日のスポンサーツアーにて! 3

  4. Confidential © dip Corporation. 本番環境でコンテナ使ってますか? 4

  5. Confidential © dip Corporation. インフラ環境の変化 5 オンプレミス クラウド

  6. Confidential © dip Corporation. インフラ環境の変化 6 EKS ECS

  7. Confidential © dip Corporation. 前提 7 出典:Googleトレンド (https://trends.google.co.jp/trends/explore?q=Laravel%20EC2,Laravel%20ECS,Laravel%20EKS)

  8. Confidential © dip Corporation. まだEC2が多い 8

  9. Confidential © dip Corporation. ディップはどうなのか 9

  10. Confidential © dip Corporation. 10 長く運用されているサービス 新しいサービス

  11. Confidential © dip Corporation. 11 長く運用されているサービス 新しいサービス EC2

  12. Confidential © dip Corporation. 12 長く運用されているサービス 新しいサービス EC2 Fargate

  13. Confidential © dip Corporation. 13 新しいサービス • オートスケールをやりやすい • 開発環境が簡単に作れる

    • 開発環境と本番環境の差異が少ない • インフラ構成を他チームに展開しやすい コンテナ化した理由 Fargate
  14. Confidential © dip Corporation. 14 長く運用されているサービス

  15. Confidential © dip Corporation. 15 長く運用されているサービス どうやってEC2からコンテナ化するのか

  16. Confidential © dip Corporation. 一言でコンテナ化と言っても... 開発環境 16 • 記事が多い ◦

    先人のノウハウが参考になる
  17. Confidential © dip Corporation. 一言でコンテナ化と言っても... 開発環境 17 • 記事が多い ◦

    先人のノウハウが参考になる 本番環境 • 検討事項が多い ◦ デプロイをどうやって行うか ◦ ログ管理どうするのか ◦ 外部監視どうするのか
  18. Confidential © dip Corporation. 一言でコンテナ化と言っても... 開発環境 18 • 記事が多い ◦

    先人のノウハウが参考になる 本番環境 • 検討事項が多い ◦ デプロイをどうやって行うか ◦ ログ管理どうするのか ◦ 外部監視どうするのか
  19. Confidential © dip Corporation. そもそも今のデプロイは どうやっているのか 19

  20. Confidential © dip Corporation. 20 今のデプロイ方法 • 手動ローリングアップデート

  21. Confidential © dip Corporation. 今のデプロイの改善したいところ • デプロイ用ツールのJenkinsの管理が属人化している ◦ • 操作手順が多く手動での操作が必要

    ◦ • せっかくAWSなのにデプロイは外部ツール ◦ • インフラチームとアプリチームが縦割りになっている 21
  22. Confidential © dip Corporation. 今回意識したこと • デプロイ用ツールのJenkinsの管理が属人化している ◦ デプロイ用の資材の管理を標準化したい •

    操作手順が多く手動での操作が必要 ◦ できる限り手順を自動化したい • せっかくAWSなのにデプロイは外部ツール... ◦ CI/CDもAWSで完結させたい • インフラチームとアプリチームが縦割りになっている ◦ インフラとアプリをONE TEAMにしたい 22
  23. Confidential © dip Corporation. できあがったもの 23

  24. Confidential © dip Corporation. Fargateを用いたデプロイフロー 24

  25. Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 25 • GitHub上でソースをマージする

  26. Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 26 • マージをトリガーにCodebuildが動く ◦ PHPUnitの実行

    ◦ PHPInsightsの実行 ◦ Laravel Mixの実行 ◦ Laravel キャッシュの生成
  27. Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 27 • ビルドに成功したら ECRにdocker imageを

    S3に後続処理で使うソースを それぞれ配置
  28. Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 28 • S3へのPushをトリガーに CodePipeline実行

  29. Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 29 • CodePipelineがCodeDeployを実行

  30. Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 30 • CodeDeployがECRのimageと S3内のコードを基に 新規環境を待機系として生成

  31. Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 31 • 待機系と本番系を入れ替える

  32. Confidential © dip Corporation. 結果 32

  33. Confidential © dip Corporation. 結果 • デプロイ用ツールのJenkinsの管理が属人化している ◦ • 操作手順が多く手動での操作が必要

    ◦ • せっかくAWSなのにデプロイは外部ツール ◦ • インフラチームとアプリチームが縦割りになっている 33
  34. Confidential © dip Corporation. 結果 • デプロイ用ツールのJenkinsの管理が属人化している ◦ ソースと同じリポジトリで管理することで標準化された •

    操作手順が多く手動での操作が必要 ◦ • せっかくAWSなのにデプロイは外部ツール... ◦ • インフラチームとアプリチームが縦割りになっている 34
  35. Confidential © dip Corporation. 結果 • デプロイ用ツールのJenkinsの管理が属人化している ◦ ソースと同じリポジトリで管理することで標準化された •

    操作手順が多く手動での操作が必要 ◦ 待機系と本番系の入れ替え以外は自動で実行されるようになった • せっかくAWSなのにデプロイは外部ツール... ◦ • インフラチームとアプリチームが縦割りになっている 35
  36. Confidential © dip Corporation. 結果 • デプロイ用ツールのJenkinsの管理が属人化している ◦ ソースと同じリポジトリで管理することで標準化された •

    操作手順が多く手動での操作が必要 ◦ 待機系と本番系の入れ替え以外は自動で実行されるようになった • せっかくAWSなのにデプロイは外部ツール... ◦ CI/CDをAWSで完結できた • インフラチームとアプリチームが縦割りになっている 36
  37. Confidential © dip Corporation. 結果 • デプロイ用ツールのJenkinsの管理が属人化している ◦ ソースと同じリポジトリで管理することで標準化された •

    操作手順が多く手動での操作が必要 ◦ 待機系と本番系の入れ替え以外は自動で実行されるようになった • せっかくAWSなのにデプロイは外部ツール... ◦ CI/CDをAWSで完結できた • インフラチームとアプリチームが縦割りになっている ◦ インフラとアプリで相談しながら一緒に作り上げた 37
  38. Confidential © dip Corporation. 最後に総括 38

  39. Confidential © dip Corporation. 総括(やってみてどうだったか) • インフラチームとの役割の線引きが一番困った ◦ Terraformなど環境の用意はインフラ ◦

    yamlファイルなど環境に乗せるものはアプリ • コンテナなので一度作ると環境の複製は楽だった • このノウハウを社内でどう展開していくかが今後の課題 39
  40. Confidential © dip Corporation. 40