25
PERFORMANCE IN EPISERVER SOLUTIONS Tommi Raunio Software Architect Twitter: @TommiRaunio

Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

Embed Size (px)

Citation preview

Page 1: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

PERFORMANCE IN

EPISERVER

SOLUTIONS

Tommi Raunio

Software Architect

Twitter: @TommiRaunio

Page 2: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

ME?

› Tommi Raunio

› Software architect

› Working with .NET since 2006

› In Solita since 02/2014

› Twitter: @TommiRaunio

Page 3: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

AGENDA

1. What’s performance and why talk about it

2. Constructing performing Episerver websites

Page 4: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

WHAT & WHY

Page 5: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

PERFORMANCE?

› Two types

› Vertical

• Load speed

• The speed which invidual user experiences

› Horizontal

• Number of requests the site can handle

• Makes the site absorb more stuff

Page 6: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

PERFORMANCE MATTERS!

› Performance equals money

• More efficent software equals less hosting costs

• E-commerce sites start losing purchases if the site doesn’t perform

› Developer satisfaction

Page 7: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

HOW?

Page 8: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

THREE SECRET INGREDIENTS TO

PERFORMANCE

1. Design & Architecture

2. Implement

3. Measure

Page 9: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

PART 1. ARCHITECTURE

Page 10: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

DISTANCE MATTERS

Episerver DB / SQL Server

Episerver front server / IISExternalsystems

Query cache

Browser caching

ContentOutputCache

Object (Contentrepository)Cache

File caching

Custom made caching

Page 11: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

CUSTOM CACHING

› Caching is a shortcut to data

› Use caching as a shortcut for long running operations

› Do cache (for example)

• Long JSON strings (Web API / Razor)

• Results from external systems

› Don’t cache

• ContentRepository Get / GetChildren

Page 12: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

WHEN CACHING…

› Use CacheManager

› Invalidate

› Remember the logged in user. Don’t cache content when logged in

› Don’t over-engineer

Page 13: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

ARCHITECT FOR READS

Write optimizeddatabase

Episerver front server / IISExternalsystems

Read optimizeddatabase

Redis / Episerver Find / ElasticsearchEpiserver databaseSQL Server

Sync

Page 14: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

PART 2. IMPLEMENT

Page 15: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

IMPLEMENTATION & MISC.

› Keep your datasets to minimum

• When reading from DB

• When sending data to browser

› Avoid unnecessary reads from database

› Watch that lazy Ienumerable

› Construct a device aware image system

› Minimize the number of JS libraries

› Bundling & minification

Page 16: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

PART 3. MEASURE

Page 17: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

PREFIX

› Light weight performance analyzer

› Good for general performance analysis

› Result filtering is done for you

• Tracks only the most important methods

› During development as a second screen

› Free!

Page 18: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

JMETER

› Performance testing tool

› Good for generating load

› Good for stress testing your site (in dev)

› Combine with dotTrace to reveal code ”hot spots”

Page 19: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

DOTTRACE

› .NET code profiler

› By Jetbrains

› My personal go-to tool regarding performance problems

› Very detailed analysis on where the time is spent in code

Page 20: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

WEB ANALYSIS

› PageSpeed Insights

› Webpagetest.org

› Both tools (sites) do a really good

analysis from browser level

Page 21: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

DOTMEMORY

› .NET memory profiler

› Silver bullet for memory leaks

Page 22: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

PERFORMANCE MEASUREMENT

OVER TIME

› Displays page performance over time

• Shows possible drops in performance after changes

› Custom tool based on Jenkins + MSTest + Elasticsearch + Kibana

Page 23: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

QUESTIONS?

Page 24: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita

Twitter @SolitaOywww.solita.fi

THANK YOU!

TOMMI RAUNIO

[email protected] @TommiRaunio

Page 25: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita