310 likes | 409 Vues
In this presentation, Dan Fizesan, Lead Developer at NetMatch, shares insights on addressing the architecture challenges faced by high-traffic ASP.NET websites like Zoover, which serves 10 million requests per day. The session covers essential architectural goals such as achieving high availability, low ownership costs, and excellent performance. Key strategies include load balancing, failover mechanisms, scalability solutions, and effective caching strategies. Gain an understanding of how to maintain a robust system that can efficiently serve millions of users while ensuring good performance and reliability.
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