stack overflow - it's all about performance / marco cecconi (stack overflow)

74
Marco Cecconi @sklivvz http://sklivvz.com

Upload: ontico

Post on 16-Apr-2017

3.758 views

Category:

Engineering


0 download

TRANSCRIPT

Page 1: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

Marco Cecconi@sklivvzhttp://sklivvz.com

Page 2: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

ARCHITECTURE?

WHAT THE HECK IS

THAT?

Page 3: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 4: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 5: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

In the past 12 months

• The Stack Exchange network grew from 130 to 150 sites (+15%)

• US site rank for visitors of the whole network improved from #44 to #19 (-25 ranks)

Page 6: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 7: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 8: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 9: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 10: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 11: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 12: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 13: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 14: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 15: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 16: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 17: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 18: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 19: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 20: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 21: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 22: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 23: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

Tight, tight, code cycles

Page 24: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

BATCAVE

Code-build-test cycle running on home machine

feature requests

Page 25: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

BATCAVE DEV.SO

Test on the real servers

git push

Page 26: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

BATCAVE DEV.SO

META.SE

1-click deploy

Users test on meta.stackexchange.com

(“baking”)

git push

Page 27: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

BATCAVE DEV.SO

META.SE

1-click deploy

HALP!

git revert

git push

Page 28: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

BATCAVE DEV.SO

NETWORK META.SE

1-click deploy

git push

1-clickdeploy

It’s live! Tons of users use it…

Page 29: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

BATCAVE DEV.SO

NETWORK META.SE

1-click deploy

git push

1-clickdeploy

…and provide new

feature requests

Page 30: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

Move fast and break things*

* Not the home page or question page :-)

Page 31: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

Move fast and break things*

* Not the home page or question page :-)

Page 32: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 33: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

“Normal” caching

Page 34: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 35: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 36: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

Our frienemy:The Garbage Collector

Page 37: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 38: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

Too many objects instantiated

Page 39: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

Caching abuse

Page 40: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 41: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 42: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 43: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 44: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

Compliler abuse

Page 45: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 46: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 47: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

Framework abuse

Page 48: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 49: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 50: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 51: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

Complex instance graph

Page 52: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

Avoiding common patterns

Page 53: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

IRepository<Order> orderRepository = container.Resolve<IRepository<Order>>();

Order order = orderRepository.Get(35);

Dependency injection pattern

Page 54: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 55: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

IRepository<Order> repository = new ValidatingOrderRepository ( new SecurityRepository<Order> ( new LoggingRepository<Order> ( new CachingRepository<Order> ( new NHibernateRepository<Order> () ) ) ) ); Order order = repository.Get(35);

Page 56: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

A look at our source code

Page 57: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 58: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 59: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 60: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 61: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

Automated TESTERS

Page 62: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 63: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 64: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

What we do test:Open Source and Libraries

Page 65: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 66: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 67: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)
Page 68: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

SECRET SAUCE

Page 69: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

HIRE HACKERS…

…LET THEM CODE

Page 70: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

BOSS MODE CODE

Page 71: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

BOSS MODE TOOLS

Page 72: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

• Performance is a feature• Always. Be. Shipping.• Use your circumstances.• Open source your libraries• 3 obscenely big monitors.

KEY TAKEAWAYS

Page 73: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

Thank you

Page 74: Stack Overflow - It's all about performance / Marco Cecconi (Stack Overflow)

Marco Cecconi@sklivvz

http://sklivvz.com

perl -wlne'BEGIN{$b=rand$=}$a=qw/To lzhk_kypam_yr_qryaimtcpdjmu_bmr_amk_enq_ghqhmf Cnvm/[($_<=>int$b)

+1];$a=~y/a-zA-Z/b-zaB-ZA/;print $a'