“Olympia”
is a new server product introduced to RemObjects SDK with the “Summer 2009”
release, that makes it easy for you to build scalable server farms servers, where
multiple instances of the server application run on different machines across the
company LAN (or, indeed, the Internet), and yet share client session data, allowing
client applications to seamlessly connect to any randomly available server.
Background
One cornerstone of scalability is the ability of server applications to grow beyond a single server instance, in order to accommodate for increased client traffic that exceeds what a single server machine can physically handle.
Designing applications with statelessness in mind and storing as little client-specific data in service instances as possible is a good starting point for building services that can scale up (i.e. accommodate increasing client load within a single server instance) and scale out (i.e. spread further increasing load out across multiple servers). But at the same time, many applications rely on at least a minimum of client state to be known, be it in the simplest case to merely authenticate users, or to provide more complex client-server interaction, such as Push Events.
RemObjects SDK's session management infrastructure has always made it easy to maintain client information while allowing service implementations to remain scalable, but most provided session managers were confined to a single server instance, or required manual setup of a shared database to store client state.
“Olympia” solves this problem by providing a dedicated and ready-made server application that can store shared session data and push events for a variety of separate RemObjects SDK server applications. Simply installing an instance of Olympia on your server farm (be it on the same system as one of your servers, or on a dedicated machine) will allow all servers on the network to share client state, and maintain a central repository for client events. Clients can communicate with any of the servers - be it though round-robin load balancing, or more sophisticated load distribution mechanisms - and their session data will seamlessly be available.
Architecture
Shipping as pre-compiled server executable with all editions of RemObjects SDK, Olympia can be deployed along with .NET and Delphi servers alike, and runs on Windows (requiring .NET 3.5 or Mono 2.0), as well as Linux and Mac OS X (requiring Mono 2.0).
A single Olympia instance can maintain shared state for many RemObjects SDK servers, be they separate instances of the same server applications, or different and unrelated servers.
Because Olympia is internally built upon Data Abstract for .NET, it can use the full power and flexibility of Data Abstract and its schemas to talk to any database you choose; however, it comes pre-configured to use internal SQLite based storage in order to run out of the box with zero setup and configuration necessary.
Olympia also leverages the new ROZeroConf support in RemObjects SDK, allowing server applications to automatically locate Olympia instances on the network and seamlessly connect to them without configuration, if so desired.
Olympia Futures
In its initial release, Olympia will run as a single, dedicated server instance, sharing session data for all RemObjects SDK servers that connect to it. While this should provide reasonable scale-out ability for dozens of servers, the design of Olympia leaves room for future versions to expand on this and allow multiple Olympia instances to collaborate to provide shared data for an even larger number of front-end servers. By designing services for Olympia now, your server applications will automatically be able to leverage these future advances, once they become available.