Thoughts on Software Development, .Net, OOP, Design Patterns and all things cool
Speaker: Richard Campbell (yea, that Richard. But no Carl :( )
The third session today deals with scaling a ASP.net application. Going from the 'make it work' stage to 'make it scale' stage in our developers and how we as developers progress from end to end.
- Things we need to measure when talking about scaling
- Capacity - number of active/concurrent users
- Throughput - pageviews, request per second, transactions per second
- Performance - load time (milliseconds)
- Reviewed the basics on how to calculate performance
R = (payload/bandwith) + RTT + ( AppTurns(RTT)/concurrent requests) + CS + Cc
R == Response Time
RTT == Round trip time
Cs == Server side compute time
Cc == Client compute time - Pointed out that many times our 'performance issues' are not always in the code. Sometimes we need to take a look at either bandwith or roundtrip information/stats.
- Reviewed what 'server failure' typically looks like
Memory consumption above 80%
Processor consumption at 100%
Request queues start to grow out of hand
Page timeouts
Sessions get lost
People cannot access the site - Talked about the fallacy between 100% uptime vs 99% uptime. 99% should be the goal, not 100%
- When over the topics of discussion when you have the 'the sky is falling' meeting after a site goes down. The idea here is that developers should be ready to fully discuss the app from all aspects and the opps team needs to be ready to review the network setup/usage in great detail.
- Made suggestion that if/when you move from one server to two, you might as well as move to three because the cost of two to three is simply the cost of hardware. The move from one to two is very expensive. May also want to separate the duties of the web servers. Make one an image server ONLY.
- Chatted about when using load balancers you need to be aware of what type of balancing you need, and what type will work best for you. Sticky vs Round Robin vs WMI.
Till next time,
About Derik Whittaker
Derik is a .Net Developer/Architect specializing in WinForms working out the northern suburbs of Chicago. He is also believer and advocate for Agile development including SCRUM, TDD, CI, etc.
When Derik is not writing code he can be found spending time with his wife and young son, climbing on his bouldering wall, watching sports (mostly baseball), and generally vegging out.