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?

Modern Web Performance Testing

By Marcin Zajkowski

Modern Web Performance Testing

Most of us developers think about performance when it's already 'a little bit too late'. When the client or user reports that our solution is 'slow' or fails every time on Friday at 5 pm when more than 'X' users opens the app... Why???!!! Would we care more if it was easy and simple? What if I tell you that it is? Let's talk about the Umbraco implementations in which each millisecond and TTFB matters. We'll talk about low-level code optimisations, but also the whole setup to let us convert our benchmarks and data into fully automated performance testing setup to deliver high quality and high-performance web applications.

  • 14,322