% $Id: lessons.tex 5109 2007-01-08 00:03:57Z gokhale $

\subsection*{Lessons Learned and Future Work}

Capturing availability requirements interms of degree of replication,
replication style at the modeling time and generating component
infrastructure components increases productivity to a great extenet
but many unresolved challenges still remain.  

\begin{BulletList}
\item \textbf{Availability model analysis:} to determine the effect of
the availability requirements on other aspects of the system would
greatly amplify the usefulness of our modeling techniques Our approach
to provision fault-tolerance is simplistic in the sense  that it
neglects the effects on resource consumption because of the number of
the replicated components. Increasing the degree of replication of
protected components in the system may result in excessive resoruce
consumption and may adversely affect other QoS gurantees of the system
such as timeliness and CPU consumption. An  analysis technique needs
to be in place that would help the system designers take correct
decisions about the availability requirements without adverly
affecting the resource availabilty and other QoS characteristics of the system.

\item \textbf{Run-time adaptation:} of the fault-tolerance
infrastructure as well as the replicated aplication components is
highly desirable in eDRE systems because these systems usually
exxhibit modal behavior and system functionality as well QoS
priorities may change as the mode of operation of the system
changes. (example  would be great) Our approach to the availability
modeling is static in nature and depends on the availability of the
target domain information and their associations with each other in
terms of co-failure probability. Although, the placement model
interpreter does take deployment decisions at design time using a
strategizable  constraint-solver framework, it does not make the
system adaptive at run-time.  Runtime-monitoring subsystems such as
RACE can be used to implement a general purpose  recourse
constraint-solver framework at run-time, not unlike the one we have in
our design-time placement model interpreter. Such a framework would
take intelligent (re)deployment decisions based on changing
environment (failures, resource cosumption) and modes of the eDRE
systems. 

\item \textbf{Ensuring state consistency:} across replicas of
components or FOUs in a general is a challenge. Our Availability model
abstracts away the details of fault-monitoring part of the FT
subsystem and generates component based infrastructure automatically
for precisely doing that. However, state synchronization and ensuring
state consistency across replicated components of the system is a hard
problem. Main challenges in this space are (1) Capturing and
provisioning a variety of state synchronization mechanisms because
different component  developers may implement different mechanisms as
they see fit. Several different ways  ensuring state synchronization
are used, for example, central repository/database based approach,
transmission of periodic state updates using point-to-point
commication or multicast  communicatoin etc. Modeling the topology
transmission of state update messages is also important in case of
non-repository based techniques because the run-time failover
critically depends on the order inwhich replica compoents receive
state updates.  

\end{BulletList}

