OSEE - Client/Server Overview

In order to be a scalable system, the Open System Engineering Environment (OSEE) has been slowly migrating into a distributed architecture where clients interact with an application server in-charge of managing access to an OSEE data store. Additionally, in an effort to provide load balancing, failure recovery, and code compatibility, clients consult an arbitration server before connecting to an application server. The arbitration server's responsibility is to keep track of all the application servers interacting with a common data store and direct clients to a healthy application server compatible with the clientís OSEE code version. In this arrangement, arbitration servers act as the initial access points into the OSEE server cloud where a collection of application servers manage client requests to access and operate on a common OSEE data store. Figure 1 shows an example of the OSEE Client/Server network.

OSEE Client/Server View
Figure 1. Example of an OSEE Client/Server Network.

In the figure above, three application servers interact with a single OSEE data store. The data store is comprised of a relational database and a remote file system used to store binary data. It is not necessary for the database and the binary data to exist on the same machine. The only requirement is that the application servers have access to both resources. Upon start-up, each application server registers himself on the data storeís server lookup table by entering its host address, port, supported code versions, and its unique id. When the arbitration server receives a request to find an application server to support a client connection, the arbitration server reads the data storeís server lookup table and selects the best match for the client. The client requests this information from the arbitration server upon start-up or whenever it canít communicate with an application server. It is important to note that the arbitration server does not have to be a different server than an application server. All application servers are able to act as an arbitration server. An application server is referred as an arbitration server when clients interact with it in this context. Figure 2 depicts the sequence of events involved in the arbitration process.

Arbitration Sequence
Figure 2. OSEE Client/Server Arbitration Sequence Diagram.

Once a client receives an application server's address and port information, the client must authenticate with the application server before it can gain access to the OSEE data store. During the authentication process, a client submits to the application server the current user's credential information and the authentication protocol id to use during the process. The application server verifies the user via the selected protocol and grants access to the data store by creating a session for the user. From this point forward, the application server will be responsible for managing access to the data store by identifying the user via the session id. Whenever a client wants to interact with the application server, it will need to submit its session id in order to gain access to the OSEE data store. Figure 3 shows the sequence of events involved in the authentication process.

Authentication Sequence
Figure 3. OSEE Authentication Sequence Diagram.