SlideShare a Scribd company logo
レガシーすぎるRailsアプリを
10倍高速化した
組織的なカイゼン活動
表参道.rb #44 〜Ruby/Railsパフォーマンス〜
株式会社スタディスト 笹木 信吾
2019/03/07
自己紹介
• 2015卒(26歳)
• Rails/Vuejs がメインのプログラマ
• 最近脱SESして自社開発に
• @HousouP ← follow Me!
ペットのデグー(齧歯類)
マニュアル作成・共有プラットフォーム
もちろん
パソコンも
OK
TeachmeBiz
以前はパフォーマンスめっちゃ悪かった
リクエストの 5%は 8〜9秒もかかっている!!
それってどれぐらいヤバイのか??
上位5%が8~9秒
パフォーマンスとユーザ満足度
• ユーザは1秒以上待たされると、
タスクへの関心を失う
• ユーザは10秒以上待たされると
タスクを中断し、そのまま戻ってこない恐れ
引用 Google Developers Blog「RAIL モデルでパフォーマンスを計測する」
https://developers.google.com/web/fundamentals/performance/rail
• ユーザは10秒以上待たされると
タスクを中断し、そのまま戻ってこない恐れ
5%の確率で戻ってこなくなるユーザーの図
ゆ〜て遅いのは95パーセンタイルだけでしょ?
全リクエストの平均応答時間も確認してみた
平均応答時間が1.37秒な日も
• ユーザは1秒以上待たされると、タスクへの関心を失う
リクエストごとに関心を失うユーザの図
どんな便利なシステムも
パフォーマンスが悪ければ
ユーザが離れてしまう
そんなサービスの危機的状況に
開発部が本格的に動き出した
サーバサイドエンジニア フロントエンドエンジニア SRE(インフラエンジニア)
チームの垣根を超えて、
パフォーマンスを改善したい漢たちが集まった!!
PWGPerformance Working Group
パフォーマンス改善のために立ち上がった漢たちの図 (実際は3名以上居ます)
PWGとは
SRE Lounge #2 に登壇してきた 〜Performance Working Group って何
だ?〜https://medium.com/studist-dev/sre-lounge-2-
%E3%81%AB%E7%99%BB%E5%A3%87%E3%81%97%E3%81%A6%E3%81%8D%E3%81%9F-performance-working-
group-%E3%81%A3%E3%81%A6%E4%BD%95%E3%81%A0-6112f4ec0307
• 株式会社はてな 様で行われている活動のインスパイア
• 弊社では、開発部を横断した組織でのパフォーマンス活動のこと
• 詳しくは弊社開発ブログにて!
改善するためには
まず課題が何なのかを洗い出す
課題: パフォーマンスがすこぶる悪い
課題: パフォーマンスがすこぶる悪い
本質的な課題
• 問題を明らかにする仕組みがなかった
• 問題解決にコミットする体制がなかった
課題: パフォーマンスがすこぶる悪い
パフォーマンスが悪い
問題を明らかにしてチームでコミット
1. データを収集する
2. データを可視化する
3. KPIを決める
4. チームでKPIにコミットする
GoogleAnalytics
Redash
Kibana
徹底的なパフォーマンス改善活動
• N + 1 問題の解決
• 不要クエリの排除
• インデックスの見直し
• APIの責務分割
• 非同期化対応
• インフラ構成の見直し
PWG活動を通常業務と並行して始めた結果
Before: リクエストの上位5%は8~9秒かかっていたのが
After: リクエストの上位5%でも1秒未満に
Before: 平均応答時間が1.37秒な日もあったのが
After: 平均応答時間が0.13秒程度に
PWGによる成果は歴然
項目 Before After
応答時間 95パーセンタイル 8〜9秒 1秒未満
日別平均応答時間 1.37秒 0.13秒
PWGのその後
サーバサイドエンジニア
フロントエンドエンジニア
SRE(インフラエンジニア)
• 当初の目的は達成したのでひとまず解散
• 改善のために仕組み作りは完了している
ので、各々でパフォーマンスを監視して、
継続的なカイゼン活動を行う
まとめ
• 良いシステムでもパフォーマンスが悪いとユーザはどんどん離れていく
• 通常業務もある中でパフォーマンスを改善するには、データの可視化と
取り組むための仕組み作りが必要
• 1回の成功に留まらず、継続的な取り組みが重要
ご清聴ありがとうございました
@HousouP ← follow Me!

