I’m answering based on what you were asked. You’re talking about having servers in different hosts. The other answers say things that make sense in a hosting with different servers. They are correct for the scenarios they have resolved to answer, not for the scenario of the question.
To me the question makes clear that the separation is only taking place because they did not find a place that would provide everything together.
It depends on what you consider normal. Most sites are very simple and need a very simple structure. For example, it is rare the site that needs Redis in fact.
It is very rare to find some hosting that offers SQL Server and not ASP.NET. Many offer both and Redis (which I doubt is necessary).
This structure even works, but will generate traffic between the hosts, generating costs, which is not ideal and will greatly increase the latency of the site response. The more volume of access you have, the harder you will have to deal with a fully decentralised structure.
There is no way to perform better by having services that are dependent on each other in different physical locations. This will only generate greater latency with no gain.
No doubt the fact of having the load distributed can perform better than having everything on a single server, but only if the server is overloaded, otherwise it will only add latency without any gain. Only measuring to be sure when to separate servers.
If the option is to have separate servers on the same network, then the gain may be more interesting, but only in cases of large access volume. If the load is small, adding servers with dependent services to each other, although on the same network, will certainly add latency, but small and acceptable because the volume requires this.
There is also a possibility to use datacenters different to increase the availability time, after all a datacenter can go down. But if you do this, you should have full copies of all components in both datacenters. That is, it will have one or more servers in each of them containing the 3 reported services: SQL Server, Redis, ASP.NET (probably an IIS).
Even if you’re thinking about load distribution, this has to be an engineering job, not a road accident.
It’s possible, but I wouldn’t recommend doing this, it’s more complex and more costly.
Look for a place that meets every need. Azure, just to quote an example, meets.
You can take an instance where you can put the 3 services together or you can hire the separate services (usually it is much more expensive).
This site, for example, which is an example of high volume site has its own servers and organize its structure according to your need, they only use a second datacenter As a mirror of the regular structure, they do not separate each service in a different lodging. They separate services on different servers because this is one of the most accessed websites in the world.
Is your need similar to Stackoverflow’s? If not, go for the simple. Go for what you’re used to. Only create complexity in the system when the need arises.
Some sites have multiple servers, so much so that each time period ip ping changes. example google.
– Brumazzi DB
Yes, but I meant specifically in this case. Where I will keep SQL Server in one, Redis in another and the application in another.
– user44231
in this case I think would lose performasse, it is much faster the site collect the content from the server itself than from another, and as you want to use 3 servers, it would increase 2 requests for the user to be able to access the content of the page. In my opinion, this is not at all feasible in this case.
– Brumazzi DB
It’s no big deal. The problem you can have is the cost. If it used technologies that could be harnessed in a single environment, it could dramatically reduce costs and simplify everything on a single server. But this all also depends on the expected volume of traffic. If it is a high volume, it is better to keep the way you are doing, on separate servers and then increase with mirrors/load balance, etc. In short, the point you should worry more about is the volume of traffic. If you always have a low volume, it doesn’t make up for the whole structure. You’d be throwing money down the drain.
– Daniel Omine
@Brumazzid.B. In this case there is no loss of performance, on the contrary. It is common to have servers with "load balancing" where they point to different servers, replications, etc. It would not increase the requests, they will be made the same way, what changes is the way.
– Randrade
One important thing to consider is that it is recommended for large applications or scalability is to have DB on different MACHINE. Only you can not confuse this with DB in different NET. In different network, the loss may not compensate for the supposed better performance of DB. Especially if the network is the internet itself. Besides, who accesses the DB is the application server, and not the client. So there’s no advantage to the parallelism that you hear about when you use a CDN for images and JS, for example.
– Bacco