Applied System Theory
This page contains the basic principles and properties in applied system theory relevant to build distributed and complex applications. Many of the basic principles in applied system theory are at the same time also the basic problems in many distributed systems:
- Availability - an application is able to run 24/7 (non-stop 24 hours per day and seven days a week)
- Fault Tolerance, Failover - an application is able to handle faults and errors gracefully
- Flexibility - an application is able to react to changes
- Robustness - an application can function in the presence of pertubations: faults, failures or adverse conditions
- Scalability - an application can scale up and down to match demand
For large-scale system which are very complex or very distributed these properties are of course desirable, but not easy to achieve. Many self-organizing systems that can be observed in nature seem to be fault tolerant, scaleable, robust and adaptive. Unfortunately, these systems in nature have also drawbacks, they are more or less unpredictable, unreliable, and uncertain as well (and sometimes even incomprehensible due to their high complexity).
The main characteristics of natural self-organizing systems are autonomy and redundancy - they are made of many redundant agents or actors. Such systems have usually many different Self-* Properties, they can heal and protect themselves and recover automatically. Therefore the above properties are typically tried to achieved with the help of
- Redundancy and Replication
- Self-* Properties, esp. self-management
- Automated Recovery
One obvious way to achieve fault-tolerance and scalability is to design for failure and for scalability, that is expect failures and increasing workload at any time. In general the design of desirable system properties like robustness, fault tolerance and scalability seems currently to be an art.