More Related Content

What's hot

JAWS-UG沖縄 2017年11月 ebハンズオンの技術解説
JAWS-UG沖縄 2017年11月 ebハンズオンの技術解説JAWS-UG沖縄 2017年11月 ebハンズオンの技術解説
JAWS-UG沖縄 2017年11月 ebハンズオンの技術解説
Koichiro Nishijima
 
[社内勉強会]Webエンジニアへ送るインフラのおすすめ本:記事7本
[社内勉強会]Webエンジニアへ送るインフラのおすすめ本:記事7本[社内勉強会]Webエンジニアへ送るインフラのおすすめ本:記事7本
[社内勉強会]Webエンジニアへ送るインフラのおすすめ本:記事7本
Takahiro Moteki
 
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソースクローズドソースから始めるオープンソース
クローズドソースから始めるオープンソース
Takafumi ONAKA
 
Springを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイントSpringを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイント
土岐 孝平
 
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
Kazuhiro Serizawa
 
BACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発についてBACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発について
Toshio Ehara
 
第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情
Kazuhiro Serizawa
 
なれる!IL
なれる!ILなれる!IL
なれる!IL
Hiroshi Maekawa
 
PWA4WP の ServiceWorker
PWA4WP の ServiceWorkerPWA4WP の ServiceWorker
PWA4WP の ServiceWorker
Ryu Shindo
 
娘駆動開発で活躍するAzureのサーバーレスサービス
娘駆動開発で活躍するAzureのサーバーレスサービス娘駆動開発で活躍するAzureのサーバーレスサービス
娘駆動開発で活躍するAzureのサーバーレスサービス
Yuta Matsumura
 
サービスを日々運用し続けながら最新版のRailsに追従させる極意
サービスを日々運用し続けながら最新版のRailsに追従させる極意サービスを日々運用し続けながら最新版のRailsに追従させる極意
サービスを日々運用し続けながら最新版のRailsに追従させる極意
Teruo Adachi
 
どうなる?Visual Studioの クライアントサイド web開発の今後
どうなる?Visual Studioの クライアントサイド web開発の今後どうなる?Visual Studioの クライアントサイド web開発の今後
どうなる?Visual Studioの クライアントサイド web開発の今後
Narami Kiyokura
 
Jsugプレゼン資料new
Jsugプレゼン資料newJsugプレゼン資料new
Jsugプレゼン資料new
Wataru Kakizoe
 
iOSのCI as a Service事情
iOSのCI as a Service事情iOSのCI as a Service事情
iOSのCI as a Service事情
Hiroshi Maekawa
 
第十一回渋谷Java
第十一回渋谷Java第十一回渋谷Java
第十一回渋谷Java
Shigeki Yamato
 
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
学 松崎
 
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
松田 千尋
 
モバイルファースト時代のクラウドネイティブアーキテクチャ JAWS DAYS 2015
モバイルファースト時代のクラウドネイティブアーキテクチャ JAWS DAYS 2015モバイルファースト時代のクラウドネイティブアーキテクチャ JAWS DAYS 2015
モバイルファースト時代のクラウドネイティブアーキテクチャ JAWS DAYS 2015
Rikitake Oohashi
 
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfkSpring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
学 松崎
 
Zabbixを使ったクラウド環境監視のオートメーション化@JulyTechFesta2013
Zabbixを使ったクラウド環境監視のオートメーション化@JulyTechFesta2013Zabbixを使ったクラウド環境監視のオートメーション化@JulyTechFesta2013
Zabbixを使ったクラウド環境監視のオートメーション化@JulyTechFesta2013
Daisuke Ikeda
 

What's hot (20)

JAWS-UG沖縄 2017年11月 ebハンズオンの技術解説
JAWS-UG沖縄 2017年11月 ebハンズオンの技術解説JAWS-UG沖縄 2017年11月 ebハンズオンの技術解説
JAWS-UG沖縄 2017年11月 ebハンズオンの技術解説
 
[社内勉強会]Webエンジニアへ送るインフラのおすすめ本:記事7本
[社内勉強会]Webエンジニアへ送るインフラのおすすめ本:記事7本[社内勉強会]Webエンジニアへ送るインフラのおすすめ本:記事7本
[社内勉強会]Webエンジニアへ送るインフラのおすすめ本:記事7本
 
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソースクローズドソースから始めるオープンソース
クローズドソースから始めるオープンソース
 
