DevelopmentNow Blog
 Monday, May 19, 2008

I called a popular hosting provider today to talk with them about getting a client's server order straightened out, as my client wasn't able to make progress on a few issues. However, the account was set up in my client's name only, which made the provider reluctant to assist me. I can understand that from a security standpoint, they can't hand out information on the phone to just anyone, but still, the account rep sounded like I was wasting his time and couldn't wait to get off the phone.

(FYI the account was set up in the client's name so that they bill the client, not me.)

So here are some tips:

Tip for developers: When your client gets web hosting, make sure that you are listed as the technical contact (or a secondary technical contact), and that your client is listed as the administration & billing contact. This may require you being on the phone while the client places the order, or perhaps they can email server specs (provided by you) to the sales rep. Or I guess you could set up the order & then have the sales rep contact your client to switch the billing from you to them.

Tip for hosting providers: If a new client's webmaster calls about an order, treat them like a new customer, not some prank caller.

 

May 19, 2008    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Friday, July 27, 2007

I just noticed on Mosso's FAQ that they now support .NET 2.0 & .NET 3.0. That's good news, since when I looked at them before they only supported ASP.NET 1.1.

FYI Mosso is a hosting provider targeted towards designers & developers that want to resell hosting to their clients. They're interesting in a few ways. First off, they offer "True Hybrid" technology, allowing you to run PHP and ASP.NET sites from the same set of files. So you can FTP some PHP files and some ASP.NET files into the same directory on your account, and they'll both work (they can't talk to each other, though). They also offer 24/7 support & automated billing services that you can resell for your clients.

IMO their hosting offering is a bit pricey -- $100/mo, which could get you a few VPSes at other hosts. But again, they're hoping that their billing, support, PHP/ASP.NET hybrid servers, and turnkey process will win them some business. I know from experience that sometimes saving $20-50/month ends up costing you far more than that in lost time. So, we'll see.

BTW I am not a current Mosso customer -- I just think their offering is unique & interesting. :)

July 27, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Saturday, June 02, 2007

The A-lister for dedicated servers is Rackspace, a managed hosting provider I'm always happy to recommend. Great support & service. The one "downside" is that their price reflects their quality.

For cheaper dedicated boxes, you have to sift through hundreds of hosting companies and try to find ones who meet your needs, aren't going to screw up, and support you to the level needed. Sometimes you don't need a lot of support or uptime, and so you can get away with a cheaper box. I read some good things about ServerBeach and LayeredTech -- they seem to be a popular choice for inexpensive dedicated machines.

June 2, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Wednesday, May 30, 2007

VPS Hunt

I've been looking into VPS hosting a bit more and found a few well-recommended providers:

ServInt especially seems to get a lot of kudos, but I know MediaTemple is very popular with the designer crowd. And by looking at my site you know I'm a developer not a designer. ;) A designer friend of mine uses and likes RimuHosting a lot.

GoDaddy Virtual Dedicated Server

Personally, I have months of hands-on experience with GoDaddy's VPS offering, which is pretty inexpensive, and clients have heard of them (or at least seen their SuperBowl commercials). Price is good, performance is ok (not great), but it's a very no-frills offering, and you have to be prepared to administer the server and manage backups yourself. Most of their VPSes are Linux, so you'll be using the shell a lot, but they also offer a Windows 2003 VPS with 10GB of space starting around $40/mo, so you can Remote Desktop into that.

You can pay for better control panels, managed backup, etc., but then the price starts to get into the $60-$100+/mo range, at which point you may want to look at one of the above VPS providers instead.

I also don't know whether they offer any kind of quick upgrade path, in case your site suddenly gets popular and you need to move your VPS to a big dedicated box pronto. I kinda doubt it.

Rolling Stones Gather No ... Mosso?

Other than VPSes, I was also intrigued by Mosso's offering -- hybrid hosting allowing you to run PHP and ASP/ASP.NET sites in the same set of files. However, I don't really care so much about running PHP & ASP side-by-side, since if I really have that kind of blend I might just get two VPSes (one LAMP, one Windows). I was more interested in their focus on making it easier for development companies to provide turnkey hosting and 24x7 tech support services for their clients.

However, they don't support ASP.NET 2.0, which for me is a dealbreaker -- I'd be doing my clients a disservice if I didn't give them the opportunity to upgrade ASP.NET 1.1 sites to 2.0 -- development is faster & easier, features are better, and performance is greater. Plus I have several .NET 2.0 sites already.

 

May 30, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Sunday, May 20, 2007

I was writing on a Startupping thread about scalability and figured I could reproduce some of what I wrote here. The topic was about planning and dealing with having to scale web sites as traffic increases. I pasted on some of my responses & added some headings that give a frame of reference to what I'm babbling about. Again, the below is personal experience and opinion, and there's a lot of information on the web to supplement (and I'm sure in some cases contradict) what I refer to, below.

Planning to Scale

In my previous life at a big dot-com, we actually started thinking about multiple servers right away, in order to provide uptime/redundancy & zero-downtime code deployment. We learned along the way, did a lot of research, and/or hired good people with experience. It's always good to have good people. We also hired a few specialty consultants for a few hours of suggestions, and worked with hosting providers who had other big clients, so that we could benefit from their experience.

We started out using software load balancing, moved to hardware load balancers, & eventually to round robin DNS between two large server farms (which had their own hardware load balancers, redundant everything, etc).

We had issues with scaling whenever we hit a specific wall, e.g. when we hit bandwidth & server limits for routers, firewalls, & data centers. We had issues when we hit certain technology limits. We also had issues if we got slashdotted, but that happens. One year we were unexpectedly linked to by a very large, prominent ad on the home page of a top 5 site, so our traffic levels went through the roof, we all got called at 4am, and we stayed pretty busy ensuring things kept running.

A few things we did

  • We used a managed hosting provider who could prep & deliver new servers quickly, to help us with scaling quickly. Managed hosting also meant the provider could help out with monitoring, troubleshooting, setup, and solving problems. So e.g. if you lose a PSU at 2am, you don't have to drive down to a colo and swap it out.
  • We did regular load & performance testing so we knew how many servers we'd need for certain traffic levels. We also did profiling to pinpoint bottlenecks, optimize certain parts of the site, etc.
  • We worked closely with our marketing team, so that we knew about upcoming media blitzes. We kept alerts on blogs & news sites to watch for links, & we kept an eye on our traffic.
  • We had monitors on our servers, so that if traffic/bandwidth/cpu started climbing unexpectedly high, we were alerted & could react before it was too late.
  • We looked at our traffic history so that we knew what times, days, & seasons were popular for our site.
  • We designed our software for easy deployment & replication, & streamlined our server setup process so that once a new server was ready, we could add it into the farm quickly.
  • We consciously built out our site to handle a certain load level, e.g. 3x last year's peak or whatever (3x is a made up example). You obviously need to handle spikes, but being ready & able to handle an "infinite" level of traffic isn't cost-effective, especially when you're young & trying to spend wisely.
  • We planned for & expected scalability & multiple boxes right away.
  • We had remote access to servers, reports, & monitoring tools, so that if a crisis occurred in the off hours, we could contact staff & not wait for them to get into the office.
  • We had names, functions, & phone numbers of key staff printed up on a laminated card (business card size) & given out to a number of staff, so that people could quickly contact others in case of an emergency.
  • We bought staff donuts or pizza or food. It was a cheap way to say thank you & made them feel appreciated & more willing to not complain (too much) when getting calls in the wee hours.

In hindsight, maybe we could have gotten away with spending less time thinking about scalability (or maybe not), but that would have increased our risk of disaster/embarrassment/etc, and potentially made for more painful & frequent firefighting. So there's the tradeoff. Just like other things in business, you can spent extra time and money up front to be more prepared for business growth, or you can wait until later and possibly pay more and feel more pain.

How do you know what load your site should handle? Should it be 3x last year's peak?

There's no magic number. We typically used 2x previous peak as a starting point only, and worked from there based on various factors. We put a good amount of thought into measuring our server performance and determining the traffic we expected and/or wanted to be able to handle, because it translated directly into how many servers we rented and thus how much money we spent on hardware. The load/server number really depends on your budget, your expected growth (including what your marketing team has up their sleeve), your risk/downtime tolerance (including SLAs or clients you have to maintain), and how fast you can scale. I mean, if you started out very small last year, and your marketing department is going to buy a superbowl ad this year, your traffic is going to be 100x last year's mark, not 3x.

So since capacity costs money (and unused capacity gets noticed), you have to plan it out a bit. If you just follow the rule of thumb and buy/rent enough equipment for twice last year's peak (or whatever), then that means most of the time your web servers are running at 1-15% capacity. And unless you have a lot of money, that means you might have management or investors asking you "hey, how come we spend so much money on servers when they're only running at 10%?" We mitigated that issue somewhat by having some servers keep busy performing "non-essential" functions (internal reports, data crunching, load testing, QA, etc) that could be curtailed during a crisis where we need every drop of CPU.

The whole "running at 10% cpu 90% of the time" issue one reason why expandable services like CDNs (content delivery networks), S3, & EC2 are intriguing, b/c in theory they allow you to scale some aspects of your service on demand without having a lot of extra horsepower & bandwidth sitting around unused. Or why VPSes are kinda interesting since you can potentially do some really quick deployments.

Another thing we planned from early on -- we planned to have our images & static files (css, js, etc) running on a separate domain, which allowed us to serve up static files using CDNs or other sources of cheap, fast bandwidth. That also helped us not max out router/datacenter bandwidth (at least not for a while), since images/css/etc are often a large portion of your outbound bandwidth.

Any must-have tools for performance analysis and dealing with traffic?

We were on a Windows platform, so it was tools like Web Application Stress Tool, LoadRunner, and Visual Studio Enterprise Architect's stress/load tool, among others. And of course you'll also want some sort of web analytics package (AWStats, google analystics, webtrends, etc) to tell you what typical user behavior is, what your most popular pages are, etc. Because your tests should mirror typical user behavior if possible. You'll also need performance monitoring tools like PerfMon, etc, so you can see how your servers perform under various loads. So you figure out the page activity levels for a given number of users, max requests per second, max/avg response time, cpu load, how high cpu/ram/disk can go before your performance & user experience starts to drop. There may be better/other tools today, and I don't know what platform you're targeting, but those can get you started. I think it's ok to start with simple tools. We used Excel a good amount, too, to map, graph, and view performance test data.

For monitoring, we used the tools that our hosting provider had (we had managed hosting), but we also had a simple script that ran every X minutes, tried downloading a page, tried executing a database query, checked cpu/ram/etc, & blasted out an email if things seemed wrong. We also wrote our web site to log errors & send out emails if for example, database queries were timing out, or if code started getting bad errors like "out of memory". There are also a number of third party apps & sites that can monitor your site or servers every X minutes & send you alerts -- some will check your serevrs remotely (e.g. Gomez, Webmetrics), while others can install on your servers. I can't think of any installed apps offhand to recommend, but I'm sure you can find something workable w/ some research.

When you start having scaling issues, does your staff spend all their time on scaling instead of development?

If you don't hire any additional staff & don't outsource any work, then yes, as your site gets bigger and your company grows, there's going to be more work to do, and your initial team will probably be spending more time on support/scalability/firefighting/misc tasks.

For us, as the site got more popular, more time needed to be spent on performance/scalability/uptime issues. But we still had features to develop. So we hired more people to keep up with increasing workload.

A supplementary route would be to go with a higher-level hosting provider (e.g. Rackspace) & pay them to help you scale out, and/or hire short term scalability consultants who can give you suggestions, etc. If your app can already scale horizontally, that helps, b/c then you have the luxury of having a choice: either spend time making your app faster, or money buying new servers. Or both.

Another suggestion: if you're starting out very small & cheap, you could start with a VPS on a single server, since you can quickly move that VPS to a bigger/faster machine before you need to scale to multiple machines. Once you go multi-server, you may even want to stick w/ VPSes, since the additional ease of backups/migrations/deployment might make up for the performance hit. Since virtualization technology is getting better all the time, the performance impact of running VPSes is smaller than you'd think (e.g. Xen is supposedly only a 5% hit). 

How quickly you can scale make a big difference in terms of the time you spend on capacity planning and actually scaling your site. Akamai also has some neat stuff (although it can be expensive) that allows them to serve up dynamic pages on their CDN, which in turn reduces the load on your main servers & prevents you from having to set up extra servers as quickly. Think of it like a front-end cache/reverse proxy type thing. Other CDNs might have similar offerings. There are also accelerators (both hardware, or software like Squid) that do similar stuff, although setting up your own front-end cache w/ stuff like Squid means you're losing one of the big benefits of CDNs, namely that they do the scaling instead of you.

 

Hosting | Other | Web
May 20, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Tuesday, May 01, 2007

I've been doing some work with full-text searching in MySQL lately & came across a few solutions that could really use a wiki. So I wanted to recommend a free, hosted wiki solution, but the only one I've used is Wikispaces (which IME is slow & annoying). But I learned/read about a few others, so here's a short list of free, hosted wikis, in case your community needs a wiki, but you don't want to bother with installing/hosting one yourself:

There are many others, of course -- wikipedia has a big list of wikifarms showing which ones are free. The biggest risk in using a third party wiki IMO is that they have your data, and if it's a free plan and/or a small company, what guarantee do you have that your content won't go "poof" one day & disappear? Oddwiki (one place you can get a free wiki) even tells you

"Nothing is permanent. Use at your own risk. We plan to delete all wikis that were not edited in 180 days"

Heh. So, that's one reason I'd go with a bigger provider if you don't feel like installing your own wiki (which is pretty easy to do if you have a server you can install one on).

 

Hosting | Web
May 1, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Thursday, March 01, 2007

If you want a better administrative panel on your GoDaddy VDS/VPS, and you have PHP5 installed, you can install WebMin. SSH into your box using PuTTY.

First we want to install Perl's Net::SSL library, which allows Webmin to run under SSL. But first we need the OpenSSL source code:

su - root

cd /usr/local
wget http://www.openssl.org/source/openssl-0.9.7f.tar.gz
tar xvfz openssl-0.9.7f.tar.gz
mv openssl-0.9.7f openssl

Next we install perl's Net::SSL library via RPM:

wget ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/linux/extras/4/i386/perl-Net-SSLeay-1.26-3.fc4.i386.rpm
rpm -i perl-Net-SSLeay-1.26-3.fc4.i386.rpm

Now test to make sure Net:SSLeay works. When you run the below command you should get no response. If you get an error then it's not installed correctly:

perl -e 'use Net::SSLeay'
Ok, now we can download and install WebMin:

wget http://prdownloads.sourceforge.net/webadmin/webmin-1.330-1.noarch.rpm
rpm -U webmin-1.330-1.noarch.rpm

Now you can log into webmin at https://yourserver:10000. Log in under the same account as your PuTTY account.

Note the above assumes you're installing version 1.330 :)

Hosting | OS | Tools
March 1, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Sunday, January 21, 2007

A question came up recently on a mailing list I'm on about virtual machines for production applications. I've used virtual servers for web & database apps before, but only for dev/qa purposes. It made it much easier to go through deployment scenarios, try out new builds & roll back if the install failed, & generally avoid the time & money sink of dealing with setting up & maintaining actual physical machines. Plus virtual machines are easier to throw onto more powerful hosts as your needs grow.

However, if your organization is considering virtual machines for their production apps, they're in growing company. Most of my experience with production apps has been to start with traditional shared hosting plans, then move up to dedicated machines. That approach works especially well if you only have a few web apps that can all run on the same machines, or if your CPU needs are high.

However, using virtual machines (aka virtual servers or virtual private servers) can be a good way to save money if you have a number of heterogenous and/or legacy applications that need their own "server" (for security, configuration, manageability, specific OS requirements, or other reasons) but don't have very high horsepower needs. In that scenario, having a separate physical machine for each app can be costly overkill, and require you to answer repeated questions from your boss like "why did we need to buy and maintain 5 new servers when they're all under 10% utilization?" 

Instead, you can have each app on its own virtual server, and put them all on one or more physical machines -- however many are needed to run the apps effectively. Costs are reduced since you have fewer machines to power, watch, store, and maintain. Scaling applications can be simplified since you can allocate more or fewer resources to specific vitual servers, and you can always move them onto other, more powerful physical machines as your needs grow. Plus, disaster recovery can be easier, since if you have a hardware failure, you can just load the virtual server onto a different machine and keep on truckin'.

VMWare has some good info on their site: http://www.vmware.com/solutions/home.html

So does XenSource (Xen is open source virtualization software) http://www.xensource.com/solutions/ 

And I might as well link to MS Virtual Server, which apparently is free(?) :) http://www.microsoft.com/windowsserversystem/virtualserver/evaluation/vsoverview.mspx

Plus there are some other links around the web if you search on "virtual server" or "virtual private server."

Hardware | Hosting | OS | Other
January 21, 2007    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]



 Monday, November 20, 2006

I was reading about NewsHutch, yet another web-based RSS aggregator. Although it looks nice.

Anyhow, their blog post about looking for a new services yielded some suggestions on hosting plans. You can skim through the comments and see.

I've personally worked with Hostway and Rackspace in terms of hosting. Rackspace is expensive but has IMO great support and service. Hostway has a decent array of plans but I've had issues with their responsiveness.

Railsmachine seems interesting for RoR shops. SuperbServers seems like it has great prices (2gb Conroe with RAID for $200/mo) -- the question would be how good their service is. I guess at those prices maybe you just buy two web servers & load balance them. There were also a few kudos for ThePlanet, whose prices also seemed decent. 

If you're in the market for a dedicated server, I would highly suggest getting a RAID setup.

November 20, 2006    Bookmark to Digg or other social bookmarking
#    Disclaimer  |  Comments [0]