Submit Search
Upload
bootsnapはどれくらい早くなるのか
•
Download as PPTX, PDF
•
0 likes
•
1,496 views
ota42y
Follow
Shinjuku.rb #60 の発表資料
Read less
Read more
Engineering
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 15
Download now
Recommended
goroutineはどうやって動いているのか
goroutineはどうやって動いているのか
ota42y
なぜか技術書典5で 3サークルの運営をやってた話
なぜか技術書典5で 3サークルの運営をやってた話
ota42y
なぜか技術書典5で 3サークルの運営を同時にやった話
なぜか技術書典5で 3サークルの運営を同時にやった話
ota42y
Rails上でのpub/sub イベントハンドラの扱い
Rails上でのpub/sub イベントハンドラの扱い
ota42y
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
ota42y
Microservices Architecture の利点と欠点
Microservices Architecture の利点と欠点
ota42y
Twitter クライアント開発のすすめ #twtr_hack
Twitter クライアント開発のすすめ #twtr_hack
Mocel Mocelic
swiftで twitterクライアントを作る
swiftで twitterクライアントを作る
Akira Fukushima
Recommended
goroutineはどうやって動いているのか
goroutineはどうやって動いているのか
ota42y
なぜか技術書典5で 3サークルの運営をやってた話
なぜか技術書典5で 3サークルの運営をやってた話
ota42y
なぜか技術書典5で 3サークルの運営を同時にやった話
なぜか技術書典5で 3サークルの運営を同時にやった話
ota42y
Rails上でのpub/sub イベントハンドラの扱い
Rails上でのpub/sub イベントハンドラの扱い
ota42y
マイクロサービスにおける 結果整合性との戦い
マイクロサービスにおける 結果整合性との戦い
ota42y
Microservices Architecture の利点と欠点
Microservices Architecture の利点と欠点
ota42y
Twitter クライアント開発のすすめ #twtr_hack
Twitter クライアント開発のすすめ #twtr_hack
Mocel Mocelic
swiftで twitterクライアントを作る
swiftで twitterクライアントを作る
Akira Fukushima
Minio on Raspberry Pi
Minio on Raspberry Pi
Masafumi Ohta
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソース
Takafumi ONAKA
Raspberry pi最新情報アップデート&いろいろ比較
Raspberry pi最新情報アップデート&いろいろ比較
Masafumi Ohta
Golang, make and robotics #gocon
Golang, make and robotics #gocon
Hideyuki TAKEI
SwiftのWebフレームワークVaporを触ってみる
SwiftのWebフレームワークVaporを触ってみる
Yuya Oka
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
Kazuhiro Serizawa
mod_perlで動くアプリをどう置くか #hachiojipm
mod_perlで動くアプリをどう置くか #hachiojipm
鉄次 尾形
Sphinxでまとめる多言語環境APIドキュメント
Sphinxでまとめる多言語環境APIドキュメント
Iosif Takakura
はじめよう!MovableType.net ハンズオン
はじめよう!MovableType.net ハンズオン
Hajime Fujimoto
第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情
Kazuhiro Serizawa
社内発表会20120328
社内発表会20120328
Sumito Miyauchi
さわってみよう Couchbase Lite
さわってみよう Couchbase Lite
ssd kfk
Pythonによる4足歩行ロボットの制御と強化学習による歩行動作獲得の実例 #pyconjp
Pythonによる4足歩行ロボットの制御と強化学習による歩行動作獲得の実例 #pyconjp
Hideyuki TAKEI
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjp
Takeshi Komiya
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
Takafumi ONAKA
Sphinxで社内勉強会(Git)の 資料を作ってみた
Sphinxで社内勉強会(Git)の 資料を作ってみた
Taku SHIMIZU
PHPでWebSocketを実装してみてわかったこと
PHPでWebSocketを実装してみてわかったこと
ksimoji
Sphinxを使って本を書こう #pyconjp 2012
Sphinxを使って本を書こう #pyconjp 2012
Takayuki Shimizukawa
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Takeshi Komiya
How to spread reST and Sphinx
How to spread reST and Sphinx
Takanori Suzuki
Web技術勉強会 20120609
Web技術勉強会 20120609
龍一 田中
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
schoowebcampus
More Related Content
What's hot
Minio on Raspberry Pi
Minio on Raspberry Pi
Masafumi Ohta
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソース
Takafumi ONAKA
Raspberry pi最新情報アップデート&いろいろ比較
Raspberry pi最新情報アップデート&いろいろ比較
Masafumi Ohta
Golang, make and robotics #gocon
Golang, make and robotics #gocon
Hideyuki TAKEI
SwiftのWebフレームワークVaporを触ってみる
SwiftのWebフレームワークVaporを触ってみる
Yuya Oka
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
Kazuhiro Serizawa
mod_perlで動くアプリをどう置くか #hachiojipm
mod_perlで動くアプリをどう置くか #hachiojipm
鉄次 尾形
Sphinxでまとめる多言語環境APIドキュメント
Sphinxでまとめる多言語環境APIドキュメント
Iosif Takakura
はじめよう!MovableType.net ハンズオン
はじめよう!MovableType.net ハンズオン
Hajime Fujimoto
第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情
Kazuhiro Serizawa
社内発表会20120328
社内発表会20120328
Sumito Miyauchi
さわってみよう Couchbase Lite
さわってみよう Couchbase Lite
ssd kfk
Pythonによる4足歩行ロボットの制御と強化学習による歩行動作獲得の実例 #pyconjp
Pythonによる4足歩行ロボットの制御と強化学習による歩行動作獲得の実例 #pyconjp
Hideyuki TAKEI
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjp
Takeshi Komiya
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
Takafumi ONAKA
Sphinxで社内勉強会(Git)の 資料を作ってみた
Sphinxで社内勉強会(Git)の 資料を作ってみた
Taku SHIMIZU
PHPでWebSocketを実装してみてわかったこと
PHPでWebSocketを実装してみてわかったこと
ksimoji
Sphinxを使って本を書こう #pyconjp 2012
Sphinxを使って本を書こう #pyconjp 2012
Takayuki Shimizukawa
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Takeshi Komiya
How to spread reST and Sphinx
How to spread reST and Sphinx
Takanori Suzuki
What's hot
(20)
Minio on Raspberry Pi
Minio on Raspberry Pi
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソース
Raspberry pi最新情報アップデート&いろいろ比較
Raspberry pi最新情報アップデート&いろいろ比較
Golang, make and robotics #gocon
Golang, make and robotics #gocon
SwiftのWebフレームワークVaporを触ってみる
SwiftのWebフレームワークVaporを触ってみる
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
mod_perlで動くアプリをどう置くか #hachiojipm
mod_perlで動くアプリをどう置くか #hachiojipm
Sphinxでまとめる多言語環境APIドキュメント
Sphinxでまとめる多言語環境APIドキュメント
はじめよう!MovableType.net ハンズオン
はじめよう!MovableType.net ハンズオン
第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情
社内発表会20120328
社内発表会20120328
さわってみよう Couchbase Lite
さわってみよう Couchbase Lite
Pythonによる4足歩行ロボットの制御と強化学習による歩行動作獲得の実例 #pyconjp
Pythonによる4足歩行ロボットの制御と強化学習による歩行動作獲得の実例 #pyconjp
APIドキュメントの話 #sphinxjp
APIドキュメントの話 #sphinxjp
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
Sphinxで社内勉強会(Git)の 資料を作ってみた
Sphinxで社内勉強会(Git)の 資料を作ってみた
PHPでWebSocketを実装してみてわかったこと
PHPでWebSocketを実装してみてわかったこと
Sphinxを使って本を書こう #pyconjp 2012
Sphinxを使って本を書こう #pyconjp 2012
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
How to spread reST and Sphinx
How to spread reST and Sphinx
Similar to bootsnapはどれくらい早くなるのか
Web技術勉強会 20120609
Web技術勉強会 20120609
龍一 田中
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
schoowebcampus
中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS
中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS
Masami Yabushita
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
R S
HerokuでRails3.2 we love herokuの事例
HerokuでRails3.2 we love herokuの事例
Naoto Koshikawa
ruby、sinatraで作るfacebookアプリ
ruby、sinatraで作るfacebookアプリ
Toshiya Kurishima
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜リリース編 先生:増井雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜リリース編 先生:増井雄一郎
schoowebcampus
oFの話題が殆ど出ない oF jp Summer Workout
oFの話題が殆ど出ない oF jp Summer Workout
Tsuubito Ishii
Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話
Masayuki Morita
2015 12-19-ruby rails
2015 12-19-ruby rails
Hiroshi Oyamada
マイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャ
ota42y
Application Bootstrap
Application Bootstrap
Takafumi ONAKA
Hatena blogdevelopmentflow
Hatena blogdevelopmentflow
Yasuhiro Onishi
WebAppDev勉強会 #4
WebAppDev勉強会 #4
Kohei Noda
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
Takuro Sasaki
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
Salesforce Developers Japan
Skinny Framework で始めた Scala
Skinny Framework で始めた Scala
Ryuji Yamashita
大規模プロダクト Webpack やっていく気持ち
大規模プロダクト Webpack やっていく気持ち
Takumi Ohashi
Apache Sparkを利用した「つぶやきビッグデータ」クローンとリコメンドシステムの構築
Apache Sparkを利用した「つぶやきビッグデータ」クローンとリコメンドシステムの構築
Junichi Noda
Spark Streamingで作る、つぶやきビッグデータのクローン (2015-11.10版)
Spark Streamingで作る、つぶやきビッグデータのクローン (2015-11.10版)
Junichi Noda
Similar to bootsnapはどれくらい早くなるのか
(20)
Web技術勉強会 20120609
Web技術勉強会 20120609
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS
中国Firefox OS勉強会 3rd 組み込み屋さんから見たFirefox OS
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
HerokuでRails3.2 we love herokuの事例
HerokuでRails3.2 we love herokuの事例
ruby、sinatraで作るfacebookアプリ
ruby、sinatraで作るfacebookアプリ
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜リリース編 先生:増井雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜リリース編 先生:増井雄一郎
oFの話題が殆ど出ない oF jp Summer Workout
oFの話題が殆ど出ない oF jp Summer Workout
Chef+serverspec+werckerでインフラCIする話
Chef+serverspec+werckerでインフラCIする話
2015 12-19-ruby rails
2015 12-19-ruby rails
マイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャ
Application Bootstrap
Application Bootstrap
Hatena blogdevelopmentflow
Hatena blogdevelopmentflow
WebAppDev勉強会 #4
WebAppDev勉強会 #4
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
Skinny Framework で始めた Scala
Skinny Framework で始めた Scala
大規模プロダクト Webpack やっていく気持ち
大規模プロダクト Webpack やっていく気持ち
Apache Sparkを利用した「つぶやきビッグデータ」クローンとリコメンドシステムの構築
Apache Sparkを利用した「つぶやきビッグデータ」クローンとリコメンドシステムの構築
Spark Streamingで作る、つぶやきビッグデータのクローン (2015-11.10版)
Spark Streamingで作る、つぶやきビッグデータのクローン (2015-11.10版)
More from ota42y
ruby-ffiについてざっくり解説
ruby-ffiについてざっくり解説
ota42y
FiNCでのOSSとのつきあい方
FiNCでのOSSとのつきあい方
ota42y
CarrieWaveについてざっくり解説
CarrieWaveについてざっくり解説
ota42y
prmdのドキュメントが読みやすくなる話
prmdのドキュメントが読みやすくなる話
ota42y
身近なサイバー攻撃から身を守る
身近なサイバー攻撃から身を守る
ota42y
HCI分野の紹介と最新研究
HCI分野の紹介と最新研究
ota42y
More from ota42y
(6)
ruby-ffiについてざっくり解説
ruby-ffiについてざっくり解説
FiNCでのOSSとのつきあい方
FiNCでのOSSとのつきあい方
CarrieWaveについてざっくり解説
CarrieWaveについてざっくり解説
prmdのドキュメントが読みやすくなる話
prmdのドキュメントが読みやすくなる話
身近なサイバー攻撃から身を守る
身近なサイバー攻撃から身を守る
HCI分野の紹介と最新研究
HCI分野の紹介と最新研究
bootsnapはどれくらい早くなるのか
1.
ota42y 2018/04/25 Shinjuku.rb #60 bootsnapは どれくらい早くなるのか
2.
• ota42y • サーバサイドエンジニア •
rubyとかrustとかgoとかC++とか • Twitter、github → ota42y • 技術書典4でマイクロサービス本を出した – https://ota42y.com/blog/2018/04/10/mi croservices_yorozu_book/ 自己紹介
3.
bootsnap
4.
• Shopify/bootsnap – https://github.com/Shopify/bootsnap •
Railsアプリの高速化をしてくれるgem – 入れるだけで早くなる – 起動が50%早くなるとの話 – Rails 5.2から標準で入る – Rails 4.2でも動く bootsnap
5.
• Gemfileに以下を記述 – gem
'bootsnap', require: false • config/boot.rbを変更 – bundlerのrequire後にbootsnapを読む – require 'bootsnap/setup' インストール
6.
• Path Pre-Scanning –
ファイルを読み込む際の検索をキャッシュ – ActiveSupportのautoloadも対象 • Compilation caching – YAMLのロード結果をキャッシュする • MessagePackか、ダメならMarshal stream Bootsnapの機能
7.
Path Pre-Scanning
8.
Path Pre-Scanning • $LOAD_PATHの中身をキャッシュする –
requireのたびに全部調べるの遅い – bootsnapで中身をキャッシュする – Kernel#requireとか#loadとかをフックする • よくわかる解説(図がわかりやすい) – https://github.com/Shopify/bootsnap#pa th-pre-scanning
9.
Compilation caching
10.
Compilation caching • YAMLの評価結果をキャッシュする –
結果のbytecodeを保存する • RubyVM::InstructionSequenceを使ってる – 保存形式はMessagePack • 表現できない構造の場合はMarshal stream • よくわかる解説(図は無い) – https://github.com/Shopify/bootsnap/tre e/86b8b285520299fec913c5f1d63dda4f1 3dbfa25#compilation-caching
11.
どれくらい早いのか
12.
起動時間計測 • Rails runnerで起動して即終了を10回 –
Bundle exec rails runner “puts Rails.env” • スクリプトは以下 ruby -rbenchmark -e "ret = Benchmark.measure{ 10.times{ system('DISAB LE_SPRING=1 bundle exec rails runner "puts Rails.env"') } }; puts Benchmark::CAPTION; puts ret" (Springは止めてます)
13.
計測結果 app Gem数 normal (秒) bootsnap (秒) 速度向上率 (秒) Rails
4.2 242 21.17 9.6 45.35 Rails 5.0 その1 220 19.61 9.2 46.99 Rails 5.0 その2 369 68.90 44.1 64.13 Rails 5.1 184 16.95 8.4 49.62 Rails 5.2 147 14.74 6.7 45.45
14.
計測結果 app Gem数 normal (秒) bootsnap (秒) 速度向上率 (秒) Rails
4.2 242 21.17 9.6 45.35 Rails 5.0 その1 220 19.61 9.2 46.99 Rails 5.0 その2 369 68.90 44.1 64.13 Rails 5.1 184 16.95 8.4 49.62 Rails 5.2 147 14.74 6.7 45.45 • だいたい50%早くなってる • 元が遅いと向上率が高い? • Gemが多いと早くなるわけではない – 4.2と5.2で向上率は同じ gemは100個違う – YAMLのせい?
15.
• Bootsnapは色々キャッシュして早くする – LOAD_PATHやYAMLのパース結果 •
だいたい50%早くなる – 便利( ゚∀゚)o彡゚ • インストールは簡単 – どれもハマらずに入れられた • キャッシュによる不具合は未知数 – まだ使い込んでないので… まとめ
Editor's Notes
この中に、マイクロサービスアーキテクチャを知ってる人どれくらいいますか? ありがとうございます、以外と少なくて資料作った会がありました…
何故我々はマイクロサービスを採用しているのか?という点です
一番大きな恩恵として、サービス事に別々のサイクルで回せるというのがあります。 例えば課金系といった仕様が複雑で長いQAが必要な機能と、フロントといったユーザの反応を見てどんどん修正を書けていくような機能は、 別々の開発速度で回していきたいわけです。 例えば1つの巨大なシステムであれば、リリースサイクルは1つになり、フロントの変更であっても課金系への影響を考えていかなければなりません。 一方でそれらが別々のマイクロサービスで構成されているのであれば、フロントは小さい変更でどんどんリリースできますし、 課金系はQA期間をしっかり取って開発できます また、影響を局所かできるというのも利点の1つです さっきの例であればユーザが大量に押し寄せてフロント側が重くなっても、 課金系は別のサーバなのでその処理に困る事はないですし、課金系が落ちてても、関係しない機能をそのまま使い続ける…といった事ができます。 その他色々ありますが、詳しくはオライリーのマイクロサービスアーキテクチャという本を読んでください。
何故我々はマイクロサービスを採用しているのか?という点です
一番大きな恩恵として、サービス事に別々のサイクルで回せるというのがあります。 例えば課金系といった仕様が複雑で長いQAが必要な機能と、フロントといったユーザの反応を見てどんどん修正を書けていくような機能は、 別々の開発速度で回していきたいわけです。 例えば1つの巨大なシステムであれば、リリースサイクルは1つになり、フロントの変更であっても課金系への影響を考えていかなければなりません。 一方でそれらが別々のマイクロサービスで構成されているのであれば、フロントは小さい変更でどんどんリリースできますし、 課金系はQA期間をしっかり取って開発できます また、影響を局所かできるというのも利点の1つです さっきの例であればユーザが大量に押し寄せてフロント側が重くなっても、 課金系は別のサーバなのでその処理に困る事はないですし、課金系が落ちてても、関係しない機能をそのまま使い続ける…といった事ができます。 その他色々ありますが、詳しくはオライリーのマイクロサービスアーキテクチャという本を読んでください。
何故我々はマイクロサービスを採用しているのか?という点です
一番大きな恩恵として、サービス事に別々のサイクルで回せるというのがあります。 例えば課金系といった仕様が複雑で長いQAが必要な機能と、フロントといったユーザの反応を見てどんどん修正を書けていくような機能は、 別々の開発速度で回していきたいわけです。 例えば1つの巨大なシステムであれば、リリースサイクルは1つになり、フロントの変更であっても課金系への影響を考えていかなければなりません。 一方でそれらが別々のマイクロサービスで構成されているのであれば、フロントは小さい変更でどんどんリリースできますし、 課金系はQA期間をしっかり取って開発できます また、影響を局所かできるというのも利点の1つです さっきの例であればユーザが大量に押し寄せてフロント側が重くなっても、 課金系は別のサーバなのでその処理に困る事はないですし、課金系が落ちてても、関係しない機能をそのまま使い続ける…といった事ができます。 その他色々ありますが、詳しくはオライリーのマイクロサービスアーキテクチャという本を読んでください。
Download now