Springを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイントSpringを何となく使ってる人が抑えるべきポイント
Springを何となく使ってる人が抑えるべきポイント
 
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
 
BACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発についてBACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発について
 
第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情
 
なれる!IL
なれる!ILなれる!IL
なれる!IL
 
PWA4WP の ServiceWorker
PWA4WP の ServiceWorkerPWA4WP の ServiceWorker
PWA4WP の ServiceWorker
 
娘駆動開発で活躍するAzureのサーバーレスサービス
娘駆動開発で活躍するAzureのサーバーレスサービス娘駆動開発で活躍するAzureのサーバーレスサービス
娘駆動開発で活躍するAzureのサーバーレスサービス
 
サービスを日々運用し続けながら最新版のRailsに追従させる極意
サービスを日々運用し続けながら最新版のRailsに追従させる極意サービスを日々運用し続けながら最新版のRailsに追従させる極意
サービスを日々運用し続けながら最新版のRailsに追従させる極意
 
どうなる?Visual Studioの クライアントサイド web開発の今後
どうなる?Visual Studioの クライアントサイド web開発の今後どうなる?Visual Studioの クライアントサイド web開発の今後
どうなる?Visual Studioの クライアントサイド web開発の今後
 
Jsugプレゼン資料new
Jsugプレゼン資料newJsugプレゼン資料new
Jsugプレゼン資料new
 
iOSのCI as a Service事情
iOSのCI as a Service事情iOSのCI as a Service事情
iOSのCI as a Service事情
 
第十一回渋谷Java
第十一回渋谷Java第十一回渋谷Java
第十一回渋谷Java
 
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
 
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
 
モバイルファースト時代のクラウドネイティブアーキテクチャ JAWS DAYS 2015
モバイルファースト時代のクラウドネイティブアーキテクチャ JAWS DAYS 2015モバイルファースト時代のクラウドネイティブアーキテクチャ JAWS DAYS 2015
モバイルファースト時代のクラウドネイティブアーキテクチャ JAWS DAYS 2015
 
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfkSpring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
 
Zabbixを使ったクラウド環境監視のオートメーション化@JulyTechFesta2013
Zabbixを使ったクラウド環境監視のオートメーション化@JulyTechFesta2013Zabbixを使ったクラウド環境監視のオートメーション化@JulyTechFesta2013
Zabbixを使ったクラウド環境監視のオートメーション化@JulyTechFesta2013
 

Similar to レガシーすぎるRailsアプリを10倍高速化した組織的なカイゼン活動

RESTからGraphQL APIへの移行で学んだこと.pptx
RESTからGraphQL APIへの移行で学んだこと.pptxRESTからGraphQL APIへの移行で学んだこと.pptx
RESTからGraphQL APIへの移行で学んだこと.pptx
Yuya55
 
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
schoowebcampus
 
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
DIVE INTO CODE Corp.
 
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1
Takuya Mukohira
 
2015 12-19-ruby rails
2015 12-19-ruby rails2015 12-19-ruby rails
2015 12-19-ruby rails
Hiroshi Oyamada
 
Rubyプログラミング教育に対する取り組みと事例紹介
Rubyプログラミング教育に対する取り組みと事例紹介Rubyプログラミング教育に対する取り組みと事例紹介
Rubyプログラミング教育に対する取り組みと事例紹介
Yasushi Ishikawa
 
Rubyのススメ
RubyのススメRubyのススメ
Rubyのススメ
Daisuke Yamaguchi
 
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
Yasuko Ohba
 
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜リリース編 先生:増井雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜リリース編 先生:増井雄一郎増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜リリース編 先生:増井雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜リリース編 先生:増井雄一郎
schoowebcampus
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
DIVE INTO CODE Corp.
 
Railsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えてRailsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えて
Hirata Tomoko
 
20190621_RDBMSのVIEWを使ってRailsのデータアクセスをいい感じにする【銀座Rails#10】
20190621_RDBMSのVIEWを使ってRailsのデータアクセスをいい感じにする【銀座Rails#10】20190621_RDBMSのVIEWを使ってRailsのデータアクセスをいい感じにする【銀座Rails#10】
20190621_RDBMSのVIEWを使ってRailsのデータアクセスをいい感じにする【銀座Rails#10】
Masato Mori
 
20120702勉強会 webアプリ作ってみた
20120702勉強会 webアプリ作ってみた20120702勉強会 webアプリ作ってみた
20120702勉強会 webアプリ作ってみたShugo Numano
 
