• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 223
  • Last Modified:

Shared Server Hosting to Mimic Client-Server Environment at Home??

I develop at home.  I'm just starting to build client server applications with a VB.Net front end on the desktop and a MS SQL Server back end on the server.  I have read that it is much better to push as much processing to the server as possible.  I'd like to see what kind of results I am having from doing that, but it's just me and the laptop right now.  Would paying for shared server hosting achieve what I'm looking for & is it affordable?  I would think there would be a lot of factors involved in how closely it would mimic potential user environments - the server equipment they are using, the amount of traffic on the server, etc.  Do you all have any suggestions for vendors?  Anything I should be considering?
  • 3
  • 2
3 Solutions
So the point is, if you use your isolated environment, you may not notice any large difference between server and client side cursors. As slower the connection is, as large the difference between several method.

A common corp net is more loaded as your private connection. Means an application, which runs in your enviroment performs good for you, but not in a real corp environment. On the other side, with public storages and servers, you have no chance to really see, what is going onto the server machine. it may be your application, but can have a lot of other issues.

The most reliable way is to use stress tools on your server, which simulates a preset server load or produces net traffic. This way, you can see, how your applications performs under differnet conditions.

Performance issues may not only determined by the cursor type (server based / cleint based) as the cleint is able to cache tables in its own RAM. It depends really from the kind of data your cleint requests. A cleint cursor maybe slower during the initial load, but maybe faster during subsequent queries as chaching is possible, especially under server load.
But stressing the server gives you an idea, if you can just solve performance issues by the cursor type of if you have to think about your query construction or the technique, how to retrieve data from the server in gernal. I.e for slower connections or high network load, it may be a bigger performance gain to split a queries into several subqueries to reduce the data amount per request.
humbleamateurAuthor Commented:
Thanks for replying!  I really appreciate it.
I guess I'm hearing there are a few factors:
- the power of the server;
- the utilization of the server;
- the connection (bandwidth) at the server;
- the traffic over the server's connection;
- the connection (bandwidth) at my laptop.
I believe you said I could not stress test a shared server?  Therefore, I would not be able to simulate the environment of a customer with a share of a hosted server?  Did I understand that correctly?
So, are you saying the only way to simulate it would be to buy my own server & stress test it?  That would probably be too expensive.
Does that mean there is no cost effective way for a developer to test the performance of a client-server application?  That doesn't seem right....  
Let me know if I understood all of that correctly.
I guess I'm hearing...

> I could not stress test a shared server...
Usually not, with the exception of a root server, where you be able to run your own application and tools. Or a kindly provider, which support you a little bit with tools or some anylysis.

Example: SQL server has an program called profiler, which allows you to make a deep analysis on queries and actions. Every step is logged with a lot of load values. This can help you to find out, where possible bottlenecks are. If you do not have access to such tools, you can only measure the subjective performance of your application. Of course, setting time points (measuring the time a method needs), you are able to find out, if one method is faster than another. But this is more try and error, nevertheless this can work arround.
Using server based tools, it is easier, as you see both sides, the server and the clients. And this makes it easier to find a reason, why a method performs poor or not.

> Therefore, I would not be able to simulate...
You can use a hosted system for functional testing of course, why not. For load / performance testing, you should have an environment, which fits as far as possible to your customers.
As I said before, you can work a little bit around by measurement of response times. Always assumed, that no other issues are happening on the server.

Hosted systems are often virtual machines, which may loaded by other customers. Also they are using shared resources like memory and disk space. If you make any measurement on this machine, you never can be sure, if it is your application, which runs bad or any other customer is stressing the server. Dependend on the available memory, there may be larger performance differences.  

I do not want to say, that you can not use hosted systems, but you should always keep in mind how hosted systems are working and what else may happening. Means to get a really reliable measurement, you have to test your application more often at several times to make a final decision to use the one or the other method.

> That would probably be too expensive...
Need not to be. SQL server in the developer version can be installed on a client system. Also as a developer you may register with MS Action Pack, it costs about 450 USD and you get everything you need.  Most of the server applications and most of the clients. Not for production use of course, only for development.
humbleamateurAuthor Commented:
Cool.  Thanks!
Sorry for not getting everything the first time - just a question on the last paragraph - which of these do you mean you say "client" system?  
- Potential customer's system? - that won't work, b/c I'm developing at home and have no customers;  
- Client hardware, aka a laptop? - don't think this would work.  If my goal is to see the impact of moving processing onto the more powerful server, how would a much less powerful laptop acting as a server suffice?
I may have missed it in one of your comments, but it is looking to me like there is no way to achieve what I want.  That just doesn't make sense though, because isn't the speed of software one of the chief concerns of all involved?
last paragraph = action pack?
The action pack is a collection of software for developers for a very low price.

I assumed, that you develop applications for any customer or that you want to sell your software in any way. So, most of the things I said was under this assumption.

You talked about SQL Server. I assumed you have the database on SQL Server (wherever it is) = server, and a client program on any other machine (i.e. a PC or Laptop) which uses this data = client (= software + hardware). If your software will directly run onto the SQL server itself (like a web application) , all taks are done on the same machine. In that case, your local PC does not care.

If the client program is used only by yourself, means you develop the software only for your own usage, then the only criteria for you is your personal feeling, that you application works fast enough for your needs. Only if you feel, that you application performs poor, you would have to do some speed tuning. The only thing you should keep in mind is, that internet connections have a limited bandwith, so you should take care about the amout of data, you will send via this slow connection.

Server side performance tuning will only be a real issue, if your software is used with a larger amounts of clients, which are using the server at the same time. Or if you want to work which a very large database. Otherwise it is not quite easy to bring a server realy to its limits over an internet connection, what yould be the bottleneck.

Hope I hit your last question...


Featured Post

Transaction-level recovery for Oracle database

Veeam Explore for Oracle delivers low RTOs and RPOs with agentless transaction log backup and transaction-level recovery of Oracle databases. You can restore the database to a precise point in time, even to a specific transaction.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now