written 8.5 years ago by | • modified 8.5 years ago |
Mumbai University > Computer engineering > Sem 7 > Software Architecture.
Marks: 10M
Year: May 13, May 12
written 8.5 years ago by | • modified 8.5 years ago |
Mumbai University > Computer engineering > Sem 7 > Software Architecture.
Marks: 10M
Year: May 13, May 12
written 8.5 years ago by | • modified 8.5 years ago |
Once a software system is in operation, parts of it may need to be redeployed, or migrated in response to changes in the run time environment. The redeployment of a software system’s components is a type of software system mobility. Mobile computing involves the movement of human users together with their hosts across different physical locations, while still being able to access an information system. This is also referred to as physical mobility. If a piece of software moves across hardware hosts during the systems execution, that action is referred to as code mobility or logical mobility. If a software module that needs to be migrated contains run time state, it is known as stateful mobility. If only the code needs to be migrated, it is known as stateless mobility. Supporting stateful mobility is more challenging since the mobile component’s state on the source host needs to be captured, migrated and reconstituted on the destination host. The effect of the component’s migration and its temporary downtime on the rest of the system and its dependence on the components internal state must be considered.
There are three general classes of mobile code systems: remote evaluation, code-on-demand and mobile agent.
1. Remote evaluation: A component on the source host has the know-how but not the resources needed for performing a service. The component is transferred to the destination host, where it is executed using the available resource. The result is returned to the source host.
In remote evaluation a software component is:
2. Code-on-Demand:
Here the needed resources are available locally, but the know-how is not known. The local sub-system thus requests the component providing the know-how from the appropriate remote host. The code-on-demand requires the same steps as remote-evaluation, the only difference is that roles of target and destination hosts are reserved.
3. Mobile agent:
If a component on a given host has the know-how for providing some service, has some execution state and has access to some of the resources needed to provide that service along with its state and local resources, may migrate to the destination host, which may have remaining resources need for providing the service. From a software architectural perspective, mobile agents are stateful software components.
There are some factors which has to be taken care of while migrating the code, some architectural concerns of which engineers must be aware are:
Quiescence: It may be unsafe to attempt to migrate a software component in the middle of processing, while it is waiting for a result from another component, or while other components are requesting its services. Therefore, the system must provide facilities that allow temporary suspension of all interactions originating from or targeted at the component, until the component is relocated to a new host. Quiescence requires at least two capabilities. The first one must be embodied in the component itself, allowing the system to instruct the component to cease any autonomous processing. The second capability may require that special-purpose elements be inserted into the system temporarily, to insulate the component from outside request and route them for processing after the component has been migrated.
Quality of Service: Migrating the components may result in degradation of availability of the service if some changes occur in the system. Consider a system which provides a given level of availability. If the stakeholders want to improve the availability to a higher level by migrating some components to a different host, it should be evaluated where the component should reside. Once the target host is determined, quiescence is rendered to the mobile components which are packaged for redeployment and migrated to target host. They are installed and activated on target hosts, after which the system operates at higher availability level until there occurs some changes in the system.