Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PHP_Laravel_とAWS_FargateのDeploy戦略.pdf
Search
TAKU
October 02, 2021
Programming
4
3.3k
PHP_Laravel_とAWS_FargateのDeploy戦略.pdf
PHPカンファレンス2021で使用した登壇資料です。
TAKU
October 02, 2021
Tweet
Share
Other Decks in Programming
See All in Programming
Android 16KBページサイズ対応をはじめからていねいに
mine2424
0
130
AI コーディングエージェントの時代へ:JetBrains が描く開発の未来
masaruhr
1
190
AI時代の『改訂新版 良いコード/悪いコードで学ぶ設計入門』 / ai-good-code-bad-code
minodriven
20
8.1k
Result型で“失敗”を型にするPHPコードの書き方
kajitack
5
930
AIともっと楽するE2Eテスト
myohei
7
2.8k
新メンバーも今日から大活躍!SREが支えるスケールし続ける組織のオンボーディング
honmarkhunt
5
7.7k
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
790
10 Costly Database Performance Mistakes (And How To Fix Them)
andyatkinson
0
440
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
290
「テストは愚直&&網羅的に書くほどよい」という誤解 / Test Smarter, Not Harder
munetoshi
0
180
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
400
脱Riverpod?fqueryで考える、TanStack Queryライクなアーキテクチャの可能性
ostk0069
0
260
Featured
See All Featured
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
We Have a Design System, Now What?
morganepeng
53
7.7k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
Designing Experiences People Love
moore
142
24k
A Tale of Four Properties
chriscoyier
160
23k
Why Our Code Smells
bkeepers
PRO
336
57k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Agile that works and the tools we love
rasmusluckow
329
21k
Transcript
Confidential © dip Corporation. 1 © dip Corporation. PHP(Laravel)とAWS FargateのDeploy戦略
PHPカンファレンス2021 ディップ株式会社 中川拓哉
Confidential © dip Corporation. 自己紹介 • 中川 拓哉 • 2018年4月にディップ株式会社に新卒入社
• PHPer歴:3年6ヶ月 • Twitter:@tkdev0728 • Qiita:@taku-0728 2
Confidential © dip Corporation. 今日話すこと • EC2→Fargateに移行した話をデプロイを主軸にして話します • PHPの話を詳しく聞きたい方はdiscordか明日のスポンサーツアーにて! 3
Confidential © dip Corporation. 本番環境でコンテナ使ってますか? 4
Confidential © dip Corporation. インフラ環境の変化 5 オンプレミス クラウド
Confidential © dip Corporation. インフラ環境の変化 6 EKS ECS
Confidential © dip Corporation. 前提 7 出典:Googleトレンド (https://trends.google.co.jp/trends/explore?q=Laravel%20EC2,Laravel%20ECS,Laravel%20EKS)
Confidential © dip Corporation. まだEC2が多い 8
Confidential © dip Corporation. ディップはどうなのか 9
Confidential © dip Corporation. 10 長く運用されているサービス 新しいサービス
Confidential © dip Corporation. 11 長く運用されているサービス 新しいサービス EC2
Confidential © dip Corporation. 12 長く運用されているサービス 新しいサービス EC2 Fargate
Confidential © dip Corporation. 13 新しいサービス • オートスケールをやりやすい • 開発環境が簡単に作れる
• 開発環境と本番環境の差異が少ない • インフラ構成を他チームに展開しやすい コンテナ化した理由 Fargate
Confidential © dip Corporation. 14 長く運用されているサービス
Confidential © dip Corporation. 15 長く運用されているサービス どうやってEC2からコンテナ化するのか
Confidential © dip Corporation. 一言でコンテナ化と言っても... 開発環境 16 • 記事が多い ◦
先人のノウハウが参考になる
Confidential © dip Corporation. 一言でコンテナ化と言っても... 開発環境 17 • 記事が多い ◦
先人のノウハウが参考になる 本番環境 • 検討事項が多い ◦ デプロイをどうやって行うか ◦ ログ管理どうするのか ◦ 外部監視どうするのか
Confidential © dip Corporation. 一言でコンテナ化と言っても... 開発環境 18 • 記事が多い ◦
先人のノウハウが参考になる 本番環境 • 検討事項が多い ◦ デプロイをどうやって行うか ◦ ログ管理どうするのか ◦ 外部監視どうするのか
Confidential © dip Corporation. そもそも今のデプロイは どうやっているのか 19
Confidential © dip Corporation. 20 今のデプロイ方法 • 手動ローリングアップデート
Confidential © dip Corporation. 今のデプロイの改善したいところ • デプロイ用ツールのJenkinsの管理が属人化している ◦ • 操作手順が多く手動での操作が必要
◦ • せっかくAWSなのにデプロイは外部ツール ◦ • インフラチームとアプリチームが縦割りになっている 21
Confidential © dip Corporation. 今回意識したこと • デプロイ用ツールのJenkinsの管理が属人化している ◦ デプロイ用の資材の管理を標準化したい •
操作手順が多く手動での操作が必要 ◦ できる限り手順を自動化したい • せっかくAWSなのにデプロイは外部ツール... ◦ CI/CDもAWSで完結させたい • インフラチームとアプリチームが縦割りになっている ◦ インフラとアプリをONE TEAMにしたい 22
Confidential © dip Corporation. できあがったもの 23
Confidential © dip Corporation. Fargateを用いたデプロイフロー 24
Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 25 • GitHub上でソースをマージする
Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 26 • マージをトリガーにCodebuildが動く ◦ PHPUnitの実行
◦ PHPInsightsの実行 ◦ Laravel Mixの実行 ◦ Laravel キャッシュの生成
Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 27 • ビルドに成功したら ECRにdocker imageを
S3に後続処理で使うソースを それぞれ配置
Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 28 • S3へのPushをトリガーに CodePipeline実行
Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 29 • CodePipelineがCodeDeployを実行
Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 30 • CodeDeployがECRのimageと S3内のコードを基に 新規環境を待機系として生成
Confidential © dip Corporation. Fargateを用いたアプリケーションの構成図 31 • 待機系と本番系を入れ替える
Confidential © dip Corporation. 結果 32
Confidential © dip Corporation. 結果 • デプロイ用ツールのJenkinsの管理が属人化している ◦ • 操作手順が多く手動での操作が必要
◦ • せっかくAWSなのにデプロイは外部ツール ◦ • インフラチームとアプリチームが縦割りになっている 33
Confidential © dip Corporation. 結果 • デプロイ用ツールのJenkinsの管理が属人化している ◦ ソースと同じリポジトリで管理することで標準化された •
操作手順が多く手動での操作が必要 ◦ • せっかくAWSなのにデプロイは外部ツール... ◦ • インフラチームとアプリチームが縦割りになっている 34
Confidential © dip Corporation. 結果 • デプロイ用ツールのJenkinsの管理が属人化している ◦ ソースと同じリポジトリで管理することで標準化された •
操作手順が多く手動での操作が必要 ◦ 待機系と本番系の入れ替え以外は自動で実行されるようになった • せっかくAWSなのにデプロイは外部ツール... ◦ • インフラチームとアプリチームが縦割りになっている 35
Confidential © dip Corporation. 結果 • デプロイ用ツールのJenkinsの管理が属人化している ◦ ソースと同じリポジトリで管理することで標準化された •
操作手順が多く手動での操作が必要 ◦ 待機系と本番系の入れ替え以外は自動で実行されるようになった • せっかくAWSなのにデプロイは外部ツール... ◦ CI/CDをAWSで完結できた • インフラチームとアプリチームが縦割りになっている 36
Confidential © dip Corporation. 結果 • デプロイ用ツールのJenkinsの管理が属人化している ◦ ソースと同じリポジトリで管理することで標準化された •
操作手順が多く手動での操作が必要 ◦ 待機系と本番系の入れ替え以外は自動で実行されるようになった • せっかくAWSなのにデプロイは外部ツール... ◦ CI/CDをAWSで完結できた • インフラチームとアプリチームが縦割りになっている ◦ インフラとアプリで相談しながら一緒に作り上げた 37
Confidential © dip Corporation. 最後に総括 38
Confidential © dip Corporation. 総括(やってみてどうだったか) • インフラチームとの役割の線引きが一番困った ◦ Terraformなど環境の用意はインフラ ◦
yamlファイルなど環境に乗せるものはアプリ • コンテナなので一度作ると環境の複製は楽だった • このノウハウを社内でどう展開していくかが今後の課題 39
Confidential © dip Corporation. 40