episerver dev meetup: performance in episerver solutions, tommi raunio, solita
TRANSCRIPT
![Page 1: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/1.jpg)
PERFORMANCE IN
EPISERVER
SOLUTIONS
Tommi Raunio
Software Architect
Twitter: @TommiRaunio
![Page 2: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/2.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/3.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/4.jpg)
WHAT & WHY
![Page 5: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/6.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/7.jpg)
HOW?
![Page 8: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/8.jpg)
THREE SECRET INGREDIENTS TO
PERFORMANCE
1. Design & Architecture
2. Implement
3. Measure
![Page 9: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/9.jpg)
PART 1. ARCHITECTURE
![Page 10: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/10.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/11.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/12.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/13.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/14.jpg)
PART 2. IMPLEMENT
![Page 15: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/15.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/16.jpg)
PART 3. MEASURE
![Page 17: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/17.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/18.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/19.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/20.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/21.jpg)
DOTMEMORY
› .NET memory profiler
› Silver bullet for memory leaks
![Page 22: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/22.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/23.jpg)
QUESTIONS?
![Page 25: Episerver dev meetup: Performance in Episerver Solutions, Tommi Raunio, Solita](https://reader031.vdocuments.site/reader031/viewer/2022020108/58731de01a28ab673e8b6cc7/html5/thumbnails/25.jpg)