ぼくたちのじゅたくかいはつ(と品質の話)
ぼくたちのじゅたくかいはつ(と品質の話)ぼくたちのじゅたくかいはつ(と品質の話)
ぼくたちのじゅたくかいはつ(と品質の話)
Atsushi Harada
 
Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計
Kanako Kobayashi
 
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれからReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
Yusuke Murata
 
何でRuby
何でRuby何でRuby
何でRuby
Ngoc Dao
 
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
Takahiro Okumura
 
2015年度苫小牧高専情報工学科 学外実習発表会 発表資料
2015年度苫小牧高専情報工学科 学外実習発表会 発表資料2015年度苫小牧高専情報工学科 学外実習発表会 発表資料
2015年度苫小牧高専情報工学科 学外実習発表会 発表資料
Takuya Mukohira
 

Similar to レガシーすぎるRailsアプリを10倍高速化した組織的なカイゼン活動 (20)

RESTからGraphQL APIへの移行で学んだこと.pptx
RESTからGraphQL APIへの移行で学んだこと.pptxRESTからGraphQL APIへの移行で学んだこと.pptx
RESTからGraphQL APIへの移行で学んだこと.pptx
 
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
 
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
 
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1
 
2015 07-04-ruby rails
2015 07-04-ruby rails2015 07-04-ruby rails
2015 07-04-ruby rails
 
2015 12-19-ruby rails
2015 12-19-ruby rails2015 12-19-ruby rails
2015 12-19-ruby rails
 
Rubyプログラミング教育に対する取り組みと事例紹介
Rubyプログラミング教育に対する取り組みと事例紹介Rubyプログラミング教育に対する取り組みと事例紹介
Rubyプログラミング教育に対する取り組みと事例紹介
 
Rubyのススメ
RubyのススメRubyのススメ
Rubyのススメ
 
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
 
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜リリース編 先生:増井雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜リリース編 先生:増井雄一郎増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜リリース編 先生:増井雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜リリース編 先生:増井雄一郎
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
Railsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えてRailsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えて
 
20190621_RDBMSのVIEWを使ってRailsのデータアクセスをいい感じにする【銀座Rails#10】
20190621_RDBMSのVIEWを使ってRailsのデータアクセスをいい感じにする【銀座Rails#10】20190621_RDBMSのVIEWを使ってRailsのデータアクセスをいい感じにする【銀座Rails#10】
20190621_RDBMSのVIEWを使ってRailsのデータアクセスをいい感じにする【銀座Rails#10】
 
20120702勉強会 webアプリ作ってみた
20120702勉強会 webアプリ作ってみた20120702勉強会 webアプリ作ってみた
20120702勉強会 webアプリ作ってみた
 
ぼくたちのじゅたくかいはつ(と品質の話)
ぼくたちのじゅたくかいはつ(と品質の話)ぼくたちのじゅたくかいはつ(と品質の話)
ぼくたちのじゅたくかいはつ(と品質の話)
 
Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計Railsから学ぶRESTfulなuri設計
Railsから学ぶRESTfulなuri設計
 
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれからReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
ReactをRailsとどっぷり使ってみた話と、フロントエンド×AWSのこれから
 
何でRuby
何でRuby何でRuby
何でRuby
 
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
 
2015年度苫小牧高専情報工学科 学外実習発表会 発表資料
2015年度苫小牧高専情報工学科 学外実習発表会 発表資料2015年度苫小牧高専情報工学科 学外実習発表会 発表資料
2015年度苫小牧高専情報工学科 学外実習発表会 発表資料
 

レガシーすぎるRailsアプリを10倍高速化した組織的なカイゼン活動

