You are on page 1of 36

ELG5191

Design of Distributed System Software

Chapter 1

Distributed Applications
Architectural Principles and Solutions

Fall 2008
Rationale:

• Solving design issues related to task definition, creation,


implementation, deployment, activation, communication and
management requires much effort for the programmer when
designing and implementing a distributed application.

•Historically proven:
•The client- server mechanisms appeared to be the best way to
design applications in which methods can be invoked remotely
by the user.

• The architecture of Distributed Applications evolved from client-


server to multi-tier applications
Distributed System Software Design
Converging Business and Software
Distributed System Software Design
Convergent Component
Distributed System Software Design
1. Architecture
Distributed System Software Design
Development Model
Distributed System Software Design
Integrated Development Environment

BOM – Business
Object Model -UML
RAS – Pattern
Refinement Assistant-
UML
REF – Refinement
Assistant-UML
GEN –Translative
Generator
IX – Implement,
Deploy, and Test
Environment
Distributed System Software Design
The Operational Model
Distributed Architectures and Applications are all based and using an
Application Development Server
Distributed System Software Design
Architecture Model
Distributed System Software Design
Component Model
Distributed System Software Design
Architecture Layers
Distributed System Software Design
Distribution of Client-Server Applications
Distributed Software Development
Issues (1):
•Cooperation - the system’s components must cooperate

•Mixed environments - the machines may run different OS

•Integration - the components must be easily integrated in a system

•Seamless evolution - systems have to support legacy environments

•Development environments - the system has to integrate modules written


in different programming languages.
Distributed Software Development
Issues (2):

•Minimize the price/performance ratio


•Need to share data
•Need to share resources
•Computing speed
•Hardware/software heterogeneity
Distributed Software Development
Issues (3):
• Global Knowledge - in the case of single computational nodes the up
to date state can be known.

• If a system does not have a global clock, global memory, and


unpredictable message delays, it is impossible for a node to collect up to
date information on the system.

Therefore, the challenge is to determine efficient techniques that implement


a decentralized system wide control without any of the nodes having total
information.

• Naming - Names are used to refer to objects. Objects that can be


named include computers, printers, services, files and users.

• Scalability - Systems have to be designed in a manner that allows future


addition of nodes and/or resources.

• Interoperability- Same software produced by different vendors has to


run with no or minor modifications.
Distributed Software Development
Issues (4):
• Compatibility - Compatibility refers to the notion of interoperability among
the resources in a system. The three different levels of compatibility that exist
in DS are:
–binary level
–execution level
–protocol level
• Process synchronization - difficult to achieve in DS because of the
unavailability of shared memory. A DS has to synchronize processes running
at different computers when they try to concurrently access a shared
resource, such as a file.
• Resource management - The resources of a DS are made available to
the users in the following ways:
–data migration
–computation migration
–distributed scheduling
Distributed Software Development
Issues (5):
•Security - two issues must be considered: authentication and authorization.

•Authentication is the process of guaranteeing that an entity is what it claims


to be.

•Authorization is the process of deciding what privileges an entity has and


making only those privileges available.
An Example: CLIENT-SERVER

•The client-server applications brought in a series of supplementary


problems:
• a communication protocol
• a common way of sending data
• a Broker
• an object activation mechanism- loader
• a persistency layer
• an object management mechanism, etc
Distributed Software:
Middleware
A software layer that masks hetereogeneity

Placed between operating systems and application


components

•Many paradigms were produced for freeing the programmer


form such tedious tasks. These paradigms are:
• DCE,
• CORBA,
• COM/DCOM/MTS
• Java J2EE standard
• WSDL, XML, SOAP
• C#/.NET
• SOA, etc.
CORBA

CORBA, a standard produced by the Object Management Group


(OMG) described and gave guidelines for implementing the necessary
features for a distributed programming paradigm.

These features are called services and facilities.

They form a set of software tools which make the design and
implementation of a distributed application more affordable and reliable
for a usual programmer.

