ITCamp 2012 - Dan Fizesan - Serving 10 million requests per day
1. Serving 10 million
requests per day
How to solve the architecture challenges
of a high traffic ASP.NET website
Level 400
Dan Fizesan, Lead Developer,
NetMatch – Travel Technology Solutions
@ itcampro # itcamp12 Premium conference on Microsoft technologies
2. ITCamp 2012 sponsors Private &
Public Cloud
@ itcampro # itcamp12 Premium conference on Microsoft technologies
3. Who am I Private &
Public Cloud
• Dan Fizesan, 37 years old.
• 15 year experience with Progress / C# / ASP.NET / T-SQL.
• Technical Architect / Lead developer in NetMatch / Zoover
project.
• NetMatch international company e-business provider for
tourism industry
• Zoover is a website with reviews about trips on average
500.000 unique visitors per day
• Contact: d.fizesan@netmatch.ro
@ itcampro # itcamp12 Premium conference on Microsoft technologies
4. Agenda Private &
Public Cloud
• Architecture of a web application
• Deep dive into the macro architecture
• Serving 10 million requests a day - final view
• Demo
• Q&A
@ itcampro # itcamp12 Premium conference on Microsoft technologies
5. Context Private &
Public Cloud
• More and more users are using the online
websites
• Applications on mobile devices are using
data from the web data services
• The FOCUS in the presentation are on-
premise applications that are also subject to
above trends
@ itcampro # itcamp12 Premium conference on Microsoft technologies
6. @ itcampro # itcamp12 Premium conference on Microsoft technologies
7. Architectural Goals Private &
Public Cloud
• Be online as much time as possible
• Serve as many users as possible
• Low cost of ownership
• Good performance
@ itcampro # itcamp12 Premium conference on Microsoft technologies
8. Architectural Goals Private &
Public Cloud
• Be online as much time as possible
• Serve as many users as possible
• Low cost of ownership
• Good performance
@ itcampro # itcamp12 Premium conference on Microsoft technologies
9. Availability Private &
Public Cloud
• We reach high availability when more than 90% of
the time the website is working correctly
• 99% availability = the website is down 87,6 hours in
a year (or 15 minutes every day)
• 99.99% availability = the system is down less then 1
hour per year
• Our systems go for 99.9% availability
@ itcampro # itcamp12 Premium conference on Microsoft technologies
10. Challenge Private &
Public Cloud
How can we reach 99.9% availability?
• Through passive redundancy – failover
• Through active redundancy
• Through data sources replication
@ itcampro # itcamp12 Premium conference on Microsoft technologies
11. @ itcampro # itcamp12 Premium conference on Microsoft technologies
12. Load Balancers + Failover Private &
Public Cloud
• Hardware load balancers
• Software load balancers: Network Load
Balancer, Ha Proxy, etc.
• Algorithms to spread the load
• Implementing failover is crucial
• Alternative: Producer-consumer pattern –
used in IIS
@ itcampro # itcamp12 Premium conference on Microsoft technologies
13. @ itcampro # itcamp12 Premium conference on Microsoft technologies
14. Challenge Private &
Public Cloud
Web is stateless, what happens with the state
when using a web farm?
No sessions stickiness: With session stickiness
• SQL (session) state • performs worse
server, • can lead to
• distributed cache overloaded servers
session state,
• use cookies
@ itcampro # itcamp12 Premium conference on Microsoft technologies
15. Architectural Goals Private &
Public Cloud
• Be online as much time as possible
• How can we serve as many users as
possible?
Partly through using load balancers
Partly through scalability of the website
• Low cost of ownership
• Good performance
@ itcampro # itcamp12 Premium conference on Microsoft technologies
16. Scalability Private &
Public Cloud
• The ability of the website to grow the user
base by adding more hardware
• The more linear the relation is, the more
scalable the website is
• Vertical scalability
• Horizontal scalability, lower costs using
commodity hardware
@ itcampro # itcamp12 Premium conference on Microsoft technologies
17. Architectural Goals Private &
Public Cloud
• Be online as much time as possible
• How can we serve as many users as possible?
Partly through using load balancers
Partly through scalability of the website
• Low cost of ownership
• Good performance
@ itcampro # itcamp12 Premium conference on Microsoft technologies
18. Distributed Caching Private &
Public Cloud
• Helps the backend (database/services)
• Advantage: brings consistency in an webfarm
• Disadvantages: latency
• Some of the free options:
Windows Server AppFabric Caching, memcached
• Some of the commercial options:
NCache, Azure AppFabric caching
@ itcampro # itcamp12 Premium conference on Microsoft technologies
19. @ itcampro # itcamp12 Premium conference on Microsoft technologies
20. Challenge Private &
Public Cloud
How can we protect the website in the case
the distributed cache goes down or is not
reachable?
• Through implementing failover caching
mechanisms in the website
@ itcampro # itcamp12 Premium conference on Microsoft technologies
21. Architectural Goals Private &
Public Cloud
• Be online as much time as possible
Through high availability
• Serve as many users as possible
Partly through using load balancers
Partly through scalability of the website
• Low cost of ownership
• Good performance
@ itcampro # itcamp12 Premium conference on Microsoft technologies
22. Perceived good performance Private &
Public Cloud
• Web code/ business layer performance
• Database queries performance
Flat databases
Replicated databases
• Distributed architecture
splitting into sub-applications
• Parallelization of the code (demo)
@ itcampro # itcamp12 Premium conference on Microsoft technologies
23. @ itcampro # itcamp12 Premium conference on Microsoft technologies
24. Challenge Private &
Public Cloud
How can we use distributed architecture and
have a good performance?
• We should externalize the resource-intensive
parts of the application into sub-applications
• Choosing wrong parts will only add (network)
latency
@ itcampro # itcamp12 Premium conference on Microsoft technologies
25. @ itcampro # itcamp12 Premium conference on Microsoft technologies
26. OUR ARCHITECTURE TO SERVE
10 MILLION REQUESTS PER DAY
@ itcampro # itcamp12 Premium conference on Microsoft technologies
27. @ itcampro # itcamp12 Premium conference on Microsoft technologies
28. @ itcampro # itcamp12 Premium conference on Microsoft technologies
29. Demo Results Private &
Public Cloud
300 requests
Approach % s
21,6 s
ThreadPool parallelism 1200%
Task Parallel Library parallelism 4200% 76 s
Simple Threads parallelism 155% 2,8 s
Custom ThreadPool parallelism 100% 1,8 s
@ itcampro # itcamp12 Premium conference on Microsoft technologies
30. Contact: d.fizesan@netmatch.ro
www.netmatch.ro/itcamp2012/challenges.pptx
www.netmatch.ro/itcamp2012/demo.zip
Q&A
@ itcampro # itcamp12 Premium conference on Microsoft technologies
31. To Remember Private &
Public Cloud
• Availability
• Redundancy
• Load balancer
• Scalability
• Distributed caching
• Performance
@ itcampro # itcamp12 Premium conference on Microsoft technologies