Editor's Notes

  1. レガシー過ぎるRailsアプリを10倍高速化した組織的なカイゼン活動、始めさせていただきます。
  2. 自己紹介ですがほぼ飛ばします。 業務ではRailsとVuejs書いてます。
  3. 今日は弊社の自社サービスで、業務マニュアルの作成編集共有プラットフォームのTeachmeBizのパフォーマンスを改善した話をさせていただきます。
  4. 登壇にあたって、広報担当から宣伝しておけと言われてこんなスライドも用意してるんですが、多分誰も興味ないと思うのでカットします。
  5. で、このTeachmeBiz、以前、というかつい最近までパフォーマンスめっちゃ悪かったです。
  6. その一例として、レスポンス時間のパーセンタイルを可視化したのがこちらです。 一年ちょっと前ですね。
  7. 赤が99パーセンタイル、紫が95パーセンタイルを表しているので、リクエストの上位5%はレスポンスに8秒ぐらいかかってしまっていることがわかります。
  8. 上位5%が8-9秒かかることはどれぐらいヤバイのか??
  9. こちらはグーグルデベロッパーブログによる、パフォーマンスとユーザ満足度の指標を引用したものです。 ユーザは1秒以上待たされるとタスクへの関心を失い、10秒以上待たされるとタスクを中断してそのまま戻ってこない恐れがあるそうです。 たしかに、Webサービスを使っていて、ボタンを押してから10秒間も反応がなかったら、固まったと思ってブラウザを閉じたりしそうですね。
  10. 今回のTeachmeのケースでは95パーセンタイルで10秒弱だったので、 極端に言えば、ユーザが操作するたびに5%の確率でユーザが離れていってしまう、非常に機会損失の大きな危機的状況になっていました。
  11. ゆーて遅いのは95パーセンタイルだけで、一部の重い機能が足引っ張ってるだけでしょ?
  12. ゆーて遅いのは95パーセンタイルだけで、一部の重い機能が足引っ張ってるだけでしょ?
  13. 実際はそんなことなく、平均応答時間で見ても、1.37秒もかかっている日がありました。
  14. 1.37秒というと、ユーザがタスクへの関心を失うボーダーを超えています。 つまり、ユーザはリクエストのたびにサービスに対する関心を失っているのです。
  15. 以上のように、どんな便利なシステムも、パフォーマンスが悪ければユーザが離れてしまいます
  16. そんなサービスの危機的状況に、弊社開発部が動き出しました。
  17. チームの垣根を超えて、パフォーマンスを改善したい漢たちが集まったのです。 弊社のWeb開発チームは、サーバサイド、フロントエンド、SREが在籍しているのですが、それぞれのチームから、代表となるメンバーが一人以上集まり
  18. PWGという、パフォーマンス改善を行う専門のチームが生まれました。
  19. このPWGという言葉は、弊社オリジナルではなく、株式会社はてなさんで行われている活動の影響を受けました。 といっても、弊社におけるPWGは、それにアレンジを加えた独特なものになっているので、詳しくはこちらの弊社開発ブログを見てみてください。
  20. PWGではまず、改善するために何が課題なのかを洗い出すことからはじめました。
  21. 課題はもちろんパフォーマンスがすこぶる悪いこと
  22. かと思いましたがこれは違います。これは課題が引き起こした結果です。
  23. 本質的な課題はその前段階にありました。 パフォーマンスが悪い問題を明らかにする仕組みがなかったことと、 それを解決するための体制がなかったことです。
  24. なのでPWGでは、問題を明らかにしてチームでコミットするために、データの収集、可視化からはじめました。 そしてそれらのデータを用いて、KPIを作成、チームで問題解決できる仕組み作りをしました。
  25. 具体的に行った作業はよくある話なので割愛しますが、まぁ元のコードが大概だったのでこれは結構簡単に治すことができました。
  26. そのようなPWG活動を通常業務と並行して始めた結果
  27. 元々8,9秒かかっていた95パーセンタイルは
  28. 全期間で1秒未満になっています。 50パーセンタイルなんだかだとほぼ0.1秒前後ですね。
  29. 日によっては1.37秒もあった平均応答時間も
  30. 最大でも0.13秒まで落としました。
  31. PWGによる成果は歴然で、平均応答時間は10倍高速化しています。タイトルに偽りなしです。
  32. PWGはその後、当初の目的は達成したのでひとまず解散としました。 ただし、改善のための仕組みづくりは完了しているので、これからは各々がパフォーマンスを監視して、適宜継続的なカイゼン活動を行うようにしています。
  33. まとめです。 どんなに良いシステムでもパフォーマンスが悪いとユーザはどんどん離れていってしまいます。 しかし、通常業務もある中で、パフォーマンスを改善するためには、データの可視化と取り組むための仕組み作りが必要でした。 そして、1回の成功にとどまらず、継続的な取り組みが重要だとわかったので、今後も積極的に続けていきたいと思っています。
  34. 以上です。ご清聴ありがとうございました。 短い時間で浅い話しか出来なかったので、何かありましたら本日の懇親会や、こちらのツイッターで是非お願いします!