Distributed Systems


Overview

This section summarizes the development of distributed systems from the mulit-tier client-server model. It also describes the characteristics, advantages, and disadvantages of distributed systems.

This section discusses:

Distributed System Model

Distributed systems are a logical extension of multi-tier client-server architecture. Distributed systems invariably tend to be heterogeneous -- that is composed of several operating systems, running applications developed in several languages, running on various operating systems.

Note:
Not all distributed systems are object oriented. Some distributed systems use remote procedure calls and are therefore not object oriented. All references to distributed systems referred in this book however are CORBA based and therefore object oriented.



Instead of separating the business logic tier and the data access tier, distributed systems simply exposes all functionality of the application as objects, each of which can use any of the services provided by any of the other objects in the system, or even objects in another system.

This architecture blurs the distinction between client and server, because clients can create objects that behave like servers, and servers can make requests (and thus act as clients) to other servers.

There is no logical limit to the number of objects a system can have.

The Nature of Distributed Systems

Most organizations find themselves with a variety of hardware platforms, operating systems, programming languages, and networking technologies. IT infrastructure grows by adding new components, based on the technology available. The technology changes as business requirements change, and as the available technology options evolve.

It is unlikely that homogeneous systems, where all components use the same hardware, operating system, networking technology, and programming language will ever be realized. All of these different tools have strengths and weaknesses that make them more or less suitable for different tasks. To remain competitive, organizations must be able to use the right tools for each task, but still have all this different software working together.

Characteristics of Distributed Systems

In a distributed system:

As outlined in What Are Objects?, an object is defined by its data and the operations that can be performed on that data. In a distributed system, this information must be contained in the object's interface so that other objects in the system can communicate with it. Separating an object's interface from its implementation means that other objects in the system that communicate with it do not need to know how and where the object is implemented.

The effect of this separation is that any changes to an object's implementation do not affect its interface. This means that one object can be implemented in many different ways. This allows previously unthinkable flexibility.

Note:
It is important to realize that clients and servers are just roles that programs can play, and a single program can play both roles during execution.



Advantages of Distributed Systems

Distributed systems offer a number of advantages:

Disadvantages of Distributed Systems

Often, organizations that attempt to create a client-server architecture themselves quickly run into serious problems, especially in heterogeneous environments. Almost every aspect of client-server computing presents very serious technical challenges. Organizations must take care of issues relating to the integration of different networking technologies, hardware architectures, operating systems, communication protocols, as well as error recovery, support for multiple languages, and a whole host of other issues.

Attempting to accomplish these tasks internally leads to massive expenditure on infrastructure, and with little chance of success: the technology is complex, few organizations have the skills to solve all the problems or, if they do, might not be able to solve the problems on time. Moreover, any home-grown solution is likely to be proprietary and therefore not open to integration with products from other vendors.