Dynamic Provisioning
Prev | Chapter 4. Architecture Fundamentals | Next

## Dynamic Provisioning

Compute resources are virtualized allowing service components to run on any machine that supports the JVM. Platform capabilities are used to define the operational capabilities of the compute resource, and used as policy mechanisms to determine whether service(s) can be allocated to compute resources.

A lightweight dynamic 'agent' called a Cybernode turns heterogeneous compute resources into services available through the network. The Cybernode represents the capabilities of compute resource they run on through quantitative & qualitative mechanisms. Cybernode instances dynamically discover and enlist with dynamic provisioning agents, and provide a lightweight container to instantiate mobile services.

Services are dynamically provisioned through the network to compute resources that meet operational requirements of the service. Services may contain the domain logic to process specific requests, or provide a Service Control Adapter mechanism to assimilate incumbent technology. Services are allocated to compute resources using either a round-robin semantic or by utilizing the Resource Cost utilization mechanism (representing an aggregate utilization of the compute resource), allocating services through the network.

Rio provides a model to dynamically instantiate, monitor & manage service components as described in a deployment descriptor (Rio's Operational String). The deployment descriptor provides context on service requirements, dependencies, associations and operational parameters. The dynamic provisioning agents additionally provide pluggable load distribution and Resource Cost analysis mechanisms to effectively take use of resources on the network.

### Platform Policies

Service provisioning is done using a very simple approach: compute resources have capabilities (CPU, Disk, Connectivty, Operating Systems, Patch Levels, ...); and software components (services), need to run on the most appropriate compute resource based on definable critera. Cybernodes (which represent compute resources), advertise qualitative capabilities, that indicate a specific type of mechanism or quality associated with a compute resource.

Supportability is determined by PlatformCapability objects. Matching is accomplished based on attribute matching, regular expressions are also supported. The following shows the available PlatformCapability classes that are built into Rio:

Cybernodes are initialized with platform configurations. Provision Monitors allocate services based on matching requirements to platform capabilities. An example follows. This example shows the declaration of SystemRequirements that declare Processor and Operating System requirements

    <ServiceLevelAgreements>
        <SystemRequirements>

           <!--
            Verify there are up to the number of requested processors
            -->
            <SystemComponent Name=”ProcessorArchitecture">
                <Attribute Name=”Available" Value=”2"/>
            </SystemComponent>

            <!--
            Check the name and the version of the operating system. The Version
            determines which version of the PlatformCapability is required. Without
            this key set, your service may not launch with the desired version of the
            PlatformCapability.
            -->
            <SystemComponent Name=“OperatingSystem”>
                <Attribute Name=”Name" Value=”Mac OS X"/>
                <Attribute Name=”Version" Value=”10.4*"/>
            </SystemComponent>

        </SystemRequirements>
    </ServiceLevelAgreements>

Prev | Up | Next
Chapter 4. Architecture Fundamentals | Home | Service Level Agreements