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
Prism.parseで 300本以上あるエンドポイントに 接続できる権限の一覧表を作ってみた
hatsu38
1
110
型付きアクターモデルがもたらす分散シミュレーションの未来
piyo7
0
720
eBPFを用いたAIネットワーク監視システム論文の実装 / eBPF Japan Meetup #4
yuukit
3
730
JSAI2025 RecSysChallenge2024 優勝報告
unonao
1
440
「ElixirでIoT!!」のこれまでとこれから
takasehideki
0
320
iOSアプリ開発で 関数型プログラミングを実現する The Composable Architectureの紹介
yimajo
2
190
単体テストの始め方/作り方
toms74209200
0
390
TypeScript LSP の今までとこれから
quramy
1
480
コード書くの好きな人向けAIコーディング活用tips #orestudy
77web
3
270
TypeScript を活かしてデザインシステム MCP を作る / #tskaigi_after_night
izumin5210
5
520
ドメインモデリングにおける抽象の役割、tagless-finalによるDSL構築、そして型安全な最適化
knih
10
1.6k
Cloudflare Realtime と Workers でつくるサーバーレス WebRTC
nekoya3
0
370
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
14
1.5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
Faster Mobile Websites
deanohume
307
31k
Why Our Code Smells
bkeepers
PRO
337
57k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
The Cost Of JavaScript in 2023
addyosmani
50
8.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
A designer walks into a library…
pauljervisheath
206
24k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
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