PHP_Laravel_とAWS_FargateのDeploy戦略.pdf
by
TAKU
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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