One of the tricky parts about building and launching a Web Application is hosting. It is one thing to test out your creation with 200 or 300 users, but if you turn it loose and suddenly find yourself with a runaway hit and are adding 1,000 or even 100,000 users per hour what are you going to do?
There are two parts to your solution – how your application is built (apparently this is at the heart of Twitter’s current problems) and how much horsepower is behind it.
While I don’t have a general solution for your architecture problems (although I am available, on consulting, to help you find specific solutions) I do have an answer for your horsepower problems: Cloud computing (also called grid and utility computing).
There are now a number of hosting providers that offer cloud-type delivery platforms that can be expanded and contracted on demand rather than the traditional method of adding horsepower which required you to make a support request and then wait until a technician could get around to provisioning or de-provisioning your services.
A new entrant in this market is GoGrid, currently in its Public Beta phase. I’ve tested the service and what GoGrid claims is true – you can provision a server in less than five minutes. A few minutes more and you can have more servers as well as load balancers and databases.
Of course after you’ve provisioned a server in five minutes you’ll have to set it up, which will take you some amount of time including the time required to read the documentation. With GoGrid if you don’t read the documentation you’ll find yourself in situations such as at the Windows Firewall configuration page trying to figure out which connection is for the Internet (three network connections are configured by default and apart from a numeric suffix are all named identically).
GoGrid’s Web-based user interface is relatively simple: You start on the Grid page, which shows a menu on the left side containing a Billing Summary Widget and a Network widget. The main panel has a large plus sign on the left – click on it and you can select to add a load balancer, a Web and Application server, or a database.
The current system gets a little ‘clunky’ here: To configure the component you are adding you need to provide an Internet address and an internal IP address. These are listed in the Network widget, but that gets grayed out when you are setting up a component. If you click on the widget so that you can view the available addresses (the widget’s real estate isn’t big enough to show all of the addresses at the same time) then configuring the component is abandoned. This should be fixed in a release coming out this week.
As you add components to your grid they are shown as icons with load balancers in one column, Web/App servers in the next, and database servers in the last. A weakness in the system design is that once you’ve configured a server you can’t go back and reconfigure it.
This leads to another weakness: The display doesn’t show you which component is connected to which component and as you can’t open the configuration of a component you’d have to use RDP or SSH to visit the servers to figure out how the set up is interconnected. Of course you can’t do that with the load balancers as they have no user interface so all you can do is delete and recreate them if you need to make changes.
Servers are created with a memory allocation that also determines the disk space available (a planned enhancement will be the ability to add storage). So, a 0.5GB RAM server has 30GB of storage, a 1GB server has 60GB, and a 2GB has 125GB of storage.
Once you’ve create a server (either a Web/App or database) the meter is running – one pricing plan for on-demand GoGrid service is 19 cents per gigabyte of memory per hour (RAM GB hours).
Another issue that I think is problematic is that you can’t ‘turn off’ or suspend a server so as to not spend money – all you can do is delete it and as you can’t clone an existing server expanding your service takes longer than it might as you’ll have to create a server then RDP or SSH to it and copy the server setup from an external source or build it in place.
GoGrid also don’t provide any backup services so you’ll have to find your own solution and there’s no performance management or monitoring available yet.
Now the good stuff. It works! Despite my criticisms, GoGrid is very easy to expand and contract as needed and there’s a choice of operating systems to use (Windows as well as several Linux distros with different services configurations). Add to that 24/7 support and GoGrid is a very interesting platform for a variety of markets.
GoGrid has plans to enhance and fix many of the issues that I’ve covered over the next few months (it discusses these issues publicly on its wiki). There will also be an API that will allow you to perform any set up creation or configuration action that you can do through the Web interface.
Pricing is reasonable particularly in light of the flexible sizing ability. The on-demand pricing is, as I noted, 19 cents per RAM GB hour and the cost for outbound data is 50 cents per GB (there’s no charge in any plan for incoming data).
GoGrid also offers prepaid plans – for example, the Business Grid plan costs $99.99 per month for 800 RAM GB hours (overages are charged at 18 cents per RAM GB hour) and 200GB of data costs $49.99 per month (the overage charge is 35 cents per GB).
I suspect that GoGrid will appeal primarily to SMBs and small enterprises as well as Web applications developers looking for a startup platform. Finally, the addition of the API should lead GoGrid into some interesting opportunities particularly with resellers and IT departments.
GoGrid is somewhat ahead of the market with this service – maybe six months at present – and if it can get all its enhancements and improvements in place on the schedule it has discussed then GoGrid could become a market leader.