Briefing: ScaleOut StateServer
starting at $2,985 for three servers
Let's review. ASP.NET offers you three alternatives for storing session state
(that is, the unique information about each concurrent user of your Web site).
First, there's in-proc storage, where state is simply kept in memory and managed
by ASP.NET. This is fast and reliable - but it won't work when your site grows
enough to move to a web farm. There's no way for one server to see state stored
on another, so once you're round-robin serving responses from several
machines, you need to change your plans. The second alternative is to use SQL
Server to store session state. This gives you reliable transacted storage, but
the license costs can eat you up and failover between multiple servers is
difficult to achieve. Finally, Microsoft ships a service called State Server
with ASP.NET, which offers shared in-memory storage as a Windows service. This
is also workable for Web farms, but requires you to depend on what is
essentially version 1.0 technology from Microsoft. State Server also offers
a single point of failure: you run it on one server and all of the servers
in the farm store information there.
ScaleOut Software has spotted a market opportunity here and jumped on it.
Their new StateServer product takes the basic idea of Microsoft's State Server
and improves it vastly. StateServer puts session state in memory (just like
in-proc storage), but then it shares the state among multiple servers on your
farm. Essentially, you install StateServer on each box and the various instances
set up their own mini-network behind the scenes to share and protect the state
StateServer uses some novel replication technology to keep state distributed
around while still providing every server in the Web farm access to all of the
data. Every bit of state is authoritatively stored somewhere, but the
StateServer network keeps multiple backup copies. If a server fails, one of the
backup copies gets promoted to be authoritative, and another backup gets made.
You can configure the timeout that leads to this process, so that minor bobbles
in network availability don't result in needless work replicating objects. On
the other hand, if you plug a new server into your Web farm and bring up the
StateServer service, it will discover the rest of the network and start
participating without you needing to do anything.
So, here's what it boils down to: if your application uses session state, and
you'd like the peace of mind of knowing that you've got fast, reliable storage
to hold it (even when you take servers offline for administrative work or
rolling upgrades), you ought to take a look at this product. To get started, you
can hook up with a 30-day evaluation from the company's own Web site.
Mike Gunderloy has been developing software for a quarter-century now, and writing about it for nearly as long. He walked away from a .NET development career in 2006 and has been a happy Rails user ever since. Mike blogs at A Fresh Cup.