PHP_Laravel_とAWS_FargateのDeploy戦略.pdf
by
TAKU
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
Confidential © dip Corporation. 1 © dip Corporation. PHP(Laravel)とAWS FargateのDeploy戦略 PHPカンファレンス2021 ディップ株式会社 中川拓哉
Slide 2
Slide 2 text
Confidential © dip Corporation. 自己紹介 • 中川 拓哉 • 2018年4月にディップ株式会社に新卒入社 • PHPer歴:3年6ヶ月 • Twitter:@tkdev0728 • Qiita:@taku-0728 2
Slide 3
Slide 3 text
Confidential © dip Corporation. 今日話すこと ● EC2→Fargateに移行した話をデプロイを主軸にして話します ● PHPの話を詳しく聞きたい方はdiscordか明日のスポンサーツアーにて! 3
Slide 4
Slide 4 text
Confidential © dip Corporation. 本番環境でコンテナ使ってますか? 4
Slide 5
Slide 5 text
Confidential © dip Corporation. インフラ環境の変化 5 オンプレミス クラウド
Slide 6
Slide 6 text
Confidential © dip Corporation. インフラ環境の変化 6 EKS ECS
Slide 7
Slide 7 text
Confidential © dip Corporation. 前提 7 出典:Googleトレンド (https://trends.google.co.jp/trends/explore?q=Laravel%20EC2,Laravel%20ECS,Laravel%20EKS)
Slide 8
Slide 8 text
Confidential © dip Corporation. まだEC2が多い 8
Slide 9
Slide 9 text
Confidential © dip Corporation. ディップはどうなのか 9
Slide 10
Slide 10 text
Confidential © dip Corporation. 10 長く運用されているサービス 新しいサービス
Slide 11
Slide 11 text
Confidential © dip Corporation. 11 長く運用されているサービス 新しいサービス EC2
Slide 12
Slide 12 text
Confidential © dip Corporation. 12 長く運用されているサービス 新しいサービス EC2 Fargate
Slide 13
Slide 13 text
Confidential © dip Corporation. 13 新しいサービス ● オートスケールをやりやすい ● 開発環境が簡単に作れる ● 開発環境と本番環境の差異が少ない ● インフラ構成を他チームに展開しやすい コンテナ化した理由 Fargate
Slide 14
Slide 14 text
Confidential © dip Corporation. 14 長く運用されているサービス
Slide 15
Slide 15 text
Confidential © dip Corporation. 15 長く運用されているサービス どうやってEC2からコンテナ化するのか
Slide 16
Slide 16 text
Confidential © dip Corporation. 一言でコンテナ化と言っても... 開発環境 16 ● 記事が多い ○ 先人のノウハウが参考になる
Slide 17
Slide 17 text
Confidential © dip Corporation. 一言でコンテナ化と言っても... 開発環境 17 ● 記事が多い ○ 先人のノウハウが参考になる 本番環境 ● 検討事項が多い ○ デプロイをどうやって行うか ○ ログ管理どうするのか ○ 外部監視どうするのか
Slide 18
Slide 18 text
Confidential © dip Corporation. 一言でコンテナ化と言っても... 開発環境 18 ● 記事が多い ○ 先人のノウハウが参考になる 本番環境 ● 検討事項が多い ○ デプロイをどうやって行うか ○ ログ管理どうするのか ○ 外部監視どうするのか
Slide 19
Slide 19 text
Confidential © dip Corporation. そもそも今のデプロイは どうやっているのか 19
Slide 20
Slide 20 text
Confidential © dip Corporation. 20 今のデプロイ方法 ● 手動ローリングアップデート
Slide 21
Slide 21 text
Confidential © dip Corporation. 今のデプロイの改善したいところ ● デプロイ用ツールのJenkinsの管理が属人化している ○ ● 操作手順が多く手動での操作が必要 ○ ● せっかくAWSなのにデプロイは外部ツール ○ ● インフラチームとアプリチームが縦割りになっている 21
Slide 22
Slide 22 text
Confidential © dip Corporation. 今回意識したこと ● デプロイ用ツールのJenkinsの管理が属人化している ○ デプロイ用の資材の管理を標準化したい ● 操作手順が多く手動での操作が必要 ○ できる限り手順を自動化したい ● せっかくAWSなのにデプロイは外部ツール... ○ CI/CDもAWSで完結させたい ● インフラチームとアプリチームが縦割りになっている ○ インフラとアプリをONE TEAMにしたい 22
Slide 23
Slide 23 text
Confidential © dip Corporation. できあがったもの 23
Slide 24
Slide 24 text
Confidential © dip Corporation. Fargateを用いたデプロイフロー 24
Slide 25
Slide 25 text
Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 25 ● GitHub上でソースをマージする
Slide 26
Slide 26 text
Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 26 ● マージをトリガーにCodebuildが動く ○ PHPUnitの実行 ○ PHPInsightsの実行 ○ Laravel Mixの実行 ○ Laravel キャッシュの生成
Slide 27
Slide 27 text
Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 27 ● ビルドに成功したら ECRにdocker imageを S3に後続処理で使うソースを それぞれ配置
Slide 28
Slide 28 text
Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 28 ● S3へのPushをトリガーに CodePipeline実行
Slide 29
Slide 29 text
Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 29 ● CodePipelineがCodeDeployを実行
Slide 30
Slide 30 text
Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 30 ● CodeDeployがECRのimageと S3内のコードを基に 新規環境を待機系として生成
Slide 31
Slide 31 text
Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 31 ● 待機系と本番系を入れ替える
Slide 32
Slide 32 text
Confidential © dip Corporation. 結果 32
Slide 33
Slide 33 text
Confidential © dip Corporation. 結果 ● デプロイ用ツールのJenkinsの管理が属人化している ○ ● 操作手順が多く手動での操作が必要 ○ ● せっかくAWSなのにデプロイは外部ツール ○ ● インフラチームとアプリチームが縦割りになっている 33
Slide 34
Slide 34 text
Confidential © dip Corporation. 結果 ● デプロイ用ツールのJenkinsの管理が属人化している ○ ソースと同じリポジトリで管理することで標準化された ● 操作手順が多く手動での操作が必要 ○ ● せっかくAWSなのにデプロイは外部ツール... ○ ● インフラチームとアプリチームが縦割りになっている 34
Slide 35
Slide 35 text
Confidential © dip Corporation. 結果 ● デプロイ用ツールのJenkinsの管理が属人化している ○ ソースと同じリポジトリで管理することで標準化された ● 操作手順が多く手動での操作が必要 ○ 待機系と本番系の入れ替え以外は自動で実行されるようになった ● せっかくAWSなのにデプロイは外部ツール... ○ ● インフラチームとアプリチームが縦割りになっている 35
Slide 36
Slide 36 text
Confidential © dip Corporation. 結果 ● デプロイ用ツールのJenkinsの管理が属人化している ○ ソースと同じリポジトリで管理することで標準化された ● 操作手順が多く手動での操作が必要 ○ 待機系と本番系の入れ替え以外は自動で実行されるようになった ● せっかくAWSなのにデプロイは外部ツール... ○ CI/CDをAWSで完結できた ● インフラチームとアプリチームが縦割りになっている 36
Slide 37
Slide 37 text
Confidential © dip Corporation. 結果 ● デプロイ用ツールのJenkinsの管理が属人化している ○ ソースと同じリポジトリで管理することで標準化された ● 操作手順が多く手動での操作が必要 ○ 待機系と本番系の入れ替え以外は自動で実行されるようになった ● せっかくAWSなのにデプロイは外部ツール... ○ CI/CDをAWSで完結できた ● インフラチームとアプリチームが縦割りになっている ○ インフラとアプリで相談しながら一緒に作り上げた 37
Slide 38
Slide 38 text
Confidential © dip Corporation. 最後に総括 38
Slide 39
Slide 39 text
Confidential © dip Corporation. 総括(やってみてどうだったか) ● インフラチームとの役割の線引きが一番困った ○ Terraformなど環境の用意はインフラ ○ yamlファイルなど環境に乗せるものはアプリ ● コンテナなので一度作ると環境の複製は楽だった ● このノウハウを社内でどう展開していくかが今後の課題 39
Slide 40
Slide 40 text
Confidential © dip Corporation. 40