Considerations for Self Hosting

We had a forum question on considerations for self hosting. Let me share my thoughts with the community on this subject. I hope others share their thoughts and questions as well.


First, I always applaud a planning strategy. You have all of the key indicators listed below. Let's discuss why each are important and how they play together. I will make a very large assumption that you understand disaster recovery policies and procedures and how to best backup/restore databases, websites, and all of the cool DNS stuff that goes along with it.


My list of self-hosting priorities:

1) Bandwidth (speed and type)

2) Your internet provider

3) OS choice/version

4) SQL choice/version

5) Disk speed/size/configuration

6) RAM

7) CPU

8) Internal Network


My list explained...

1) Bandwidth: I will start with a simple analogy we all are familiar with, traffic. Bandwidth is like that. Customers that host don't realize the importance of bandwidth and how you can't cheat math. No matter how fast or powerful you make the car, a two lane highway can only process so much traffic to and from the city. You should purchase your internet provider choice on ability to scale bandwidth to meet your highest need. The speed numbers you provided... are they guaranteed bandwidth? DSL/T1/T3 are all dedicated lines that will always assure you have the bandwidth you have planned for. Cable internet providers give a minimum service level, but have the ability to burst to much higher levels.


2) Your Internet provider: Most people miss this one when planning to host them selves. I had a customer in New York state, just outside NYC that hosted his website and RDP connections himself. At times, the site and app ran fine, but at other times he had a HORRIBLE time maintaining a connection worthy production. We ran a speed test from his server to the internet using and the numbers where "as advertised" by his internet provider. Puzzling. The server was not at all stressed, the internet connection was showing good numbers... what was the deal. I then ran an old school tracert command to our servers, which at the time where in LA. There were more than 10 hops before the connection reached a better tier internet provider. I asked who his provider was, to find out it was a local computer store who was a reseller for another local internet provider... All of them add 'hops' and latency to the routing. Two of the providers had older antiquated hardware. The moral of the story, go with a nationwide provider and run some tests before you sign up. Although I am excited about where wireless technologies are going, a very large percentage don't make amazing dedicated service providers for production sites. I can rant on this one for paragraphs, but the consideration is amazingly important. Your provider proving he has a fast connection from your server room to his provided service is a start. I challenge you to test, try, trace, track before you commit to local hosting.


3) OS Choice: This will be quick. Each version of Windows Server is better than the previous. IIS, the free internet based service that runs inside of Windows also changes (for the better) from version to version. I have run production websites since late 1990's and I choose to stay current on the OS's that run my sites. The features, the stability, the scalability, it's all worth the small learning curve. Also, older OS's sometimes do not run current/required technologies and platforms. Test and stay current.


4) SQL Choice/Version: You may be wondering why this is important at this juncture. You made a choice to use SQL 2008 Express R2. I can't say enough good things about the robustness and stability of SQL Server. The only hitch here is SQL Server Express was designed to only use one core, and 1 GB of RAM regardless of what is available at the hardware level. There are several sites out there that compare not only hardware, but feature sets of each version. You check out this MSDN site for starters. So please note, regardless of what we discuss in items 5-7, SQL Express will limit fully utilizing the resources you have.


5) Disk: I will discount the size of the hard disk as a consideration. As mentioned in #4 above, SQL Express can only use 10 GB of the 1 TB you have available. That being said, Interprise will grow to serveral GB over the course of many years. The largest I have seen in production (5+ years) is 30+ GB. The company had hundreds of thousands of SKU's, customers, etc... What is important is the speed of disk(s) and do you use a RAID configuration (if so, hardware or software). We all know RAM is where the speed is at. The sooner you can get information off of disk and into RAM the faster the performance of the applications consuming data (IIS and Interprise). But as important of a consideration is the resiliency and stability of your disk setup. If you have one point of failure (single disk) your run the risk of your company website coming down. If you have proper RAID configured disks you allow for one or more failure points with your system continuing to run with some level of performance degradation.


6) RAM: Depending on your network architecture (is IIS/SQL on the same server or on different servers connected thru a high speed 1GB+ connection) you will configure SQL Server to use a limited amount of RAM. As per #4 above, the 16 GB of RAM is more than ample with the current SQL Server choice. If you choose one of the paid for SQL editions and you are using one server to do all things, make sure you set the max memory usage to a fixed number... leave room for IIS and OS to run. I like the formula [total ram - 4], or in your case cap SQL Server at 12 GB. If Interprise is the only db you are running it's a moot point as the db just isn't that large.


7) CPU: As per #4, SQL Server Express will only use one core (not one CPU). In your case you have 8 cores available of which SQL Express will use one of the eight cores. You would think the logical push on my side is to push you to an upgrade of SQL Server but don't hesitate to try it before you get a 30 day eval... Run benchmark tests with SQL Express and see what kind of performance you are getting from your site... IIS and SQL Server are fantastic products and are amazingly optimized. It may just work for you.


8) Internal LAN: As you can see by now the software/hardware technologies chosen carry much more weight in the decision tree of self hosting. 1 GB is a great place to be for an internal network. Make sure all points between servers (hubs, switches, routers) are capable and configured to handle the same throughput.


I have a few other local blog articles you may want to read up on...


I hope this all helps.


Curt Rice B)

VP of Technical Services

Interprise Software Solutions, Inc.

Schedule A Consultation Today

Is Connected Business a good fit for your business?
Schedule a call with one of our team members to learn more about Connected Business.