Retrofitting Reliability into Complex Systems
Chapter 20
1. Two approaches:
-- Wrappers that encapsulate an existing system
piece of software in an environment that transparently
extends its properties. Ex: introducing fault
tolerance through replication; enforcing security; enforcing access
control;
-- Toolkits that provide explicit procedure-call
interfaces; Ex: Globus Toolkit
-- Platforms that include reliability as integral
component; Ex: Editing and debugging on MS Visual Studio uniformly
supported for many languages. ("drag
and drop reliability")
2. Issues, implementations, advantages and disadvantages, and
limitations
3. Sample problem: Introduce reliability into Web Services.. no methods
are currently available.
4. Issues and possible solutions for introducing reliability:
Complexity of existing code (old technology) to be updated
to be reliable?
Solution: wrappers.
A wrapper is a technology that overcomes problems by
intercepting events at some interface between unmodifiable
technology and external environment. This essentailly
replaces existing behavior with an extended behavior which confers
a desired property.
-- Webservices itself is a wrapper, ofte used as a gateway
between a new application and legacy code.
http://www.infoworld.com/article/05/05/02/18FEsoabt_1.html?WEB%20SERVICES
Toolkit Solutions: Write an independent application that
will provide reliability solution. Existing code will call this
application to enforce the required behavior.
The toolkit approach pacakges potentially complex
mechnisms, such as data with locking, behind easy-to-use interfaces.
Toolkits are quite powerful in the hands of developer
with freedom to use them in an intended manner with their limitations.
However they may be inflexible at tmes.
Examples: firewall that filters messages entering and
exiting distributed systems, is a tool for enforcing security.
A toolkit could package reliable communication technology
such as message bus, a system monitoring and management
technology, a fault tolerant file system and name service.
Programming lanaguage that implements reliability
techniques could be considered a toolkit too.
Some good characteristics of a toolkit:
-- addresses a set of application-specific problems
-- well focussed and coherent; if it addresses many
problems it may be very weak architecturally
A large complex distributed system application typically
uses a combination of wrappers and toolkits.
5. Types of toolkits for building reliable distributed systems:
Server replication : Tols and techniques for replicating
data for high availablity
Video server: technologies for striping vedeo data across
multiple servers, single replay for multiple clients (video on demand?)
Client groupware: integration og conferencing tools
into Java
System management: for instrumenting a distributed
systems and perfroming reactive control.
Firewalls and Containment tools:
6. Wrapper types/methods: (20.1.1)
Wrapping at object interface: object-oriented interface
and implementation; Used in fault-tolerant CORBA.
Wrapping by library replacement: RPC stub is ana example
Wrapping by object code editing: object code editing
would permit selective remapping of certain procedure calls into calls
to wrapper functions. (C# and Java's intermediate
cod eis well suited for this method).
Wrapping with interposition of agents and buddy
processes: Shop front is an example.
Wrapping communication infrastructures: Virtual private
networks
Another Internet?: See http://free2innovate.net/
7. Toolkit Technologies: Wrappers have limitations: typically are
specific
solutions and are not reusable as such.
Wrappers
are good for deterministic applications.
Any (i) time dedependent appliation (ii)
asynchronous
application (iii) parallel or preemptive multithreaded application are
all potentailly nondeterministic.
In a toolkit desired technology is prepackaged
usually
in the form of API (or procedure calls).
Typical interfaces in toolkits for Process Group
Computing:
1. Load Balancing: balanced as the number of group
member
increases
2. Guaranteed execution: transparent to the user
3. Locking: provides synchonization or token passing
4. replicated data:
5. Logging: Provides logging tools
6. Wide area spooling: integrating LANS into WANs.
7. Membership raking: Within a process group,
provides ranking on the members that can be used to subdivide tasks.
8. Monitoring and control: for instrumenting
communications into and out of group and controlling aspects of comm.
9. State Transfer: Transfre of state to group
of joining process.
10. Buk transfer: Supports out of band
transfers for high volume data
11. Shared memory: Tools for supporting
shared memory regoins within process group.
8. Distributed Programming Languages
Agent oriented programming languages and other
fourth generation languages (4GLs) pacakge powerful tools in the form
of special
purpose programming environments.
JBoss is a J2EE-compliant package that provides
tools for designing and impementing JavaGroups in J2EE environment. We
can
use it for realizing reliability. (Major topic for CSE622)
It embeds group communication functionality into
Java Env.
It extends Java platform to offer reliability
features in the sense that group comm is provided as a language
primitive.
It is possible that in
the future OO languages such as C# and Java may provide class libraries
for "replication" and "group communication"
while type theory
community community presses forward on logical foundations of
replication and mathematical correctness of highly available
applications.
(possible Ph.D topic).
9. Wrapping a simple RPC: wrapping for reliability; 20.2
10. Wrapping a Web Site : fault-tolerant web server;20.3
11. Hardening other aspects of Web server;20.4
12. Unbreakable stream connections;20.5
13. Reliable distributed shaed memory;20.6