Modern Web (Umbraco) Performance Testing

by @zajkowskimarcin

zajkowskimarcin

mzajkowski

zajkowskimarcin

Marcin Zajkowski

zajkowskimarcin

mzajkowski

zajkowskimarcin

tbpgtsm.com

CTO @ Cogworks

CTO / CKO @ WOW School

Marcin @ umbraCoffee (Friday's 11:30 on YT)

Blogger @ udfnd.pl

"Downtime is better for a B2C web service than slowness. Slowness makes you hate the service. Downtime you just try again later."

 

- Lenny Rachitsky, Product Manager, Airbnb

#perfmatters

Retaining users

Pinterest increased search engine traffic and sign-ups by 15% when they reduced perceived wait times by 40%.

The BBC found they lost an additional 10% of users for every additional second their site took to load.

DoubleClick by Google found 53% of mobile site visits were abandoned if a page took longer than 3 seconds to load.

Improving conversion

E-commerce studies: 2 seconds delay during checkout increases the abandonment rate by up to 30%.

Amazon (and Walmart) Found Every 100ms of Latency Cost them 1% in Sales.

DoubleClick found publishers whose sites loaded within five seconds earned up to twice as much ad revenue than sites loading within 19 seconds.

User Experience & People

Let's switch the narration...

Dear Customer / Stakeholder:

  • with the next release, you'll start losing $350k per month because of the performance degradation of our newly delivered feature
  • we've just caused your bounce rate to increase by 20%, congrats!
  • we don't know if our website will handle this traffic, let's see...
  • it must be issue with your machine / browser / {name_it}

"If you can't measure it,

you can't improve it."

 

- Peter Drucker, American Businessmen (1909-2005)

Stop guessing.

Treat performance

as feature.

Build.
Measure.
Optimise.
Monitor.

Solution(s).

  • Be pragmatic and set the correct "focus"
  • Learn and understand (whys, metrics, behaviours) - "feel-time" / "time to first tweet" / TTFB vs. Time to Interactive (or Paint at least)
  • "Enough"
  • Devs vs. Business
  • Prevent > Solve (think about it as an insurance and trust fund with your client)

Conclusions

  • Be prepared
  • Define performance scenarios / hot paths ahead in time
  • Test & verify your assumptions

Performance is a feature, not a luxury.

Start simple.

Improve your code.

Good performance starts with good code.

Our solution

  • Ryslyn Analyser (FxCopAnalyzers)
  • StyleCopAnalyzers
  • EditorConfig

struct, in, ref, Span<T>...

0
 Advanced issue found
 

Measure.

Go deeper.

APM

#cebula

Microbenchmarking / Benchmark.Net, NBench

Get low / PerfView, ANTS, windbg etc.

Automate.

Observe.

Have fun.

Summary

1. Stop guessing.

2. Treat performance as a feature.
3. Start simple.
4. Always measure.
5. Automate, observe, have fun.
6. Learn. (not only from mistakes)

Thank you!

@zajkowskimarcin  /  marcin.zajkowski@wearecogworks.com

Questions?