Submit Search
Upload
PHPデプロイツールの世界
•
32 likes
•
32,232 views
Yuuki Takezawa
Follow
PHPデプロイツールがどういう動作でタスクを処理するのか、 それぞれのデプロイツールがどんな並列処理を行うかにフォーカスを当てたスライドです。
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 42
Download now
Download to read offline
Recommended
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
Takayuki Shimizukawa
いまさら聞けないDockerコンテナ超入門
いまさら聞けないDockerコンテナ超入門
VirtualTech Japan Inc./Begi.net Inc.
WayOfNoTrouble.pptx
WayOfNoTrouble.pptx
Daisuke Yamazaki
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
RailsでのREST API開発の知見共有
RailsでのREST API開発の知見共有
Yusuke Kon
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
Recommended
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
OpenTelemetryでWebシステムの処理を追跡しよう - DjangoCongress JP 2022
Takayuki Shimizukawa
いまさら聞けないDockerコンテナ超入門
いまさら聞けないDockerコンテナ超入門
VirtualTech Japan Inc./Begi.net Inc.
WayOfNoTrouble.pptx
WayOfNoTrouble.pptx
Daisuke Yamazaki
アーキテクチャから理解するPostgreSQLのレプリケーション
アーキテクチャから理解するPostgreSQLのレプリケーション
Masahiko Sawada
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
RailsでのREST API開発の知見共有
RailsでのREST API開発の知見共有
Yusuke Kon
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
Yasuhiro Mawarimichi
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
Masahito Zembutsu
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
Ansible specでテストをする話
Ansible specでテストをする話
KeijiUehata1
Fantiaから学ぶgcp運用のノウハウ
Fantiaから学ぶgcp運用のノウハウ
虎の穴 開発室
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
kwatch
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
kyon mm
Python で OAuth2 をつかってみよう!
Python で OAuth2 をつかってみよう!
Project Samurai
C++アプリをCmakeとEclipseで開発するお話
C++アプリをCmakeとEclipseで開発するお話
Masahiko Hashimoto
Rails上でのpub/sub イベントハンドラの扱い
Rails上でのpub/sub イベントハンドラの扱い
ota42y
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
株式会社MonotaRO Tech Team
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
なぜコンピュータを学ばなければならないのか 21世紀の君主論
なぜコンピュータを学ばなければならないのか 21世紀の君主論
Tokoroten Nakayama
目grep入門 +解説
目grep入門 +解説
murachue
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
VirtualTech Japan Inc.
JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ
JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ
Kaname Motoyama
アプリケーションを作るときに考える25のこと
アプリケーションを作るときに考える25のこと
Takafumi ONAKA
Grafana Dashboards as Code
Grafana Dashboards as Code
Takuhiro Yoshida
BigQueryの課金、節約しませんか
BigQueryの課金、節約しませんか
Ryuji Tamagawa
イマドキのExcelスクショの撮り方
イマドキのExcelスクショの撮り方
Yoshitaka Kawashima
Re: WebServer BenchMarking
Re: WebServer BenchMarking
Ryo Tomidokoro
HTML5最新動向
HTML5最新動向
Shumpei Shiraishi
More Related Content
What's hot
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
Masahito Zembutsu
Docker Compose 徹底解説
Docker Compose 徹底解説
Masahito Zembutsu
Ansible specでテストをする話
Ansible specでテストをする話
KeijiUehata1
Fantiaから学ぶgcp運用のノウハウ
Fantiaから学ぶgcp運用のノウハウ
虎の穴 開発室
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
kwatch
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
kyon mm
Python で OAuth2 をつかってみよう!
Python で OAuth2 をつかってみよう!
Project Samurai
C++アプリをCmakeとEclipseで開発するお話
C++アプリをCmakeとEclipseで開発するお話
Masahiko Hashimoto
Rails上でのpub/sub イベントハンドラの扱い
Rails上でのpub/sub イベントハンドラの扱い
ota42y
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
株式会社MonotaRO Tech Team
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
NTT DATA Technology & Innovation
なぜコンピュータを学ばなければならないのか 21世紀の君主論
なぜコンピュータを学ばなければならないのか 21世紀の君主論
Tokoroten Nakayama
目grep入門 +解説
目grep入門 +解説
murachue
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
VirtualTech Japan Inc.
JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ
JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ
Kaname Motoyama
アプリケーションを作るときに考える25のこと
アプリケーションを作るときに考える25のこと
Takafumi ONAKA
Grafana Dashboards as Code
Grafana Dashboards as Code
Takuhiro Yoshida
BigQueryの課金、節約しませんか
BigQueryの課金、節約しませんか
Ryuji Tamagawa
イマドキのExcelスクショの撮り方
イマドキのExcelスクショの撮り方
Yoshitaka Kawashima
What's hot
(20)
今だからこそ知りたい Docker Compose/Swarm 入門
今だからこそ知りたい Docker Compose/Swarm 入門
Docker Compose 徹底解説
Docker Compose 徹底解説
Ansible specでテストをする話
Ansible specでテストをする話
Fantiaから学ぶgcp運用のノウハウ
Fantiaから学ぶgcp運用のノウハウ
DBスキーマもバージョン管理したい!
DBスキーマもバージョン管理したい!
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
Python で OAuth2 をつかってみよう!
Python で OAuth2 をつかってみよう!
C++アプリをCmakeとEclipseで開発するお話
C++アプリをCmakeとEclipseで開発するお話
Rails上でのpub/sub イベントハンドラの扱い
Rails上でのpub/sub イベントハンドラの扱い
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
スケールアウトするPostgreSQLを目指して!その第一歩!(NTTデータ テクノロジーカンファレンス 2020 発表資料)
なぜコンピュータを学ばなければならないのか 21世紀の君主論
なぜコンピュータを学ばなければならないのか 21世紀の君主論
目grep入門 +解説
目grep入門 +解説
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ
JJUGCCC2022spring_連続画像処理による位置情報計算を支えるマイクロサービスアーキテクチャ
アプリケーションを作るときに考える25のこと
アプリケーションを作るときに考える25のこと
Grafana Dashboards as Code
Grafana Dashboards as Code
BigQueryの課金、節約しませんか
BigQueryの課金、節約しませんか
イマドキのExcelスクショの撮り方
イマドキのExcelスクショの撮り方
Similar to PHPデプロイツールの世界
Re: WebServer BenchMarking
Re: WebServer BenchMarking
Ryo Tomidokoro
HTML5最新動向
HTML5最新動向
Shumpei Shiraishi
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
Fumihito Yokoyama
Pyconjp2016 pyftplib
Pyconjp2016 pyftplib
Shinya Okano
オフラインファーストの思想と実践
オフラインファーストの思想と実践
Shumpei Shiraishi
コンテナーによるIT基盤変革 - IT infrastructure transformation -
コンテナーによるIT基盤変革 - IT infrastructure transformation -
日本ヒューレット・パッカード株式会社
たのしいNode.js
たのしいNode.js
ishiki-takai
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
Hironobu Saitoh
誰でも出来るosxでのローカルなウェブ開発環境構築
誰でも出来るosxでのローカルなウェブ開発環境構築
Hiroshi Yamato
SVNのすすめ&Redmineでプロジェクト管理
SVNのすすめ&Redmineでプロジェクト管理
ina job
スクリプト言語PHP攻略法
スクリプト言語PHP攻略法
Rui Hirokawa
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
Ryuji Yamashita
20080524
20080524
小野 修司
HTML5&API総まくり
HTML5&API総まくり
Shumpei Shiraishi
behatエクステンションの作り方
behatエクステンションの作り方
Ryo Tomidokoro
PHP 5.4のビルトインウェブサーバー
PHP 5.4のビルトインウェブサーバー
Atsushi Matsuo
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
npsg
IT Pro のための PowerShell スクリプティング
IT Pro のための PowerShell スクリプティング
Kazuki Takai
5分でわかる静的解析入門
5分でわかる静的解析入門
Kenta USAMI
ComSys 2012 Yabusame Talk
ComSys 2012 Yabusame Talk
Takahiro Hirofuchi
Similar to PHPデプロイツールの世界
(20)
Re: WebServer BenchMarking
Re: WebServer BenchMarking
HTML5最新動向
HTML5最新動向
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
Pyconjp2016 pyftplib
Pyconjp2016 pyftplib
オフラインファーストの思想と実践
オフラインファーストの思想と実践
コンテナーによるIT基盤変革 - IT infrastructure transformation -
コンテナーによるIT基盤変革 - IT infrastructure transformation -
たのしいNode.js
たのしいNode.js
PHPで並列処理する ライブラリを作った
PHPで並列処理する ライブラリを作った
誰でも出来るosxでのローカルなウェブ開発環境構築
誰でも出来るosxでのローカルなウェブ開発環境構築
SVNのすすめ&Redmineでプロジェクト管理
SVNのすすめ&Redmineでプロジェクト管理
スクリプト言語PHP攻略法
スクリプト言語PHP攻略法
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
20080524
20080524
HTML5&API総まくり
HTML5&API総まくり
behatエクステンションの作り方
behatエクステンションの作り方
PHP 5.4のビルトインウェブサーバー
PHP 5.4のビルトインウェブサーバー
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
IT Pro のための PowerShell スクリプティング
IT Pro のための PowerShell スクリプティング
5分でわかる静的解析入門
5分でわかる静的解析入門
ComSys 2012 Yabusame Talk
ComSys 2012 Yabusame Talk
More from Yuuki Takezawa
zend-expressiveを触ってみよう
zend-expressiveを触ってみよう
Yuuki Takezawa
LaravelとMVCの先へ
LaravelとMVCの先へ
Yuuki Takezawa
phpspecで始めるBDD
phpspecで始めるBDD
Yuuki Takezawa
Laravel5.1 Release
Laravel5.1 Release
Yuuki Takezawa
Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩
Yuuki Takezawa
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulp
Yuuki Takezawa
PHP フィールドインジェクションに挑戦する PHP勉強会2014
PHP フィールドインジェクションに挑戦する PHP勉強会2014
Yuuki Takezawa
PHP&NewSQLで考える次世代アプリケーション
PHP&NewSQLで考える次世代アプリケーション
Yuuki Takezawa
Laravel meetup5(Laravel meet NewSQL/VoltDB )
Laravel meetup5(Laravel meet NewSQL/VoltDB )
Yuuki Takezawa
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Yuuki Takezawa
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
Yuuki Takezawa
More from Yuuki Takezawa
(11)
zend-expressiveを触ってみよう
zend-expressiveを触ってみよう
LaravelとMVCの先へ
LaravelとMVCの先へ
phpspecで始めるBDD
phpspecで始めるBDD
Laravel5.1 Release
Laravel5.1 Release
Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulp
PHP フィールドインジェクションに挑戦する PHP勉強会2014
PHP フィールドインジェクションに挑戦する PHP勉強会2014
PHP&NewSQLで考える次世代アプリケーション
PHP&NewSQLで考える次世代アプリケーション
Laravel meetup5(Laravel meet NewSQL/VoltDB )
Laravel meetup5(Laravel meet NewSQL/VoltDB )
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Laravel_オープンソースカンファレンスhokkaido_JP_2014
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
laravel websocket(use redis pubsub) [Laravel meetup tokyo]
PHPデプロイツールの世界
1.
PHPデプロイツールの世界 2015/10/03 PHPカンファンレンス2015 yuuki takezawa
/ istyle inc
2.
Deploy?
3.
• ソースコードを本番環境などに設置 • ディレクトリなどに実行権限を与える •
キャッシュの削除 • 業務ルールに則った手順など デプロイ作業
4.
• FTPによる手動アップロード • リモートサーバ内のファイルを手動で削除 •
rsyncなどによるアップロード デプロイ方法
5.
PEAR -> Composer
6.
ライブラリなどは プロジェクト毎の管理へ変化
7.
進化するフロントエンド Grunt, Gulp
8.
etc…
9.
様々な手順が自動化
10.
• Composer、npm、bowerなどによる 依存ライブラリ管理 • フロントエンドタスクツール •
継続的インテグレーションによる自動テスト • 自動化によるヒューマンエラー防止 変わったもの
11.
デプロイも自動化
12.
Develop Testing Push Testing PHPUnit phpspec Behat Codeception Deploy Server staging production etc auto
13.
• ライブラリのインストール • フロントエンドタスク実行 •
複数のリモートサーバへ接続 • ローカルタスクの実行(rsyncなど) デプロイツール
14.
Capistrano (Ruby) Fabric (Python)
15.
PHPに統一したい 難しい etc…
16.
PHP Deploy Tool
17.
• Capistranoのようなデプロイツール Magallanes、Altax、Rocketeer、Deployer • リモートサーバタスクツール Robo、Envoy PHP
Deploy Tool / Task Tool
18.
• 良質なコンポーネント Symfony Component、 The
League of Extraordinary Packages etc… • 自由に組み合わせてツール、ライブラリ開発 • PHP-FIG Background
19.
これらを元に作られる デプロイツールの世界
20.
• コマンドを実行して構築される世界 • 対話型 •
処理の並列化 • 非同期処理 コンソールアプリケーション
21.
3つのツール • Envoy (http://laravel.com/docs/5.1/envoy) •
Deployer (http://deployer.org/) • Rocketeer (http://rocketeer.autopergamene.eu/)
22.
Envoy • リモートサーバタスクツール • リモートサーバで実行するコマンドを記述 •
Laravelのマニュアルに記述されていますが、 親和性はありません • デフォルトで利用できるタスクは用意されていないため、 利用するタスクを記述します • 並列実行をサポート
23.
Deployer • リモートサーバタスクツール • リモートサーバで実行するコマンドを記述 •
PHPの主なフレームワークに対応したタスクが あらかじめ用意されています • PHPに親しんでいる方であれば簡単に利用できます • 足りないタスクは自由に追加できます
24.
Rocketeer • Capistranoスタイルで高機能 • デプロイタスクが用意されています •
composerやnpmコマンドなどデフォルトで対応 • Laravelのパッケージとしても利用されるため サービスロケータを多用しているため、少し複雑 • Capistranoのようにある程度学習する必要が有ります
25.
Task実行までのアプローチ
26.
• タスクを記述したファイルを コンパイル(通常のPHPコードへ変換) • タスク毎にリモートサーバへ •
symfony/processによる接続 • コマンドを実行 Envoyのアプローチ
27.
Console boot Envoy.blade.php Compile Envoy.php (array) connect Task
28.
• タスクを記述したファイルを読み込む • タスク毎にリモートサーバへ接続 •
phpseclib/phpseclibによる接続 • コールバックでコマンドを実行 Deployerのアプローチ
29.
Console boot deploy.php(default) collection connect Task
30.
• サービスをコンテナへ登録し、 タスクを記述したファイルを読み込む • サービスロケータを介して、 タスク毎にリモートサーバへ接続 •
phpseclib/phpseclibによる接続 • コマンドを実行 • 複雑 Rocketeerのアプローチ
31.
Console boot Service Register connect Task
Queue Tasks Configure Task
32.
Parallel / 並列のアプローチ
33.
• symfony/processによるproc_open • それぞれのプロセスがタスク実行 •
それ以外は通常の実行と全く同じ • シンプルな並列処理 Envoyの並列アプローチ
34.
Command process connect Task process connect Task
35.
• ReactPHPを利用した非同期 • proc_openを利用し、 各プロセスがタスクを実行 •
socketsエクステンションが必須 • elfet/pure(PHP製Key Value Storage) Deployerの並列アプローチ
36.
Command process connect Task process connect Task ReactPHP Task
37.
• pcntl_forkによるプロセスのフォーク • 各プロセスがタスクを実行 •
pcntlエクステンションが必須 Rocketeerの並列アプローチ
38.
Taskのアプローチ
39.
• 記述したタスクのみを実行 • タスクの前後に処理を行うなどの 仕組みはない •
ローカルタスクはタスクごとに記述 Envoyのタスク
40.
• タスク前後の処理は簡単に記述 • Rocketeerはローカルタスクはタスクごとに •
Deployerはローカルタスクをリモートタスク 内で実行可能 Deployer,Rocketeerのタスク
41.
同じコンポーネントを 利用しながらも、 アプローチはそれぞれ 異なります
42.
• プロジェクトや運用ルールに合致するものを利 用する • 並列で利用する場合は、依存ライブラリや、 エクステンションを調べる •
独自タスクの追加方法や、メンテナンスなど • オリジナルのデプロイツールを開発しても良い ツールを知ること
Download now