System Models: How Systems Are Partitioned, Structured and Organized
System Models: How Systems Are Partitioned, Structured and Organized
Business Architecture
Presentation
Layer
Business
Application
Layer Product
Information Service
Layer
Resource
Support
Physical Architecture
Operations Architecture
Some Client/Server
Architectural Patterns
Thin-Client model: All application processing and
data management by server only.
Fat-Client model : Server only responsible for data
management. The client machine implements
application logic and interactions with user.
Three-tier client-server: There is a layer between
client and server that may provide data and/or
application processing.
Client/Server Configurations
Client-Server configurations are generally
categorized in two types:
Two-tier Configurations: consisting of a client
and a server.
Client
(e.g. User Server
Interface) (e.g. Data)
Client/Server Configurations (cont’d)
Three-tier Configurations: includes another
server that offloads certain functions from
either the client and/or the server. Since there
can be many intermediate servers, this may
also be called n-tier.
Client Mid-tier
(e.g. User Server
for processing (e.g. Data)
Interface)
Client/Server Configurations (cont’d)
Data
Fat vs. Thin Clients
Thin Client: In a client/server model, a client is called
a “thin client” when the client contains a small amount
of processing. Most of the processing is with the
middle tier (in a three-tier setup) or the server.
User Processing
Processing
Interface
Processing Data
Fat vs. Thin Clients (cont’d)
Fat Client: A “fat client” is a client that
contains a great deal of processing (which
may include business logic), usually more
than the server.
Processing Data
User
Processing Processing
Interface
Data
More Architectural Patterns for
Distributed Software Systems
Multiprocessor: Common for large real-time systems
and critical systems to improve performance and
resilience of the system.
Distributed Object: Removes the distinction between
client and server. The fundamental system
components are objects that provide interface to a set
of services. Other objects call these services with no
logical distinction between the provider and receiver.
Peer-to-Peer: Similar to distributed objects, except
that components are systems, not objects.
Typical Layers in a Distributed
System
Middleware
Operating System
Client
(browser)
Client
Client
HTTP
Web Server(s)
CGI Intranet
Database ASP Internet
Server ODBC CF
WS
HTTP
Client
ODBC-Open Database Connectivity
CGI – Common Gateway Interface
Client
ASP –Active server pages (Microsoft)
Fire Wall
CF - Cold Fusion (Allaire Corp.)
(security) Client (browser)
Web Sphere – (IBM Corp.)
What is Middleware?
Middleware is the software between your
application and the operating system and
networking on a computer. It is the layer above the
operating system but below the application program
that provides a common programming abstraction
across a distributed system.
It can be called the / in Client/Server.
The classical definition of an operating system is
“software that makes hardware useable”. Similarly,
Middleware can be considered to be the software
that makes a distributed system programmable.
What is Middleware?
Layer between Application and OS/Network
Provides distribution transparency
communication infrastructure
registration and lookup of remote service
Resolves heterogeneity of
Hardware/OS
Networks
Programming languages
ISO: forms of transparency
Application
Presentation Complex data conversion
Session Operation and Objects
Transport Communication
Network
Data Link
Physical
Examples of Middleware
Distributed Computing Environment from OSF
based on RPC and IDL
CORBA from OMG
based on objects and IDL interface
objects locate each other through ORB
defines Internet Inter-ORB protocol (IIOP)
DCOM from Microsoft
builds ORPC on top of DCE RPC
supports integration of binary components from
different languages (e.g. VB, Java, C++)
Examples of Middleware(cont.)
Node 1 Node 2
Appl. Program 1 Appl. Program 2
Appl. Protocol Appl. Protocol
Support Code Support Code
Transport Transport
Interface Code Interface Code
Appl. Protocol
Transport Protocol
Distributed System Variations
Multiple servers: Services with large
demands, such as search engines, may have
many servers dedicated to a particular task.
Proxy servers and Caches: Data likely to be
needed again may be stored in memory or on
local for fast retrieval.
Mobile code: Code may be retrieved from a
server for execution on a client system. A
common example of this is a Java Applet.
Variations, continued
Mobile Agents: A running program including
code and data may run on remote systems.
This may be a security problem, as such
agents include worms, viruses, and web
crawlers.
Network Computers: All code and data may
be stored on a server and moved to a local
thin client temporarily for execution. Only the
code necessary to retrieve the programs and
data is stored on the network appliance.
Variations, continued
Thin Clients: Most of the processing may be
done on a remote server, with little more than
a client interface, most commonly a Web
Browser, running on the client.
Mobile clients and spontaneous
interoperation: Transient mobile devices such
as laptop computers, cell phones and PDAs
may connect to the network using
technologies such as GSM, 3G, WiFi, and
Bluetooth.
Design Requirements
There are many challenges in designing
computer systems. Some of those challenges
include:
Performance
Quality
of service
Caching and Replication
Dependability
Performance issues
Responsiveness: Users want both speed and
consistency.
Throughput: IT systems are expensive, and are
often sold on the basis of their ability to perform the
most work for the least money.
Load balancing: High potential throughput can be
defeated if the work is not distributed to make
maximum use of potential because some of the
system is idle.
Quality of Service