310 likes | 402 Views
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. ITCamp 2012 sponsors. Who am I. Dan Fizesan, 37 years old .
E N D
Serving 10 million requests per dayHow to solve the architecture challenges of a high traffic ASP.NET websiteLevel 400 Dan Fizesan, Lead Developer, NetMatch – Travel Technology Solutions
Who am I • 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
Agenda • Architecture of a web application • Deep dive into the macro architecture • Serving 10 million requests a day - final view • Demo • Q & A
Context • 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
Architectural Goals • Be online as much time as possible • Serve as many users as possible • Low cost of ownership • Good performance
Architectural Goals • Be online as much time as possible • Serve as many users as possible • Low cost of ownership • Good performance
Availability • 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
Challenge How can we reach 99.9% availability? • Through passive redundancy – failover • Through active redundancy • Through data sources replication
Load Balancers + Failover • 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
Challenge Web is stateless, what happens with the state when using a web farm? • No sessions stickiness: • SQL (session) state server, • distributed cache session state, • use cookies • With session stickiness • performs worse • can lead to overloaded servers
Architectural Goals • 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
Scalability • 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
Architectural Goals • 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
Distributed Caching • 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 AppFabriccaching
Challenge 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
Architectural Goals • 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
Perceived good performance • Web code/ business layer performance • Database queries performance • Flat databases • Replicated databases • Distributed architecture • splitting into sub-applications • Parallelization of the code (demo)
Challenge 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
Demo Results 300 requests
Contact: d.fizesan@netmatch.ro www.netmatch.ro/itcamp2012/challenges.pptx www.netmatch.ro/itcamp2012/demo.zip Q & A
To Remember • Availability • Redundancy • Load balancer • Scalability • Distributed caching • Performance