Major disadvantage: CORBA defined another language: the IDL =


Interface Definition Language
http://www.omg.org/technology/documents/formal/mof.htm
Distributed Architecture Services

•Distributed Services provide a set of utilities that are useful for objects or
distributed applications.

•Service categories:
–Distributed Systems related services
–Database related services
–General Services
Distributed Systems related Services

•Naming Service: allows a client to find an object, given its name. A server
can register any of its objects with the naming service, giving each a
(hierarchical) name that is independent of the name of the server or the
host it is running on.

•Event Service: allows a client or server to send a message ( called event)


to any number of receivers. These messages can be stored in the Event
Service before being delivered, so that clients and servers can be
decoupled.

•Security Service: individual objects or groups of objects can be protected,


so that only suitable privileged users can call specified operations on them.
Communications across a network can also be encrypted.

•Trading Service: allows a client to find an object given a constraint.


Database Related Services

•Concurrency Service: provides a locking mechanism to control the access


to an object by concurrent callers.

•Property Service: allows properties to be associated with any object.

•Transaction service : controls the commitment and abortion of transactions


that span multiple databases of the same or different types.

•Relationship service: allows relationships to be constructed and managed


between objects.

•Query Service: allows queries to be executed against collections of objects.

•Persistent Object Service: defines an abstract framework for how a


database and an object should communicate to store and restore the object
to and from the database.

•Externalization Service: allows an object’s data to be converted to and from


a stream of bytes, so that it can be copied to another location
General services
•Life cycle service: defines interfaces that allow objects to be created,
moved and copied.
•Licensing service: allows a server to make a call to determine whether or
not the machine or network it is to run on has a license to run the software.
•Time service: is used to find the time of day or to obtain an event call after
a specified time.
J2EE
In competition with the CORBA standard, Java inherited all the
conquests of the CORBA group in the area of innovative software
paradigms for distributed system software design and glued them in a
universally used language:
• The Java community response to CORBA standards: J2EE
J2EE Architecture:

Java EJB Container


Java Web Container: JSP Java Server Pages contained
Java Services:

- JDBC Java Database Connectivity


- JMS Java Messaging System
- JTA Java Transaction API
- JCA Java Cryptography Architecture
- JAAS Java Authentication and Authorization Service
- Java Mail
- Java Management Extensions

Integration with Databases: JDBC + persistency layer : Hibernate


Integration with the Decision Making System (Business Intelligence) EIS
Executive Information System
J2EE platform called Application Servers, for Component
based development

- develop presentation and business logic components, platform


independent, that support declarative and configurable
transactional, persistence and security behaviors.

J2EE Application Servers Strengths

1.Scalability
2.Management facilities
3.JMS, JCA, JTA support
4.Services based architecture
5.Distribution (RMI or others)
6.Clustering
7.Web Services (J2EE 1.4)
J2EE Application Servers

• A series of J2EE Application Servers were designed and implemented


and made available on the market;

• BEA – Weblogic
• IBM – Websphere
• JBoss The Professional Open Source Company: - JBoss
• Sun: Sun Java System Application Server Platform
J2EE Application Server

Applet Container Web Container EJB Container

Applet HTTP/ JSP Servlet


HTTPS RMI EJB

J2SE

RMI/IIOP

RMI/IIOP
JavaMail JavaMail

JDBC
JDBC
JMS
JNDI

JTA

JNDI

JMS

JTA
App Client
Container JAF JAF
App HTTP/
Client HTTPS J2SE

RMI
RMI/IIOP

JDBC
JNDI
JMS

J2SE J2SE

Database
An Example Sun: Sun Java System Application Server Platform
Client-Server Applications in J2EE
Client-Server Applications in J2EE
Ultra-lightweight client
EAR Enterprise Archive
EJB Enterprise JavaBeans
WAR Web Application Archive

Another Example: JOnAS


Application Integration Issues