SlideShare a Scribd company logo
1 of 91
Download to read offline
アメブロ2016
実録、アメブロリニューアル275日
~ Webパフォーマンス編 ~
2017.2.25 Inside Frontend #1 @Yahoo
Kazunari Hara (@herablog)
アメブロ2016?
表示速度改善
システム, UIのモダン化
アメブロ2016?
45,248行 💪
IsomorphicなWebで成果
Server Client
JavaScript JavaScript
API
IsomorphicなWebで成果
IsomorphicなWebで成果
採用技術はこんな感じ
詳しくはブログを
アメブロ2016 ~ React/ReduxでつくるIsomorphic web app ~
https://developers.cyberagent.co.jp/blog/archives/636/
アメブロ2016 ~ Isomorphic JavaScriptの詳しい話
https://developers.cyberagent.co.jp/blog/archives/3513/
アメブロの大規模システム刷新と それを支えるSpring
https://www.slideshare.net/nin2hanzo/spring-69237035
アメブロ2016:インフラ編 〜大規模リニューアルの裏側〜
https://developers.cyberagent.co.jp/blog/archives/2653/
@herablog
Kazunari Hara
Speaker
Shibuya Engineer
アメブロ2016
実録、アメブロリニューアル275日
~ Webパフォーマンス編 ~
2016.1.1 ~ 2016.8.31
2016.1.1 ~ 2016.8.31
Planning
Planning
The Standard
- エコシステムに乗っかる
- “Say hallo to the world”
Frontend Server (nodejs)
- 表示に関わるものをさっと変えられる
- 弊社数々のサービスで導入実績あり
JavaScript
- React
- Flux -> Redux
- ES6(, 7)
- ESLint
V8 5.7
mid-March 🤗
https://github.com/nodejs/node/pull/10992#issuecomment-277925187
CSS
- PostCSS
- BEM -> CSS Modules
- stylelint
- Style guide -> Web
Style guide
https://medium.com/@herablog/designing-style-guides-on-the-web-1706f3eefade#.3tzqlrfui
HTML
- モダンなMETA
- アクセシビリティ
- AMP
モダンなMETA
https://www.slideshare.net/herablog/meta-49939784
アクセシビリティ
https://speakerdeck.com/herablog/ameburowosukurinridadedu-mishang-getemita-2016nian-xia
AMP
AMP
https://www.cyberagent.co.jp/technicalcreator/article/id=12157
Build
- gulp -> Webpack
- package.json
Performance Auditing
http://calendar.perfplanet.com/2012/make-your-mobile-pages-render-in-under-one-second/
- Critical Lengths
- Critical Files
- Critical Bytes
Browserの動きを理解する
http://calendar.perfplanet.com/2012/make-your-mobile-pages-render-in-under-one-second/
Browserの動きを理解する
http://calendar.perfplanet.com/2012/make-your-mobile-pages-render-in-under-one-second/
Browserの動きを理解する
CRP Metrics: Length 3, Files 8, Bytes 28kb
TCP round trip limit
http://calendar.perfplanet.com/2012/make-your-mobile-pages-render-in-under-one-second/
- Keep server backend time to generate HTML to a minimum (under 100ms)
- Avoid HTTP redirects for the main HTML resource
- Avoid loading blocking external JavaScript and CSS before the initial render
- Inline just the JavaScript and CSS needed for the initial render
- Delay or async load any JavaScript and CSS not needed for the initial render
- Keep HTML payload needed to render initial content to under 15kB compressed
Make your mobile pages render in under one second
Basics
Performance Auditing with
Chrome Developer Tools
SpeedCurve
etc.
Performance Auditing
- 自分たちで調査・課題設定すること
- 継続できること
by Steve Souders
Performance Auditing
https://speedcurve.com/herablog/test/160413_R2_a0d134e5e6384947e979f0f029c4f05e/?share=zpalm08uq1h35axc4d5ylxncbyp832
Performance Auditing
- HTMLファイルサイズを減らす (71kB)
- Blocking Resourcesを減らす (8つ)
- JavaScriptの非同期読み込み
- CDNキャッシュの最適化
- Web Fontの統合 (3種類)
- いらない読み込みの削除
- 画像のCSS化
Goal
50%↓
Architecture
Isomorphic Web App (SSR + SPA)
SSR SPA SPA
Lazy Load
SSR
JS
Modern Workflow
- git-flow, Pull Request
- CIによる自動テスト, ビルド, デプロイ
Modern Workflow
CDN
Private CloudECR (Tokyo)
Update Docs: README
Update Docs: CONTRIBUTING.md
Do
Performance Auditing
- HTMLファイルサイズを減らす (71kB)
- Blocking Resourcesを減らす (8つ)
- JavaScriptの非同期読み込み
- CDNキャッシュの最適化
- Web Fontの統合 (3種類)
- いらない読み込みの削除
- 画像のCSS化
HTMLファイルサイズを減らす
- SSR + Lazy Load
- 約1/7に削減 (71KB -> 9.8KB)
Blocking Resourcesを減らす
- バンドル
- 8から3つに削減
JavaScriptの非同期読み込み
- SSR + バンドル + async属性
CDNキャッシュの最適化
- バージョニングしているので
長時間のキャッシュが可能
Web Fontの統合
- 各サービスで作成していた
- 共通利用できるよう単体サービス
として運用
Web Fontの統合
Web Font (WOFF2, WOFF, TTF) SVG Sprite
いらない読み込みの削除
- 既存のコードを読みながらリストアップ
画像のCSS化
- 画像でなくていい表現のCSS化
No more ガタンッ
本番のようにリリース
- リリースフローも固めていく
Testing
負荷試験
- 過去のアクセスログを元に検証
- Over 10,000 rps
負荷試験
負荷試験
結果は悪かった
500
1000
1500
2000
5 10 20 40
283
928 965
1,887
レスポンスタイム(ms)
同時接続数
Target
使い物にならない
Turning
Node.js with Chrome DevTools
https://medium.com/@paul_irish/debugging-node-js-nightlies-with-chrome-devtools-7c4a1b95ae27
Node.js with Chrome DevTools
renderToString() 遅い問題
Caching
- 参照 > 更新
- 基本的に静的ドキュメント
Cache Hit Rate
Caching
HTML
renderToString()
Caching
update blogger_ver
blogger_ver:key
data
on-memory
data data
data
Redis vs Memcached
- Redisのeviction発生によるパフォーマンス低下
- データ量大・高アクセス時の単純なキャッシュで
はMemcached
https://twitter.com/cubicdaiya/status/827403388048470016
Under 100ms
React Fiber Architecture
http://isfiberreadyyet.com/
Infra Structure
LB
(Data Center)
Host
Host
Host
Infra Structure
LB
(Data Center)
Host
Host
Host
リリースは難産だった…
- 段階リリース、うまくいかない
- Slackに知らない人が入ってくる
- 段階リリース、うまくいかない
- Slackにエライ人が入ってくる
2016.08.31 🚀
❛❛ Premature optimization is the root of all evil. ❜❜
— Donald Knuth
教訓
- 刷新は大変だった
- そのぶん知見も得られた
- 老害にならないようにがんばら
なくちゃいけない $
One more thing...
Front-End Performance
Checklist 2017
https://www.smashingmagazine.com/2016/12/front-end-performance-checklist-2017-pdf-pages/
Service Worker, HTTP/2, CDN,
srcset, client hints,
resource hints, HPACK,
AMP, Instant Atricle etc.
Lighthouse
https://github.com/GoogleChrome/lighthouse
フロントエンドでできること
フロント、がんばってこ💪
Ask Me Anything
HOU Bin herablog
アメブロ2016
実録、アメブロリニューアル275日
~ Webパフォーマンス編 ~
2017.2.25 Inside Frontend #1 @Yahoo
Kazunari Hara (@herablog)

