Overview of a deployment:

Table of Contents:



What must be installed on a deployment machine?

To make a machine part of a deployment, it must have the following software installed (and running if necessary):

  1. Control software. It must be possible for nodes installed on this machine to be instantiated and started. The control software will provide a way to declare local components for startup with the system. It may provide for dynamic change capabilities (getting rid of an existing instance, bringing up a new instance) once the system is running. The control interface may allow for remote access, but remote access may or may not be enabled or accessible due to security configurations.
  2. Messaging software. It must be possible for nodes running on this machine to communicate with nodes on other machines.
  3. Application software. The files must be deployed into the container as they were during development build.
  4. Build scripting software. It must be possible to run the build so that the configuration information can be properly deployed.

Depending on the runtime environment, and which nodes are running, additional software may also need to be installed:

  1. Configuration persistency software. If persistency of configuration parameters requires more than local serialization, then supporting software may be required on each deployment machine.
  2. DataManager supporting software. If this machine is running the DataManager node, it will typically require additional software for transaction management and database access.
  3. UI supporting software. If this machine is running a UI adaptor node, then it may require a web server and/or additional display software.
  4. Other software. Adaptor nodes may have additional software service requirements.

TOC

Simple configuration management:

A configuration is a canonical structure of message instances describing initial application data, application hosts, and node parameters. It is saved in XML format as config.xml in the env directory of a deployment project.

In the simplest possible scenario,

  1. the deployment configuration is edited on a development machine
  2. the application software is copied to a host server as outlined above
  3. the default build is run on each host machine, making nodes declared on this host available to the control software, and making initial data available to any DataManager nodes configured on the host.
  4. the application nodes are instantiated and managed using the control software interface.

Any changes made post-deployment are ignored, unless the original config.xml is updated, and the deployment build process repeated.

TOC

Change tracking configuration management:

To track changes to a configuration, the configuration updates (sourced from the control interface, or other editing interface) are sent to a local ConfigManager node, which broadcasts the updates to all ConfigManager nodes on the hosts. Each ConfigManager updates the local config.xml file, so changes persist and can be tracked.

Simultaneous updates are prevented through a "master" designation that must be obtained synchronously by the local ConfigManager instance as a prerequisite to accepting updates for broadcast. See the node for more information.

TOC

Load balancing:

By monitoring the statistics produced by the nodes, and applying threshold rules, an automation node can produce configuration updates within specified parameters in response to local host processing conditions. For example when hosting a DataManager instance, and other node instances, an automated configuration management node may choose to move other node instances off the machine in response to heavier DataManager traffic, or decreased throughput.

Other environments may provide load balancing through the declaration of virtual hosts, which are in fact load distributing clusters.

TOC

Development example:

Development typically utilizes a variation of simple configuration management where the development machine and the server host are the same. Presuming the computer has been set up with all the required software for both, a typical developer would simply change to the appropriate deployment build area (for example c:\sand\deploy\TaskHeapDemo) and run ant. Container deployment happens automatically.

As part of the build process, docs/index.html is updated with a link to the web-based configuration editor. After modifying the configuration, the build process is repeated for the changes to take effect. If the changes are permanent, the updated env/config.xml can be checked into the code version tracking system.

TOC

webapp directories:

How a config editor will be made available to a SAND environment user will vary depending on the environment they are using. In the case of SANDev, we have a straightforward webapp that is made part of every deployment. The webapp is implemented through a webapp directory, which is be packaged into a .war file for each deployment.

However it's important to note that webapps are specific to the SANDev environment (or at least J2EE-based SAND environments). The same thing would probably *not* make sense for a .NET environment, or a PDA environment, or a flash/swing environment etc.

If you want to define a webapp directory as part of your deployment, then that is automatically supported by the same build processes that support creation of the config editor. However it's important to note that this aspect of the overall system is not part of SAND, but rather part of the SANDev network application compiler. A webapp is not supported across every potential application environment.

SAND works at the level of information transfer between the UI and the application deployment. This transfer is done through an adaptor node, which is subject to change as the adapted technology changes. If part of an application deployment uses code specific to the adapted technology, that code is outside of the scope of SAND and is not insulated from technology changes. This is appropriate for UI specific code, but not for business logic related to the application.

The webapp directory is specified at the same level as the build, docs and src directories. It follows the structure of the resulting .war file.

TOC









© 2002 SAND Services Inc.
All Rights Reserved.