Distributed Software Engineering
Distributed Software Engineering
Virtually all large computer-based systems are now distributed systems. A distributed system
is "a collection of independent computers that appears to the user as a single coherent
system." Information processing is distributed over several computers rather than confined to
a single machine. Distributed software engineering is therefore very important for enterprise
computing systems.
Enterprise
Independent Coherent
Computing
Computers System
Systems
Distributed Systems
Concurrency
Allows multiple
Openness processes to run Scalability
simultaneously,
Supports interoperability boosting performance. Facilitates growth by
with equipment and adding new resources to
software from various handle increased
vendors. demand.
Distributed systems
Distributed systems are more complex than systems that run on a single processor.
Complexity arises because different parts of the system are independently managed as is the
network. There is no single authority in charge of the system so top-down control is
impossible.
Independent
Management
Distributed Network
Complexity
Systems Management
No Single
Authority
Transparency Openness
Scalability Security
Quality of Failure
Service Management
1.Transparency: to what extent should the distributed system appear to the user as a single
system?
Ideally, users should not be aware that a system is distributed and services should be
independent of distribution characteristics. In practice, this is impossible because parts of the
system are independently managed and because of network delays. Often better to make
users aware of distribution so that they can cope with problems. To achieve transparency,
resources should be abstracted and addressed logically rather than physically. Middleware
maps logical to physical resources.
Service Resource
Independence Abstraction
Services operate Resources are
without dependence on addressed logically
distribution traits. rather than physically.
Middleware
User Perception Mapping
The extent to which Middleware aligns
users perceive the logical resources to
system as unified. physical ones.
Component
Integration Interoperability
Combining various Ability of different
components into a systems to work
cohesive system together effectively
Scalability Requirements
Capability to disperse
Distribution
components globally
Capacity to add
Size
resources for users
The types of attack that a distributed system must defend itself against are:
• Interception, where communications between parts of the system are intercepted by
an attacker so that there is a loss of confidentiality.
• Interruption, where system services are attacked and cannot be delivered as
expected.
• Denial of service attacks involve bombarding a node with illegitimate service requests
so that it cannot deal with valid requests.
• Modification, where data or services in the system are changed by an attacker.
• Fabrication, where an attacker generates information that should not exist and then
uses this to gain some privileges.
Interception Interruption
Fabrication
Privilege Escalation
False Data Injection
Define
Acceptable Service
Response Acceptable
Time Evaluate
Need to
Against
Specify QoS
Define Thresholds? Degraded
Acceptable Service
Audio/Video
Throughput Unacceptable
Quality
6.Failure management: how can system failures be detected, contained and repaired?
In a distributed system, it is inevitable that failures will occur, so the system has to be
designed to be resilient to these failures. "You know that you have a distributed system when
the crash of a system that you've never heard of stops you getting any work done."
Distributed systems should include mechanisms for discovering if a component of the system
has failed, should continue to deliver as many services as possible in spite of that failure and,
as far as possible, automatically recover from the failure.
Automatic
Recovery Failure Detection
Systems designed to Mechanisms to identify
recover from failures when a system
without manual component has failed.
intervention.
Service
Continuity
Ensuring the system
continues to operate
despite failures.
Message-Based Procedural
Interaction Interaction
Asynchronous Direct calls between
communication through components for
message passing immediate response
Procedural interaction, where one computer calls on a known service offered by another
computer and waits for a response.
Procedural communication in a distributed system is implemented using remote procedure
calls (RPC). In a remote procedure call, one component calls another component as if it was a
local procedure or method. The middleware in the system intercepts this call and passes it to
a remote component. This carries out the required computation and, via the middleware,
returns the result to the calling component. A problem with RPCs is that the caller and the
callee need to be available at the time of the communication, and they must know how to
refer to each other.
Initiate RPC
Call Middleware
Forward to
Interception
Remote
Execute
Component
The calling Computation
Return Result
component The
sends a middleware The
request to the intercepts the middleware The remote
middleware. RPC call. forwards the component The result is
call to the performs the sent back to
remote required the calling
component. computation. component via
the
middleware.
Create
Message Send Message
via Middleware Receive and
Parse Message Perform
Create
A component Computation
Response
generates a The message Send Response
Message
message is transmitted The receiving via Middleware
detailing through component The receiving
required middleware to interprets the component A response
services. the intended incoming executes the message is The response
recipient. message. necessary generated with message is
computations. the results. sent back
through
middleware.
Middleware is software that can manage diverse components of a distributed system and
ensure that they can communicate and exchange data. The components in a distributed
system may be implemented in different programming languages and may execute on
completely different types of processors. Models of data, information representation and
protocols for communication may all be different.
Different
Diverse
Programming
Components
Languages
Communication
Protocols
Middleware Functions
Location
Transparency
Ensures components
operate without needing
to know each other's
physical locations.
Interaction Common
Support Services
Facilitates coordination Provides reusable
between system services to ensure
components for consistent inter-
effective operation among
communication. components.
Client-server computing
Distributed systems that are accessed over the Internet are normally organized as
client-server systems. In a client-server system, the user interacts with a program running on
their local computer (e.g. a web browser or mobile application). This interacts with another
program running on a remote computer (e.g. a web server). The remote computer provides
services, such as access to web pages, which are available to external clients.
Web Services
External
Client Browser/Mobile Web Server (e.g., Web
Clients
Application Pages)
Database Layer
Application
Stores data and Processing Layer
manages
Executes application
transactions
logic and
functionality
Peer-to-peer Architecture
Master-slave architecture
Master-slave architectures are commonly used in real-time systems in which guaranteed
interaction response times are required. There may be separate processors associated with
data acquisition from the system's environment, data processing and computation and
actuator management. The 'master' process is usually responsible for computation,
coordination and communications and it controls the 'slave' processes. 'Slave' processes are
dedicated to specific actions, such as the acquisition of data from an array of sensors.
Actuator
Management Master Process
Responsible for
Manages control
computation,
signals to
coordination, and
actuators
communication
Data Acquisition
Involves gathering
data from sensors
Fat-Client Model
Middleware Resource
System Integration
Highlights the role of Focuses on the
middleware in integration of resources
facilitating from different systems
communication and databases.
between components.
Component Multi-Tier
Interaction Implementation
Describes how Explains the use of the
components architecture in multi-tier
communicate and client-server systems.
exchange services
within the architecture.
Benefits include:
• It allows the system designer to delay decisions on where and how services should be
provided.
• It is a very open system architecture that allows new resources to be added as
required.
• The system is flexible and scalable.
• It is possible to reconfigure the system dynamically with objects migrating across the
network as required.
Distributed component architectures suffer from two major disadvantages:
• They are more complex to design than client-server systems. Distributed component
architectures are difficult for people to visualize and understand.
• Standardized middleware for distributed component systems has never been
accepted by the community. Different vendors, such as Microsoft and Sun, have
developed different, incompatible middleware.
Pros Cons
Complex
Delay decisions
design
Open Hard to
architecture visualize
Incompatible
Flexibility
middleware
Scalability
Dynamic
reconfiguration
Peer-to-peer architecture
Peer to peer (p2p) systems are decentralised systems where computations may be carried
out by any node in the network. The overall system is designed to take advantage of the
computational power and storage of a large number of networked computers. Most p2p
systems have been personal systems but there is increasing business use of this technology.
Used when clients exchange locally stored information, and the role of the server is to
introduce clients to each other. Examples:
Peer-to-Peer
System
Decentralized
Server Role
Nodes
Viber SETI@home
BitTorrent Jabber
Peer-to-Peer
Systems
Payments Databases
Bitcoin Freenet
Security issues:
• Security concerns are the principal reason why p2p architectures are not widely used.
• The lack of central management means that malicious nodes can be set up to deliver
spam and malware to other nodes in the network.
• P2P communications require careful setup to protect local information and if not done
correctly, then this is exposed to other peers.
Software as a service
Software as a service (SaaS) involves hosting the software remotely and providing access to
it over the Internet. Software is deployed on a server (or more commonly a number of
servers) and is accessed through a web browser. It is not deployed on a local PC. The
software is owned and managed by a software provider, rather than the organizations using
the software. Users may pay for the software according to the amount of use they make of it
or through an annual or monthly subscription. Example: Google Docs.
Deployment
Payment Models Method
Users pay based Software is
on usage, accessed via web
subscriptions, or browsers, not
ads installed locally
Ownership and
Management
Software is
owned and
managed by the
provider
Software as a service (SaaS) and service-oriented architectures (SOA) are related, but they
are not the same. Software as a service is a way of providing functionality on a remote server
with client access through a web browser. The server maintains the user's data and state
during an interaction session. Transactions are usually long transactions e.g. editing a
document. Service-oriented architecture is an approach to structuring a software system as a
set of separate, stateless services. These may be provided by multiple providers and may be
distributed. Typically, transactions are short transactions where a service is called, does
something then returns a result.
Client
Remote Maintains
Access via Long
Server User Data
Web Transactions
Functionality and State
Software as Browser
a Service
(SaaS) Service-
Separate,
Oriented Multiple Short
Stateless
Architecture Providers Transactions
Services
(SOA)
Configurability Scalability
Multi-tenancy
Configurability
How do you configure the software for the specific requirements of each organization?
Service configuration includes:
• Branding, where users from each organization, are presented with an interface that
reflects their own organization.
• Business rules and workflows, where each organization defines its own rules that
govern the use of the service and its data.
• Database extensions, where each organization defines how the generic service data
model is extended to meet its specific needs.
• Access control, where service customers create individual accounts for their staff and
define the resources and functions that are accessible to each of their users.
Software Configurability
Multi-tenancy
How do you present each user of the software with the impression that they are working
with their own copy of the system while, at the same time, making efficient use of system
resources?
• Multi-tenancy is a situation in which many different users access the same system and
the system architecture is defined to allow the efficient sharing of system resources.
• It must appear to each user that they have the sole use of the system.
• Multi-tenancy involves designing the system so that there is an absolute separation
between the system functionality and the system data.
System Design
Functionality Separation
Data Separation
Scalability
How do you design the system so that it can be scaled to accommodate an unpredictably
large number of users?
• Develop applications where each component is implemented as a simple stateless
service that may be run on any server.
• Design the system using asynchronous interaction so that the application does not
have to wait for the result of an interaction (such as a read request).
• Manage resources, such as network and database connections, as a pool so that no
single server is likely to run out of resources.
• Design your database to allow fine-grain locking. That is, do not lock out whole
records in the database when only part of a record is in use.