SDA Chapter 3
SDA Chapter 3
1
What is a Pattern?
An architectural pattern
» is a package of design decisions that is found repeatedly in
practice,
» has known properties that permit reuse, and describes a class
of architectures.
Tactics are simpler than patterns.
Patterns are underspecified with respect to real systems so they
have to be augmented with tactics.
» Augmentation ends when requirements for a specific system are satisfied.
2
What is a Pattern…
An architectural pattern establishes a relationship between:
A context. A recurring, common situation in the world that gives rise to a problem.
A problem. The problem, appropriately generalized, that arises in the given context.
» A set of element types (for example, data repositories, processes, and objects)
message bus)
mechanisms.
3
1. Layer Pattern
Context:
» All complex systems experience the need to develop and evolve portions of the system independently.
» For this reason the developers of the system need a clear and well-documented separation of concerns,
so that modules of the system may be independently developed and maintained.
Problem:
» The software needs to be segmented in such a way that the modules can be developed and evolved
separately with little interaction among the parts, supporting portability, modifiability, and reuse.
Solution:
» To achieve this separation of concerns, the layered pattern divides the software into units called layers.
» The usage must be unidirectional. Layers completely partition a set of software, and each partition is
exposed through a public interface.
4
Layer Pattern Example
5
Layer Pattern Solution
Overview: The layered pattern defines layers (groupings of modules that offer a cohesive
set of services) and a unidirectional allowed-to-use relation among the layers.
Elements: Layer, a kind of module. The description of a layer should define what modules
the layer contains.
Relations: Allowed to use. The design should define what the layer usage rules are and any
allowable exceptions.
Constraints:
» Every piece of software is allocated to exactly one layer.
» There are at least two layers (but usually there are three or more).
» The allowed-to-use relations should not be circular (i.e., a lower layer cannot use a
layer above).
Weaknesses:
» The addition of layers adds up-front cost and complexity to a system.
» Layers contribute a performance penalty.
6
2. Broker Pattern
Context:
» Many systems are constructed from a collection of services distributed across multiple
servers.
» Implementing these systems is complex because you need to worry about how the systems
will interoperate as well as the availability of the component services.
Problem:
» How do we structure distributed software so that service users do not need to know the
nature and location of service providers, making it easy to dynamically change the bindings
between users and providers?
Solution:
» The broker pattern separates users of services (clients) from providers of services (servers)
by inserting an intermediary, called a broker.
» When a client needs a service, it queries a broker via a service interface.
» The broker then forwards the client’s service request to a server, which processes the
request. 7
Broker Solution – 1
9
3. Model-View-Controller Pattern
Context:
» User interface software is typically the most frequently modified portion of an interactive application.
» Users often wish to look at data from different perspectives, such as a bar graph or a pie chart. These representations
should both reflect the current state of the data.
Problem:
» How can user interface functionality be kept separate from application functionality and yet still be responsive to user
input, or to changes in the underlying application’s data?
» And how can multiple views of the user interface be created, maintained, and coordinated when the underlying
application data changes?
Solution:
» The model-view-controller (MVC) pattern separates application functionality into three kinds of components:
– A model, which contains the application’s data.
– A view, which displays some portion of the underlying data and interacts with the user.
– A controller, which mediates between the model and the view and manages the notifications of state changes.
10
MVC Example
11
MVC Solution - 1
Overview: The MVC pattern breaks system functionality into three components: a
model, a view, and a controller that mediates between the model and the view.
Elements:
» The model is a representation of the application data or state, and it contains (or
provides an interface to) application logic.
» The view is a user interface component that either produces a representation of
the model for the user or allows for some form of user input, or both.
» The controller manages the interaction between the model and the view,
translating user actions into changes to the model or changes to the view.
12
MVC Solution - 2
Relations:
» The notifies relation connects instances of model, view, and controller, notifying elements of
relevant state changes.
Constraints:
» There must be at least one instance each of model, view, and controller.
» The model component should not interact directly with the controller.
Weaknesses:
» The complexity may not be worth it for simple user interfaces.
» The model, view, and controller abstractions may not be good fits for some user interface
toolkits.
13
4. Pipe and Filter Pattern
Context:
» Many systems are required to transform streams of discrete data items, from input to output.
» Many types of transformations occur repeatedly in practice, and so it is desirable to create these as independent,
reusable parts.
Problem:
» Such systems need to be divided into reusable, loosely coupled components with simple, generic interaction
mechanisms.
» The components, being generic and loosely coupled, are easily reused. The components, being independent, can
execute in parallel.
Solution:
» The pattern of interaction in the pipe-and-filter pattern is characterized by successive transformations of streams of
data.
» Data arrives at a filter’s input port(s), is transformed, and then is passed via its output port(s) through a pipe to the
next filter.
» A single filter can consume data from, or produce data to, one or more ports.
14
Pipe and Filter Example
15
Pipe and Filter Solution
Overview: Data is transformed from a system’s external inputs to its external outputs through a
series of transformations performed by its filters connected by pipes.
Elements:
» Filter, which is a component that transforms data read on its input port(s) to data written on its output
port(s).
» Pipe, which is a connector that conveys data from a filter’s output port(s) to another filter’s input port(s).
– A pipe has a single source for its input and a single target for its output.
– A pipe preserves the sequence of data items, and it does not alter the data passing through.
Relations: The attachment relation associates the output of filters with the input of pipes and vice
versa.
Constraints:
» Pipes connect filter output ports to filter input ports.
» Connected filters must agree on the type of data being passed along the connecting pipe.
16
5. Client-Server Pattern
Context:
» There are shared resources and services that large numbers of distributed clients wish to access, and for
which we wish to control access or quality of service.
Problem:
» By managing a set of shared resources and services, we can promote modifiability and reuse, by factoring
out common services and having to modify these in a single location, or a small number of locations.
» We want to improve scalability and availability by centralizing the control of these resources and services,
while distributing the resources themselves across multiple physical servers.
Solution:
» Clients interact by requesting services of servers, which provide a set of services.
» Some components may act as both clients and servers. There may be one central server or multiple
distributed ones.
17
Client-Server Example
18
Client-Server Solution - 1
Elements:
» Client, a component that invokes services of a server component.
– Clients have ports that describe the services they require.
19
Client-Server Solution- 2
Relations: The attachment relation associates clients with servers.
Constraints:
» Clients are connected to servers through request/reply connectors.
» Server components can be clients to other servers.
Weaknesses:
» Server can be a performance bottleneck.
» Server can be a single point of failure.
» Decisions about where to locate functionality (in the client or in the
server) are often complex and costly to change after a system has been
built.
20
6. Peer-to-Peer Pattern
Context:
» Distributed computational entities, each of which is considered equally important in terms of initiating an
interaction and each of which provides its own resources, need to cooperate and collaborate to provide a
service to a distributed community of users.
Problem:
» How can a set of “equal” distributed computational entities be connected to each other via a common
protocol so that they can organize and share their services with high availability and scalability?
Solution:
» In the peer-to-peer (P2P) pattern, components directly interact as peers.
» All peers are “equal” and no peer or group of peers can be critical for the health of the system.
» Peer-to-peer communication is typically a request/reply interaction without the asymmetry found in the
client-server pattern.
21
Peer-to-Peer Example
22
Peer-to-Peer Solution - 1
Overview: Computation is achieved by cooperating peers that request
service from and provide services to one another across a network.
Elements:
» Peer, which is an independent component running on a network node.
Special peer components can provide routing, indexing, and peer search
capability.
» Request/reply connector, which is used to connect to the peer network,
search for other peers, and invoke services from other peers. In some
cases, the need for a reply is done away with.
Relations: The relation associates peers with their connectors.
Attachments may change at runtime.
23
Peer-to-Peer Solution - 2
Constraints: Restrictions may be placed on the following:
» The number of allowable attachments to any given peer.
» The number of hops used for searching for a peer.
» Which peers know about which other peers.
» Some P2P networks are organized with star topologies, in which peers only
connect to supernodes.
Weaknesses:
» Managing security, data consistency, data/service availability, backup, and
recovery are all more complex.
» Small peer-to-peer systems may not be able to consistently achieve quality goals
such as performance and availability.
24
7. Service Oriented Architecture Pattern
Context:
» A number of services are offered (and described) by service providers and
consumed by service consumers.
» Service consumers need to be able to understand and use these services without
any detailed knowledge of their implementation.
Problem:
» How can we support interoperability of distributed components running on different
platforms and written in different implementation languages, provided by different
organizations, and distributed across the Internet?
Solution:
» The service-oriented architecture (SOA) pattern describes a collection of
distributed components that provide and/or consume services.
25
Service Oriented Architecture Example
26
Service Oriented Architecture Solution - 1
Overview: Computation is achieved by a set of cooperating components that provide and/or
consume services over a network.
Elements:
» Components:
– Service providers, which provide one or more services through published
interfaces.
– Service consumers, which invoke services directly or through an intermediary.
– Service providers may also be service consumers.
» ESB, which is an intermediary element that can route and transform messages between
service providers and consumers.
» Registry of services, which may be used by providers to register their services and by
consumers to discover services at runtime.
» Orchestration server, which coordinates the interactions between service consumers
and providers based on languages for business processes and workflows.
27
Service Oriented Architecture Solution - 2
» Connectors:
– SOAP connector, which uses the SOAP protocol for
synchronous communication between web services,
typically over HTTP.
29
8. Publish-Subscribe Pattern
Context:
» There are a number of independent producers and consumers of data that must interact.
» The precise number and nature of the data producers and consumers are not predetermined
or fixed, nor is the data that they share.
Problem:
» How can we create integration mechanisms that support the ability to transmit messages
among the producers and consumers so they are unaware of each other’s identity, or
potentially even their existence?
Solution:
» In the publish-subscribe pattern, components interact via announced messages, or events.
» Components may subscribe to a set of events.
» Publisher components place events on the bus by announcing them; the connector then
delivers those events to the subscriber components that have registered an interest in those
events.
30
Publish-Subscribe Example
31
Publish-Subscribe Solution – 1
32
Publish-Subscribe Solution - 2
33
9. Shared-Data Pattern
Context:
» Various computational components need to share and manipulate large amounts
of data.
» This data does not belong solely to any one of those components.
Problem:
» How can systems store and manipulate persistent data that is accessed by
multiple independent components?
Solution:
» In the shared-data pattern, interaction is dominated by the exchange of persistent
data between multiple data accessors and at least one shared-data store.
» Exchange may be initiated by the accessors or the data store. The connector type
is data reading and writing.
34
Shared Data Example
35
Shared Data Solution - 1
Elements:
» Shared-data store. Concerns include types of data stored, data
performance-oriented properties, data distribution, and number of
accessors permitted.
» Data accessor component.
» Data reading and writing connector.
36
Shared Data Solution - 2
Weaknesses:
» The shared-data store may be a performance bottleneck.
37
10. Map-Reduce Pattern
Context:
» Businesses have a pressing need to quickly analyze enormous volumes of data they generate or access, at
petabyte scale.
Problem:
» For many applications with ultra-large data sets, sorting the data and then analyzing the grouped data is
sufficient.
» The problem the map-reduce pattern solves is to efficiently perform a distributed and parallel sort of a large
data set and provide a simple means for the programmer to specify the analysis to be done.
» A programmer specified component called the map which filters the data to retrieve those items to be
combined.
» A programmer specified component called reduce which combines the results of the map.
38
Map-Reduce Example
39
Map-Reduce Solution - 1
Overview: The map-reduce pattern provides a framework for analyzing a
large distributed set of data that will execute in parallel, on a set of
processors.
» This parallelization allows for low latency and high availability.
» The map performs the extract and transform portions of the analysis and
» The reduce performs the loading of the results.
Elements:
» Map is a function with multiple instances deployed across multiple processors that performs
the extract and transformation portions of the analysis.
» Reduce is a function that may be deployed as a single instance or as multiple instances
across processors to perform the load portion of extract-transform-load.
» The infrastructure is the framework responsible for deploying map and reduce instances,
shepherding the data between them, and detecting and recovering from failure.
40
Map-Reduce Solution - 2
Relations:
» Deploy on is the relation between an instance of a map or reduce function and the
processor onto which it is installed.
» Instantiate, monitor, and control is the relation between the infrastructure and the
instances of map and reduce.
Constraints:
» The data to be analyzed must exist as a set of files.
» Map functions are stateless and do not communicate with each other.
» The only communication between map-reduce instances is the data emitted from the
map instances as <key, value> pairs.
Weaknesses:
» If you do not have large data sets, the overhead of map-reduce is not justified.
» If you cannot divide your data set into similar sized subsets, the advantages of
parallelism are lost.
» Operations that require multiple reduces are complex to orchestrate.
41
11. Multi-Tier Pattern
Context:
» In a distributed deployment, there is often a need to distribute a
system’s infrastructure into distinct subsets.
Problem:
» How can we split the system into a number of computationally
independent execution structures, groups of software and hardware,
connected by some communications media?
Solution:
» The execution structures of many systems are organized as a set of
logical groupings of components. Each grouping is termed a tier.
42
Multi-Tier Example
43
Multi-Tier Solution
Overview: The execution structures of many systems are organized as a set of logical
groupings of components. Each grouping is termed a tier.
Elements:
» Tier, which is a logical grouping of software components.
Relations:
» Is part of, to group components into tiers.
» Communicates with, to show how tiers and the components they contain interact with each
other.
44
Relationships Between Tactics and Patterns
» Encapsulation
» Use an intermediary
45
Tactics Augment Patterns
46
Tactics and Interactions
Each tactic has pluses (its reason for being) and minuses –
side effects.
47
Tactics and Interactions - 2
48
Tactics and Interactions - 3
System
Ping/Echo
49
Tactics and Interactions - 4
50
Tactics and Interactions - 5
System
Ping/Echo
Increase Available
Resources
Resource
Cost
Utilization
51
Tactics and Interactions - 6
52
Tactics and Interactions - 7
System
Ping/Echo
Increase Available
Resources
Resource
Cost
Utilization
Scheduling
Policy
Add to Modify
system policy
53
Tactics and Interactions - 8
54
Tactics and Interactions - 9
System
Ping/Echo
Cost Resource
Utilization
Scheduling
Policy
Add to Modify
system policy
Use an
Intermediary
Ensure
usage
55
Tactics and Interactions – 10.
56
How Does This Process End?
57