47
Faster & more flexible CDN integration Wim Leers ~ http://wimleers.com / Drupal.org, IRC, Twitter, LinkedIn: wimleers

Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Faster & more flexible CDN integration

Wim Leers ~ http://wimleers.com/

Drupal.org, IRC, Twitter, LinkedIn: wimleers

Page 2: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Bachelor thesis

• Promotor: Prof. dr. Wim Lamotte

• Co-promotor: dr. Peter Quax

• Mentors: Stijn Agten & Maarten Wijnants

“Improving Drupal’s page loading performance”

Page 3: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Goal

• Faster web sites

• Speed = satisfaction = more & happier visitors = more revenue

source: http://www.slideshare.net/stubbornella/designing-fast-websites-presentation, Nicole Sullivan, Yahoo!

Page 4: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Goal

• Faster web sites

• Speed = satisfaction = more & happier visitors = more revenue

• Google: +0.5s → -20% searches

source: http://www.slideshare.net/stubbornella/designing-fast-websites-presentation, Nicole Sullivan, Yahoo!

Page 5: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Terminology: page loading performance

CSS, JS, images …HTML

10%90%

Page 6: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Drupal’s page loading performance

• One of the most effective measures:

“Use a CDN”

Page 7: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Drupal’s page loading performance

• One of the most effective measures:

“Use a CDN”

• Drupal: not yet possible!

Page 8: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Terminology: CDN

Page 9: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Key properties of a CDN

Page 10: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Key properties of a CDN

• Geographical spread

Page 11: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Key properties of a CDN

• Geographical spread

• Pull versus Push

Pull Push

transfer protocol

automaticallyFTP, SFTP, rsync,

WebDAV, Amazon S3 …

+ virtually no setup flexibility

– no flexibility setup

Page 12: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Key properties of a CDN

• Geographical spread

• Pull versus Push

Pull Push

transfer protocol

automaticallyFTP, SFTP, rsync,

WebDAV, Amazon S3 …

+ virtually no setup flexibility

– no flexibility setup

Page 13: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Key properties of a CDN

• Geographical spread

• Pull versus Push

• Lock-in Pull Push

transfer protocol

automaticallyFTP, SFTP, rsync,

WebDAV, Amazon S3 …

+ virtually no setup flexibility

– no flexibility setup

Page 14: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Profiling: Episodes

Page 15: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Profiling: Episodes

• Measures “episodes” during page loading

Page 16: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Profiling: Episodes

• Measures “episodes” during page loading

• Real measurements: JS in browser, for each visitor

• No simulation!

Page 17: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Episodes module

Page 18: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Episodes module

• Drupal module that offers Episodes integration

Page 19: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Episodes module

• Drupal module that offers Episodes integration

Page 20: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Episodes Server module

Page 21: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Episodes Server module

• Drupal module that visualizes the collected measurements

Page 22: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Daemon: File Conveyor

Page 23: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Daemon: File Conveyor

1. Configuration: simple XML file

Page 24: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Daemon: File Conveyor

1. Configuration: simple XML file

2. Detection: instantaneous

Page 25: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Daemon: File Conveyor

1. Configuration: simple XML file

2. Detection: instantaneous

3. Processing: store image more efficiently … — extensible!

Page 26: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Daemon: File Conveyor

1. Configuration: simple XML file

2. Detection: instantaneous

3. Processing: store image more efficiently … — extensible!

4. Syncing: supports many protocols (FTP, Amazon S3 …) — extensible!

Page 27: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Daemon: File Conveyor

1. Configuration: simple XML file

2. Detection: instantaneous

3. Processing: store image more efficiently … — extensible!

4. Syncing: supports many protocols (FTP, Amazon S3 …) — extensible!

5. Result: SQLite DB with CDN URLs

Page 28: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Demo

Page 29: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Daemon’s capabilities: scenario 1

Company wants to switch from CDN provider X to Amazon S3.- CDN X: FTP- Amazon S3: custom protocol

Page 30: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Daemon’s capabilities: scenario 1

Company wants to switch from CDN provider X to Amazon S3.- CDN X: FTP- Amazon S3: custom protocol

• Setup:

• CDN X → Amazon S3

• Daemon

Page 31: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Daemon’s capabilities: scenario 1

Company wants to switch from CDN provider X to Amazon S3.- CDN X: FTP- Amazon S3: custom protocol

• Setup:

• CDN X → Amazon S3

• Daemon

• Alternative: write a lot of code

Page 32: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Daemon’s capabilities: scenario 2

U.S. company expands to South-Korea

Page 33: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Daemon’s capabilities: scenario 2

U.S. company expands to South-Korea

• Setup:

• North-American CDN

• Static file server in South-Korea

• Daemon + language-/subdomain-based logic to pick CDN/server

Page 34: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Daemon’s capabilities: scenario 2

U.S. company expands to South-Korea

• Setup:

• North-American CDN

• Static file server in South-Korea

• Daemon + language-/subdomain-based logic to pick CDN/server

• Alternative: global CDN or slower web site in South-Korea

Page 35: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

CDN integration module

Page 36: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

CDN integration module

• Drupal core patch for Drupal 6, committed to Drupal 7

Page 37: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

CDN integration module

• Drupal core patch for Drupal 6, committed to Drupal 7

• Basic mode: Origin Pull CDN

Page 38: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

CDN integration module

• Drupal core patch for Drupal 6, committed to Drupal 7

• Basic mode: Origin Pull CDN

• Advanced mode: any CDN (daemon)

Page 39: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Test case

Page 40: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Test case

Page 41: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Test case

Page 42: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Conclusion

Page 43: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Conclusion

1. Speed of web site very important

Page 44: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Conclusion

1. Speed of web site very important

2. Episodes → monitor page loading performance

Page 45: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Conclusion

1. Speed of web site very important

2. Episodes → monitor page loading performance

3. CDN integration module → best method to integrate Drupal with a CDN

Page 46: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Conclusion

1. Speed of web site very important

2. Episodes → monitor page loading performance

3. CDN integration module → best method to integrate Drupal with a CDN

4. Daemon → flexible CDN integration

Page 47: Faster & more flexible CDN integration...•Measures “episodes” during page loading •Real measurements: JS in browser, for each visitor •No simulation! Episodes module Episodes

Conclusion

1. Speed of web site very important

2. Episodes → monitor page loading performance

3. CDN integration module → best method to integrate Drupal with a CDN

4. Daemon → flexible CDN integration

More info? See http://wimleers.com/talk/drupalcon-paris-2009