2

I'm working on a modest sized web application that receives circa 30k unique users per day, this is an MVC C# application hosted on 3 web servers and backed by a single SQL server, everything is hosted in one data center.

The issue is we are seeing dom complete times upto 3 times slower in some parts of the world. We have done all the usual "quick wins" as suggested by yslow - and are now looking to make architectural changes.

Our initial plan is to create a web api that wraps our server tier, and then host the web tier in a second data center in a different part of the world closer to the users with the poor latency. The hope is that this in combination with caching and will help reduce latency. I appropriate that there will be latency between the api service tier and web tier, but the hope is that these will be lightweight http calls.

Does this make sense?

Dan
  • 161
  • 3
  • 1
    You should read this: [How Basecamp Next got to be so damn fast without using much client-side UI](http://37signals.com/svn/posts/3112-how-basecamp-next-got-to-be-so-damn-fast-without-using-much-client-side-ui) – Robert Harvey Jan 21 '14 at 22:54

1 Answers1

2

Yes, it does make sense. And you could do some more.

The difficulty with lightweight HTTP calls is that unless the connection is kept open for the calls (not uncommon today), each call needs to reestablish the three way handshake for TCP, and renegotiate the bandwidth (starting from a low point).

This can be improved upon by having your computer in the remote datacenter create an always open connection itself to the computer at your main datacenter. By remaining open, the connection doesn't need to renegotiate the bandwidth and can properly scale up and remain scaled up to the maximum bandwidth.

Working with two known endpoints, it is also possible to compress the data that goes between them to further improve the resource.

There are other aspects of TCP tuning that can be done to further improve performance between known endpoints and across a known connection.

Unfortunately, I'm not a system or network administrator and can't offer particulars for this. This description is based on a product that I used at a previous company. If you poke around, you can find other press releases with hints how Netli did it.

That said, Netli was purchased by Akamai and incorporated their technology into the Akamai stack. You may find Akamai (or other CDNs) are able to provide that functionality for you.

Note that its possible to do this as "just a proxy" at the remote site without having to put another system doing work.