Many companies are discovering that just because you can add more machines to solve a problem doesn’t mean you won’t create an even larger problem. You still have to manage the platform you’ve created with all these boxes, and that’s a much more difficult task than it first appears.
Most companies I’ve dealt with “solve” the problem by getting the PCs off the floor and into racks in their data center. At least then it doesn’t LOOK like there are a bunch of PCs lying around the data center. But it doesn’t solve the fundamental problem of having tens—or, in some case, hundreds—of PCs running disparate systems that require their own management systems, troubleshooting methods, provisioning software, and so on. Their software management systems consist of “Web monkeys”—the entry level engineers that would otherwise be pulling cable, but now sit in operations and watch monitors and machines for signs of trouble.
In this article, we’ll examine the software side of the application hosting issue, focusing on five specific problems with the software scalability model and four tools you’ll need to manage your software effectively.
This is the third installment in a series of articles discussing the creation and management of hosted environments on microcomputer platforms. In the first article, “Hosting: What is it and why should CIOs care?,” we discussed the reasons that Application Hosting Providers and some enlightened companies would be creating hosted platforms. Last week, in “Building a scalable network,” we looked at issues surrounding the hardware scalability of hosted platforms.
What’s the problem we’re trying to solve?
The ability to scale systems with hardware has natural barriers that we have yet to overcome. Large ISPs and many corporations have proven that the software scalability model can allow large numbers of users to be supported on a cheap, scalable, highly reliable platform of networked PCs. These environments have five common problems that have to be overcome. These problems include:
- Being too spread out. Since applications are composed of many different components (HTML files, ASP files, COM components, PERL scripts, graphics files, and so on.) spread across multiple machines, the applications are very difficult to manage in this environment.
- Efficient replication. Effective scaling of the application requires that these application components can be replicated intelligently to a group of servers.
- Multiple location application development. Assuming you can handle the distribution of the application’s core components, the application still has to be developed in such a way that it works effectively when running in multiple locations. Most developers still assume that an application is running entirely in one box during their development and testing. This has huge implications when the application gets deployed in a distributed environment for the first time and problems like state maintenance begin to surface.
- Monitoring limitations. The fourth major issue is the difficulty in monitoring the applications proactively. In order for these applications to be considered robust enough to be mission critical, we have to be able to manage them proactively. This is easier to do in a single machine/single application where you can monitor performance metrics like CPU and memory utilization for that one application. Once you add multiple applications to one machine or spread an application across multiple machines, you need an effective way of predicting the application’s ability to execute successfully in the environment.
- Testing applications designed to scale. Not only do you need to test the application’s components and their interactions, but you also need a way to simulate the user’s experience. Unless you can tightly define the user platform, you need to be able to test varying client platforms (versions of Windows, Web Browsers, Terminal Server clients) under differing speeds and authentication scenarios (56K modem, DSL or T1 authenticating via a private network or public internet scenario). You may have to test a huge number of permutations in order to verify that your application can work in this distributed environment.
So what should I be looking for?
In order to develop, deploy and manage applications with Web scale, you need to develop or purchase tools and technologies that can accomplish the following:
Single application image
The goal here is to be able to manage the deployment of Web applications as transparent as the management of traditional, single machine PC applications. It wasn’t that long ago that we had to develop our own application installation routines for these PC applications. Until software manufacturers re-tool their products or release new ones that can effectively manage distributed software deployment, many companies will be faced with developing their own internal solutions.
Server farm management
A good server farm management solution will allow you to create initial farms of servers simply and then add or drop servers as needed to achieve fairly linear scalability with standard hardware.
Application load balancing
Being able to deploy on multiple servers doesn’t help much if you’re not able to optimize the resources on the platform. Dynamic load balancing allows an application to run in multiple instances across multiple machines with the platform managing the complexity of issues like security, state, machine availability, and so on.
In order to trust this platform for mission critical applications, you need to be able to provide a mechanism for telling the platform to heal, tune, and monitor itself with little external “Web monkey” intervention. As more applications and systems are added to the platform, you will quickly reach the point where human intervention to solve platform problems becomes the new bottleneck to effective application deployment.
Most of us don’t have the luxury of implementing these systems in a vacuum. We need to be able to interoperate intelligently with our existing systems and be positioned to provide data from this platform to and from future systems. Next week, we’ll look at the interoperability issues surrounding a software scalable platform. We’ll also discuss what you should begin considering as you look at this technology to solve your own application problems either internally or with the help of an Application Services Provider.
Tim Landgrave is the founder and CEO of eAdvantage. eAdvantage assists small to medium enterprises in the development of their electronic business strategy.Tell us what you think about application hosting by posting a comment below. If you have a story idea you’d like to share, please drop us a note .