More Related Content

More from Kazunari Hara

スマートフォン時代のWeb制作術 Vol.2
スマートフォン時代のWeb制作術 Vol.2スマートフォン時代のWeb制作術 Vol.2
スマートフォン時代のWeb制作術 Vol.2Kazunari Hara
 
スマートフォン時代のWeb制作術 Vol.1
スマートフォン時代のWeb制作術 Vol.1スマートフォン時代のWeb制作術 Vol.1
スマートフォン時代のWeb制作術 Vol.1Kazunari Hara
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-Kazunari Hara
 
Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~Kazunari Hara
 
速くなければスマフォじゃない
速くなければスマフォじゃない速くなければスマフォじゃない
速くなければスマフォじゃないKazunari Hara
 
Hybrid appのすすめ
Hybrid appのすすめHybrid appのすすめ
Hybrid appのすすめKazunari Hara
 

More from Kazunari Hara (6)

スマートフォン時代のWeb制作術 Vol.2
スマートフォン時代のWeb制作術 Vol.2スマートフォン時代のWeb制作術 Vol.2
スマートフォン時代のWeb制作術 Vol.2
 
スマートフォン時代のWeb制作術 Vol.1
スマートフォン時代のWeb制作術 Vol.1スマートフォン時代のWeb制作術 Vol.1
スマートフォン時代のWeb制作術 Vol.1
 
速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-速くなければスマフォじゃない - インターンバージョン-
速くなければスマフォじゃない - インターンバージョン-
 
Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~Native x Webでいいとこどり開発 ~ピグトーク~
Native x Webでいいとこどり開発 ~ピグトーク~
 
速くなければスマフォじゃない
速くなければスマフォじゃない速くなければスマフォじゃない
速くなければスマフォじゃない
 
Hybrid appのすすめ
Hybrid appのすすめHybrid appのすすめ
Hybrid appのすすめ
 

Recently uploaded

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 

Recently uploaded (14)

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 

アメブロ 2016: 実録、アメブロリニューアル275日 ~ Webパフォーマンス編 ~