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.1k
PHP_Laravel_とAWS_FargateのDeploy戦略.pdf
PHPカンファレンス2021で使用した登壇資料です。
TAKU
October 02, 2021
Tweet
Share
Other Decks in Programming
See All in Programming
romajip: 日本の住所CSVデータを活用した英語住所変換ライブラリを作った話
sangunkang
0
1.6k
CSC509 Lecture 11
javiergs
PRO
0
180
社内活動の取り組み紹介 ~ スリーシェイクでこんな取り組みしてます ~
bells17
0
240
RubyLSPのマルチバイト文字対応
notfounds
0
120
Kaigi on Rails 2024 〜運営の裏側〜
krpk1900
1
290
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
1
110
flutterkaigi_2024.pdf
kyoheig3
0
240
EMになってからチームの成果を最大化するために取り組んだこと/ Maximize team performance as EM
nashiusagi
0
100
DevTools extensions で 独自の DevTool を開発する | FlutterKaigi 2024
kokiyoshida
0
170
我々のデザインシステムは Chakra v3 にアップデートします
shunya078
2
1k
Jakarta EE meets AI
ivargrimstad
0
880
Flutterを言い訳にしない!アプリの使い心地改善テクニック5選🔥
kno3a87
3
310
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Typedesign – Prime Four
hannesfritz
40
2.4k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Six Lessons from altMBA
skipperchong
27
3.5k
BBQ
matthewcrist
85
9.3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1k
Documentation Writing (for coders)
carmenintech
65
4.4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
47
2.1k
Designing for humans not robots
tammielis
250
25k
Side Projects
sachag
452
42k
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