Dependency-Oriented Thinking
Session 1 – Inculcating Dependency-Oriented
Thinking

(C) Ganesh Prasad, Eigner Pty Ltd
Agenda
●

Introduction – Presenter bio, Participants'
backgrounds

●

Prior experiences with SOA

●

Expectations from thi...
SOA is not just Technology
●

●

Technology is the implementation of business intent
A lot of analysis and design is requi...
How did SOA get to be seen as Technology?
●

“Service” is a weasel word

(C) Ganesh Prasad, Eigner Pty Ltd
Understanding the term “dependency”
●

Not a fancy technical term; just a regular English word

●

We can represent it usi...
Why are dependencies important?
●

A system with a large number of interconnections (dependencies)

●

Some of the depende...
The impact of reducing dependencies
●

A system with far fewer interconnections (dependencies)

●

No dependencies are unk...
The trap of surrogate principles
●

“Point-to-point connections considered harmful” considered harmful

(C) Ganesh Prasad,...
The converse trap
●

Mediated connections considered harmful

(C) Ganesh Prasad, Eigner Pty Ltd
Logical mediation
●

A “point-to-point” connection can in fact be mediated

(C) Ganesh Prasad, Eigner Pty Ltd
Dependency view
●

The dependency view of a true point-to-point connection

(C) Ganesh Prasad, Eigner Pty Ltd
Dependency view
●

The dependency view of a mediated “point-to-point” connection

(C) Ganesh Prasad, Eigner Pty Ltd
Logical tight coupling
●

A “mediated” connection may in fact be tightly coupled

(C) Ganesh Prasad, Eigner Pty Ltd
Dependency view
●

The dependency view of a tightly coupled mediated system

(C) Ganesh Prasad, Eigner Pty Ltd
Reducing dependencies – the Linux way
●

Linux uses the Unix mechanism of symbolic links to abstract changes

(C) Ganesh P...
Dependency-Oriented Thinking
Session 2 – Dependency-Oriented Thinking as a
Formal Approach

(C) Ganesh Prasad, Eigner Pty ...
Agenda
●

The BAIT Model of the enterprise

●

Entities and Relationships in the TOGAF Model

●

The core elements applica...
A Few Words on BAIT

(C) Ganesh Prasad, Eigner Pty Ltd
How should an architect view “applications”?
●

●

The literal view of systems does not provide architectural insights
The...
The Layered view of Applications
●

●

The correct way to see the Application layer is as logical groupings of
business ca...
Interdependencies between BAIT layers
●

The Application and Information layers always go hand in hand

(C) Ganesh Prasad,...
BAIT as a “Four I” model of SOA
●

Intent – what is to be done

●

Internal Cohesion – how functions hang together

●

Int...
BAIT and “Operation-Oriented Architecture”
●

Operations are the fundamental building blocks of an enterprise

●

Determin...
BAIT versus TOGAF
●
●

●

●
●

BAIT is only a framework
It shows how to view an enterprise but doesn't
show what comprises...
TOGAF as a well-known set of dependencies
●

●

TOGAF's vocabulary includes “viewpoints”, which are subsets of the
entitie...
Enterprise-Level Entities and Relationships

(C) Ganesh Prasad, Eigner Pty Ltd
Business Layer Entities and Relationships

(C) Ganesh Prasad, Eigner Pty Ltd
Business Layer Design Artifacts
●

Not all Business Layer entities are important to an analyst or designer

(C) Ganesh Pra...
Application Layer Entities and Relationships

(C) Ganesh Prasad, Eigner Pty Ltd
A Detailed Look at “Applications”

(C) Ganesh Prasad, Eigner Pty Ltd
Application Layer Design Artifacts
●

Note the two types of “applications” formed by grouping Operations in
two different ...
Information Layer Entities and Relationships

(C) Ganesh Prasad, Eigner Pty Ltd
Information Layer Design Artifacts

(C) Ganesh Prasad, Eigner Pty Ltd
Technology Layer Entities and Relationships

(C) Ganesh Prasad, Eigner Pty Ltd
Technology Layer Design Artifacts

(C) Ganesh Prasad, Eigner Pty Ltd
Design Artifacts by BAIT Layer

(C) Ganesh Prasad, Eigner Pty Ltd
Dependency Principles by BAIT Layer

(C) Ganesh Prasad, Eigner Pty Ltd
The Formal Dependency-Oriented Method
●

●

Starting at the Business layer, identify the Key Design Artifacts and
apply De...
Dependency-Oriented Thinking
Session 3 – The Business Layer

(C) Ganesh Prasad, Eigner Pty Ltd
Agenda
●

Business Intent

●

The Chain from Vision to Process Step

●

Traceability and Minimalism

●

The role of Domain...
Business Layer Design Artifacts

(C) Ganesh Prasad, Eigner Pty Ltd
Vision and Mission
●

Vision – your idea of Utopia

●

Mission – your role in bringing about that Utopia

●

Together refe...
The hidden role of Strategy
●

Strategy shapes organisations

●

The same Mission may be accomplished in different ways

(...
Business Functions are largely Stable
●

●

Changes in Strategy tend to impact Business Processes, but
curiously, need not...
Function, Process and Process Step
●

Function is both Structure and mini-Mission

●

Processes are what Functions “do”

●...
The Traceability Principle
●

Think of Traceability as a chain of “existential dependencies”

●

It's a discipline that ma...
The Minimalism Principle
●

“The simplest way to get a job done”

●

A discipline that leads to agility

(C) Ganesh Prasad...
Domain Insight
●

Helps in applying the Traceability and Minimalism
principles

●

More Art than Science

●

Think of exam...
Changing Requirements
●

Intent versus Detail

(C) Ganesh Prasad, Eigner Pty Ltd
Dependency-Oriented Thinking
Session 4 – Process Design

(C) Ganesh Prasad, Eigner Pty Ltd
Agenda
●
●

●
●

The generic business process
Human workflow and asynchronous process
steps
Orchestration and Choreography...
The Crucial Design Step between Process
and Process Step
●

How should Process Steps be coordinated into a Process?

●

De...
Top-Down Design of the Business Layer

(C) Ganesh Prasad, Eigner Pty Ltd
Orchestrated Processes
●

The dependency relationships in an orchestrated process mirror the
flow of control

(C) Ganesh P...
Choreographed Processes
●

The dependency relationships bear no resemblance to the flow of
control

(C) Ganesh Prasad, Eig...
A Simple Business Process
●

An Event Trigger followed by one or more Process Steps

(C) Ganesh Prasad, Eigner Pty Ltd
A Generic Business Process
●

A generic process does not run to completion in one go

●

It may pause, and resume based on...
“Non-blocking” Processes and Callback
●

●

It's often efficient for a paused process to do something else instead
of idly...
Human workflow as a long-running process
●

●

Non-blocking process design can be used to design human workflow
Pause and ...
Dependencies in Orchestrable and
Choreographable Operations
●

Recall the different graphs for dependency versus flow of c...
The Overhyped Notion of “Reuse”
●
●

Reuse is not a first-class benefit
It's unreasonable to expect reuse from a SOA
initi...
The potential for reuse is first seen at the
Business layer

(C) Ganesh Prasad, Eigner Pty Ltd
Lower layers should confirm if reuse is in
fact possible

(C) Ganesh Prasad, Eigner Pty Ltd
Dependency-Oriented Thinking
Session 5 – The Application Layer

(C) Ganesh Prasad, Eigner Pty Ltd
Agenda
●
●

●

What is an "Application"?
The principles of High Cohesion and
Decoupling of Internals from Interfaces
"Gold...
Application Layer Design Artifacts
●

Process Steps at the Business layer map to Operations at the
Application layer

(C) ...
Application Layer vs Technology Layer
●

The Technology layer provides a detailed “street view”

●

The Application layer ...
The Relationship between Design Artifacts
at the Application and Information Layers
●

Products are defined by a shared In...
The Cohesion and Coupling Principles
●

At each layer, there is an internal focus (Cohesion) and an external
focus (Coupli...
Cohesion Exercise 1

(C) Ganesh Prasad, Eigner Pty Ltd
(C) Ganesh Prasad, Eigner Pty Ltd
(C) Ganesh Prasad, Eigner Pty Ltd
Cohesion Exercise 2

(C) Ganesh Prasad, Eigner Pty Ltd
(C) Ganesh Prasad, Eigner Pty Ltd
(C) Ganesh Prasad, Eigner Pty Ltd
(C) Ganesh Prasad, Eigner Pty Ltd
Cohesion Exercise 3

(C) Ganesh Prasad, Eigner Pty Ltd
(C) Ganesh Prasad, Eigner Pty Ltd
(C) Ganesh Prasad, Eigner Pty Ltd
Simultaneous Groupings
●

It is possible to group entities in more than one way at the same time

(C) Ganesh Prasad, Eigne...
Simultaneous Grouping of Operations
●

A dynamic grouping of Operations is a Process

●

A static grouping of Operations i...
Anatomy of a Product
●

Grouping by internals is the design principle

●

External access is “canned” through a relatively...
Anatomy of a Service
●

Grouping by Interfaces is the design principle

●

External access is the very raison d'être!

(C)...
SOFEA – Architecture for Front-ends
●

For the best of both worlds, build user interfaces on top of services

(C) Ganesh P...
Demystifying Versioning
●

Variants and Versions

●

Interfaces and Internals

●

(C) Ganesh Prasad, Eigner Pty Ltd
Variants
●

A Variant is an operation “flavour” that may coexist with other flavours
without deprecating them

(C) Ganesh ...
Versions
●

There is always a latest Version that deprecates earlier ones

(C) Ganesh Prasad, Eigner Pty Ltd
Interfaces as Abstractions of Operations
●

An Interface represents the Business Intent of an Operation

●

Details are ta...
The Impact of Changing Interfaces
●

Consumers of operations have a dependency on the interface

●

Changes to operations ...
Impacts classified by Version Type
●

Versions can be thought of as “x.y.z”

●

The only criterion for classification is t...
Changes to Internals
●

A change to the internal logic of an operation with no visibility at the
interface changes only th...
“Minor” Changes to Interfaces
●

●

●

Some kinds of changes to operations are visible at the interface, but
do not impact...
Types of changes that do not break an
interface
●

Interfaces that become more lenient tend not to impact consumers

(C) G...
Major Changes to Interfaces
●

A change to an operation that is not only visible at the interface but
also forces a change...
Types of changes that break an interface
●

An interface that becomes stricter or more restrictive tends to impact
consume...
Version Mapping Convention
●

●

Exploit the dependency level expressed by the “x.y.z” version numbering
scheme
The minor ...
Version Mapping Convention, cont'd
●

The major version number should always map to the latest minor
version

(C) Ganesh P...
Version Routing Exercise
●

Which implementation version will be executed by this call?

(C) Ganesh Prasad, Eigner Pty Ltd
Solution
●

Thumb rule – It's always the latest version at the lower level

(C) Ganesh Prasad, Eigner Pty Ltd
(C) Ganesh Prasad, Eigner Pty Ltd
(C) Ganesh Prasad, Eigner Pty Ltd
The “Minor Version Lockstep Dependency”
●

When dealing with multiple variants, changes to the minor version
number of one...
The “Goldilocks Signature” Principle
●

A balance is required between the stability and the precision of an
operation's in...
What is a “Well-Designed” Interface?
●

Well-designed interfaces are stable in the face of change

●

i.e., they do not cr...
Why the scheme works

(C) Ganesh Prasad, Eigner Pty Ltd
Managing Breaking Changes

(C) Ganesh Prasad, Eigner Pty Ltd
Managing Breaking Changes, cont'd

(C) Ganesh Prasad, Eigner Pty Ltd
Managing Non-Breaking Changes

(C) Ganesh Prasad, Eigner Pty Ltd
Dependency-Oriented Thinking
Session 6 – The Information Layer

(C) Ganesh Prasad, Eigner Pty Ltd
Agenda
●

"Data on the Outside versus Data on the
Inside"

●

Elements of Low Coupling

●

Type Hierarchy and Interface Ab...
Information Layer Design Artifacts
●

●

Only two major categories – “Data on the Outside” and “Data on the
Inside”
Decept...
Variants from a Data Perspective
●

●

A single abstract interface can map to multiple concrete
implementation variants
Bu...
The Notion of “Context”
●

“Context” is a way of formalising aspects of an operation that are not
core to its business int...
Low Coupling, or “Need to Know”
●

A form of minimalism applied to data

(C) Ganesh Prasad, Eigner Pty Ltd
Decoupling of Internal Data from Interface Data
●

To be decoupled, interface and internal data models cannot have
depende...
The Domain-Specific Data Dictionary
●

Efficiencies are still possible!

●

The internal and interface data models do talk...
What a Data Dictionary Looks Like
●

Entities and Value Objects are defined here

(C) Ganesh Prasad, Eigner Pty Ltd
Types and Instances
●

Both internal and interface data models define instances of types

●

Types common to both should b...
Data Model Example
●

Internal and interface data models have some elements in common
and some elements that are unique to...
The Relationship between
Interface/Internals and Type Hierarchy
●

This is why Application and Information layer design is...
A Problem We Glossed Over!
●

●

●

●

●

Abstract interfaces are stable and shield consumers from many
internal changes, ...
Building an abstract interface to an existing
implementation

(C) Ganesh Prasad, Eigner Pty Ltd
When a new consumer is supported by an
existing variant

(C) Ganesh Prasad, Eigner Pty Ltd
When a new consumer is not supported by
an existing variant

(C) Ganesh Prasad, Eigner Pty Ltd
The Internal Data Model
●

Deals with Entities rather than Value objects

(C) Ganesh Prasad, Eigner Pty Ltd
The Interface Data Model
●

Never references Entities! (That would be tight coupling)

●

Value objects are packaged into ...
The Identity Association Principle
●

A common design error

(C) Ganesh Prasad, Eigner Pty Ltd
How Identity Association Works
●

Consumers must not develop dependencies on internal data entities

(C) Ganesh Prasad, Ei...
Revisiting the Goldilocks Signature Principle
●

Think about stability and precision afresh from the viewpoint of data

(C...
Message Data Model
●

The Goldilocks Signature principle is supported by this model

(C) Ganesh Prasad, Eigner Pty Ltd
A Terrible Way to Implement Extensible
Interfaces
●

Extensions gradually destroy structure and meaning

(C) Ganesh Prasad...
Extensibility with Control
●

Setting up a Type Hierarchy supports change gracefully

(C) Ganesh Prasad, Eigner Pty Ltd
Isolation of Context from Content
●

Keep extraneous considerations separate from the core business
intent

(C) Ganesh Pra...
The Context Type Hierarchy
●

Context has its own hierarchy with a single, optional base type called
“Context Type”

(C) G...
Supporting New Variants that Differ only in
Context
●

Building in an optional context element into every interface is
ins...
Context of Output Data
●

●

Context of input data is used to determine appropriate variants to
invoke
Context of output d...
Service Content and Process Context
●

When considering a single operation, some data elements may be
considered content r...
Modelling Service Content as Context
●

Sometimes, a process may have operations with common content

●

This content coul...
Context By Reference
●

●

Operations sharing “content context” with other operations can then deal
with references to com...
Context By Reference, cont'd
●

Subsequent operations refer to common content through the context
ID

(C) Ganesh Prasad, E...
Example – Bringing Application and Data
Layer Principles Together

(C) Ganesh Prasad, Eigner Pty Ltd
The Type Hierarchy supporting Late Binding

(C) Ganesh Prasad, Eigner Pty Ltd
“Schema Validation”

(C) Ganesh Prasad, Eigner Pty Ltd
Routing/Binding from Interface to
Implementation

(C) Ganesh Prasad, Eigner Pty Ltd
Dependency-Oriented Thinking
Session 7 – The Technology Layer

(C) Ganesh Prasad, Eigner Pty Ltd
Agenda
●
●

●

●

●

Standards, Bundling and Tooling
Standards and Standards Families - SOAP and
REST
Bundling - Data, Log...
Technology Layer – The Design of
Implementation
●

Not implementation itself, but the design of implementation

(C) Ganesh...
Technology Layer Design Artifacts
●

At the most abstract level, Technology consists of three elements

●

They are Standa...
Bundling Decisions
●

“Where to place what” is a bundling decision

(C) Ganesh Prasad, Eigner Pty Ltd
Logic Bundling Principle
●

This is a variant of the Cohesion principle – what belongs together
must go together

(C) Gane...
The State or “Stickiness” Principle
●

●

Placing logic on one physical component as opposed to another could
be the diffe...
Topology “Hotspots”
●

●

The way physical components are connected or “wired” together can
create bundling dependencies o...
Reference Architecture of a Deployable
Application

(C) Ganesh Prasad, Eigner Pty Ltd
Determining Standards for Orchestrable
Operations

(C) Ganesh Prasad, Eigner Pty Ltd
Determining Standards for Choreographable
Operations

(C) Ganesh Prasad, Eigner Pty Ltd
Determining Tooling Components

(C) Ganesh Prasad, Eigner Pty Ltd
Determining Deployment Bundles

(C) Ganesh Prasad, Eigner Pty Ltd
Determining Description Bundles

(C) Ganesh Prasad, Eigner Pty Ltd
The Service Provider

(C) Ganesh Prasad, Eigner Pty Ltd
The Service Consumer

(C) Ganesh Prasad, Eigner Pty Ltd
Legacy Systems

(C) Ganesh Prasad, Eigner Pty Ltd
Functional Symbols for Tooling
●

From Gregor Hohpe's “Enterprise Integration Patterns”

(C) Ganesh Prasad, Eigner Pty Ltd
Additional Symbol for Tooling
●

Internal logic has no symbol in “Enterprise Integration Patterns”

●

We have to “roll ou...
The Core Technology Layer Components
●

Service Container

●

Broker

●

Process Coordinator

(C) Ganesh Prasad, Eigner Pt...
Service Container
●

Implements Business Logic and exposes it

(C) Ganesh Prasad, Eigner Pty Ltd
How a Service Container is Used
●

The logic implemented by the Service Container and exposed as an
operation is consumed ...
Broker
●

Mediates access to existing logic

(C) Ganesh Prasad, Eigner Pty Ltd
How a Broker is Used
●

●

●

The special protocols and interfaces of legacy systems are hidden
through “adapters”
Data fo...
Process Coordinator
●

Combines existing operations into business processes

●

More relevant for orchestrable operations
...
How a Process Coordinator is Used
●

The Process Coordinator runs stateful process logic (orchestration)

●

It invokes op...
The Components Working Together
●

The three core technology components are designed to work together

(C) Ganesh Prasad, ...
Broker Design Error 1
●

Topology Hotspot – the Broker is not meant to be a centralised
component

(C) Ganesh Prasad, Eign...
Broker Design Error 2
●

Always use the right tool for the job

●

The Broker is a mediator

●

Do not use the Broker as a...
Dependencies introduced by SOAP
●

Static Description dependency

●

Bundling dependency

●

Synchronisation dependency

(...
Dependencies introduced by REST
●

Semantic dependency

●

Synchronisation dependency

(C) Ganesh Prasad, Eigner Pty Ltd
What is a “Semantic Dependency”?
●

The requirement for a system to resolve ambiguity

(C) Ganesh Prasad, Eigner Pty Ltd
The Problem with WSDL
●

WSDL is a static description of a group of operations

●

Three dependencies arise from this desi...
The WSDL Dependency Multiplied
●

A popular service can have many consumers that are then dependent
on its interface contr...
Cascading Impacts of Change
●

WSDL is a dependency hotspot

(C) Ganesh Prasad, Eigner Pty Ltd
Calculating the Brittleness of WSDL
●

●

A WSDL file describes exactly 1 service consisting of 5 operations, each
with an...
Strategies to minimise change
●

Dependency principles can be applied to minimise the effects of
change due to the WSDL de...
Dependencies arising from REST's
Hypermedia Constraints
●

●

There is no static description of operations in REST (WADL i...
Miscellaneous Technology Layer
Considerations

(C) Ganesh Prasad, Eigner Pty Ltd
The “Canonical Data Model” Fallacy
●

A Canonical Data Model could be too heavyweight and rigid

(C) Ganesh Prasad, Eigner...
Domain Data Models
●

Domain Data Models are more flexible and federation-friendly

(C) Ganesh Prasad, Eigner Pty Ltd
“The SOA Ecosystem”
●

The logical view of service providers and consumers

(C) Ganesh Prasad, Eigner Pty Ltd
Processes as Service Consumers
●

Processes are a special type of service consumer

(C) Ganesh Prasad, Eigner Pty Ltd
Processes as Operations
●

●

A process abstracts coarse-grained logic
This coarse-grained logic may in turn be invoked by...
Processes in the SOA Ecosystem
●

A process is both a service provider and a service consumer

(C) Ganesh Prasad, Eigner P...
Operation Signatures implemented in SOAP
and REST

(C) Ganesh Prasad, Eigner Pty Ltd
Dependency-Oriented Thinking
Session 8 – Worked-Out Examples

(C) Ganesh Prasad, Eigner Pty Ltd
Agenda
●

●

Option 1: Detailed analysis of participants' own
design problems
Option 2: Canned case studies:
●

●

●

●

C...
Post-Mortem Example

(C) Ganesh Prasad, Eigner Pty Ltd
Exercise – Post-Mortem
●

What is wrong with this design?

(C) Ganesh Prasad, Eigner Pty Ltd
A More Flexible Design

(C) Ganesh Prasad, Eigner Pty Ltd
Synchronous Orchestrated Process

(C) Ganesh Prasad, Eigner Pty Ltd
Banking Application Sequence Diagram

(C) Ganesh Prasad, Eigner Pty Ltd
Processes, Services and Operations
●

Dynamic grouping of operations into a single process “Open Account”

●

Static group...
High-Level Solution Diagram – Banking

(C) Ganesh Prasad, Eigner Pty Ltd
Asynchronous Orchestrated
Process

(C) Ganesh Prasad, Eigner Pty Ltd
Insurance Application Sequence Diagram

(C) Ganesh Prasad, Eigner Pty Ltd
Processes, Services and Operations
●

Two dynamic groupings (processes): Get Quote and Purchase Policy

●

6 static groupi...
High-Level Solution Diagram – Insurance

(C) Ganesh Prasad, Eigner Pty Ltd
Choreographed Process

(C) Ganesh Prasad, Eigner Pty Ltd
A Maze Game

(C) Ganesh Prasad, Eigner Pty Ltd
Allowed Movements

(C) Ganesh Prasad, Eigner Pty Ltd
Cell Identifiers – Identity Association
●

A cell's location must not be derivable from its name or vice-versa

(C) Ganesh...
The Design – Hypermedia Constraints

(C) Ganesh Prasad, Eigner Pty Ltd
Interaction at the start of the game

(C) Ganesh Prasad, Eigner Pty Ltd
Interaction in the middle of the game

(C) Ganesh Prasad, Eigner Pty Ltd
Interaction at the end of the game

(C) Ganesh Prasad, Eigner Pty Ltd
Managing Change

(C) Ganesh Prasad, Eigner Pty Ltd
The 70s
●

Banking in a simpler (and more rigid) time

(C) Ganesh Prasad, Eigner Pty Ltd
Service Interfaces to Support Arbitrary
Clients

(C) Ganesh Prasad, Eigner Pty Ltd
Variants of Similar Operations

(C) Ganesh Prasad, Eigner Pty Ltd
Standardised Variants, Abstract Interfaces

(C) Ganesh Prasad, Eigner Pty Ltd
Processes as Standardised Operation Variants

(C) Ganesh Prasad, Eigner Pty Ltd
Supporting a New Variant

(C) Ganesh Prasad, Eigner Pty Ltd
Deployment of Components

(C) Ganesh Prasad, Eigner Pty Ltd
A More Likely Scenario!

(C) Ganesh Prasad, Eigner Pty Ltd
Próximos SlideShares
Carregando em…5
×

Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

1.903 visualizações

Publicada em

This is the full slide pack containing all the slides from my all day workshop on Dependency-Oriented Thinking. If people don't have the patience to read the 264 page document (http://slidesha.re/1cPwPD2), they can flip through this first.

Publicada em: Tecnologia
2 comentários
4 gostaram
Estatísticas
Notas
  • 1. I used to think that REST had no contracts. After I read 'RESTful Web APIs' by Leonard Richardson and Mike Amundsen, I realise how much effort has gone into supporting 'dynamic contracts'. Look up the book, especially the section on 'profiles', and all the new standards like XMDP, ALPS, JSON-LD, Collection+JSON, etc.
    2. It is not true that 'REST exposes resources of services for clients to orchestrate'. The design of 'resource' is itself an abstraction that hides the internals. I have mentioned to you before that we can have a 'resource' called 'eligible-customer', which does not correspond to a physically distinct set of records in any internal table. It requires the application of business rules to determine who is an eligible customer. There are any number of such abstractions that REST allows, so this criticism is unfair. Also, REST is not Distributed Objects. It does not pass around object references to remote clients. It explicitly deals with representations (like DTOs), with the understanding that these are to be applied in some way to resources to effect changes.
    3. Yes, both the 'front' and 'back' of services are important. Slides 100, 101, 141, 142, 143 and 144 should address this idea.
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • I generally like the precision and quality of the content and your 'softer' dependency on REST.

    I would however note that WSDL should not be viewed as 'the service contract' but 'a' contract (as in one of many) between a service and a group of consumers. A service can expose as many WSDLs as it needs (to form specific contracts). A contract is always better than no contract (say like REST) because it enables for formal reasoning (access, validation, ...).

    The true usage pattern of WSDL is many WSDLs for a single service implementation.

    What I see critically missing though in your presentation is that a service has two sides (see my presentation on Service-as-a-Software, the other SaaS, http://www.slideshare.net/jdubray/service-asasoftware)

    I understand that the industry has solely focused on service implementations and service consumers. In reality, a 'service' is just a middle-tier, even in the physical world. We should walk away from 'services' as a black box (reinforced by REST which mistakenly exposes the resources of the services for the client to orchestrate).

    A service is a set of resources (soft or hard) and skills (machine or people) that governs a consistent outcome of activities.

    The 'back' of a service is as important as the 'front'. Hence the way you design the back of a service, in relation to its consumable interface is as critical as the consumable interface itself. The back of a service should be designed for onloading / offloading dependencies easily.
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
Sem downloads
Visualizações
Visualizações totais
1.903
No SlideShare
0
A partir de incorporações
0
Número de incorporações
8
Ações
Compartilhamentos
0
Downloads
50
Comentários
2
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Workshop Slides - Introduction to Dependency-Oriented Thinking" Feb 15, 2014, Sydney

  1. 1. Dependency-Oriented Thinking Session 1 – Inculcating Dependency-Oriented Thinking (C) Ganesh Prasad, Eigner Pty Ltd
  2. 2. Agenda ● Introduction – Presenter bio, Participants' backgrounds ● Prior experiences with SOA ● Expectations from this workshop ● Case studies (interactive) ● Notation (UML) for inter-system dependencies ● ● Surrogate principles and why they don't always apply Exercises (interactive) (C) Ganesh Prasad, Eigner Pty Ltd
  3. 3. SOA is not just Technology ● ● Technology is the implementation of business intent A lot of analysis and design is required before business intent can be implemented (C) Ganesh Prasad, Eigner Pty Ltd
  4. 4. How did SOA get to be seen as Technology? ● “Service” is a weasel word (C) Ganesh Prasad, Eigner Pty Ltd
  5. 5. Understanding the term “dependency” ● Not a fancy technical term; just a regular English word ● We can represent it using a formal notation (C) Ganesh Prasad, Eigner Pty Ltd
  6. 6. Why are dependencies important? ● A system with a large number of interconnections (dependencies) ● Some of the dependencies are not even obvious ● Now move the orange block without disturbing any of the others ● How confident are you? (C) Ganesh Prasad, Eigner Pty Ltd
  7. 7. The impact of reducing dependencies ● A system with far fewer interconnections (dependencies) ● No dependencies are unknown or hidden ● How confident are you of making changes without breaking anything? ● How fast can you move the block? ● How much do you need to plan for the move? (C) Ganesh Prasad, Eigner Pty Ltd
  8. 8. The trap of surrogate principles ● “Point-to-point connections considered harmful” considered harmful (C) Ganesh Prasad, Eigner Pty Ltd
  9. 9. The converse trap ● Mediated connections considered harmful (C) Ganesh Prasad, Eigner Pty Ltd
  10. 10. Logical mediation ● A “point-to-point” connection can in fact be mediated (C) Ganesh Prasad, Eigner Pty Ltd
  11. 11. Dependency view ● The dependency view of a true point-to-point connection (C) Ganesh Prasad, Eigner Pty Ltd
  12. 12. Dependency view ● The dependency view of a mediated “point-to-point” connection (C) Ganesh Prasad, Eigner Pty Ltd
  13. 13. Logical tight coupling ● A “mediated” connection may in fact be tightly coupled (C) Ganesh Prasad, Eigner Pty Ltd
  14. 14. Dependency view ● The dependency view of a tightly coupled mediated system (C) Ganesh Prasad, Eigner Pty Ltd
  15. 15. Reducing dependencies – the Linux way ● Linux uses the Unix mechanism of symbolic links to abstract changes (C) Ganesh Prasad, Eigner Pty Ltd
  16. 16. Dependency-Oriented Thinking Session 2 – Dependency-Oriented Thinking as a Formal Approach (C) Ganesh Prasad, Eigner Pty Ltd
  17. 17. Agenda ● The BAIT Model of the enterprise ● Entities and Relationships in the TOGAF Model ● The core elements applicable to Analysis and Design (Design Artifacts) ● Dependency Principles ● The Method (C) Ganesh Prasad, Eigner Pty Ltd
  18. 18. A Few Words on BAIT (C) Ganesh Prasad, Eigner Pty Ltd
  19. 19. How should an architect view “applications”? ● ● The literal view of systems does not provide architectural insights The Application layer of BAIT is to be viewed functionally, not physically (C) Ganesh Prasad, Eigner Pty Ltd
  20. 20. The Layered view of Applications ● ● The correct way to see the Application layer is as logical groupings of business capabilities Physical systems (hardware and software) are Technology layer entities used to implement these capabilities (C) Ganesh Prasad, Eigner Pty Ltd
  21. 21. Interdependencies between BAIT layers ● The Application and Information layers always go hand in hand (C) Ganesh Prasad, Eigner Pty Ltd
  22. 22. BAIT as a “Four I” model of SOA ● Intent – what is to be done ● Internal Cohesion – how functions hang together ● Interfaces and Integration – how functions interoperate ● Implementation – what the tangible, working system looks like (C) Ganesh Prasad, Eigner Pty Ltd
  23. 23. BAIT and “Operation-Oriented Architecture” ● Operations are the fundamental building blocks of an enterprise ● Determine operations (the steps of business processes) ● Group related operations together (based on internals and interfaces) ● Expose operations to external consumers ● Execute operations, either alone or in combination with others (C) Ganesh Prasad, Eigner Pty Ltd
  24. 24. BAIT versus TOGAF ● ● ● ● ● BAIT is only a framework It shows how to view an enterprise but doesn't show what comprises each layer We need a model that is based on BAIT to define a generic set of entities at each layer A good model to use is TOGAF TOGAF is based on industry experience and practice, and is comprehensive yet generic (C) Ganesh Prasad, Eigner Pty Ltd
  25. 25. TOGAF as a well-known set of dependencies ● ● TOGAF's vocabulary includes “viewpoints”, which are subsets of the entities that make up the model of an enterprise We can mine this rich set of data to search for dependency relationships (C) Ganesh Prasad, Eigner Pty Ltd
  26. 26. Enterprise-Level Entities and Relationships (C) Ganesh Prasad, Eigner Pty Ltd
  27. 27. Business Layer Entities and Relationships (C) Ganesh Prasad, Eigner Pty Ltd
  28. 28. Business Layer Design Artifacts ● Not all Business Layer entities are important to an analyst or designer (C) Ganesh Prasad, Eigner Pty Ltd
  29. 29. Application Layer Entities and Relationships (C) Ganesh Prasad, Eigner Pty Ltd
  30. 30. A Detailed Look at “Applications” (C) Ganesh Prasad, Eigner Pty Ltd
  31. 31. Application Layer Design Artifacts ● Note the two types of “applications” formed by grouping Operations in two different ways (C) Ganesh Prasad, Eigner Pty Ltd
  32. 32. Information Layer Entities and Relationships (C) Ganesh Prasad, Eigner Pty Ltd
  33. 33. Information Layer Design Artifacts (C) Ganesh Prasad, Eigner Pty Ltd
  34. 34. Technology Layer Entities and Relationships (C) Ganesh Prasad, Eigner Pty Ltd
  35. 35. Technology Layer Design Artifacts (C) Ganesh Prasad, Eigner Pty Ltd
  36. 36. Design Artifacts by BAIT Layer (C) Ganesh Prasad, Eigner Pty Ltd
  37. 37. Dependency Principles by BAIT Layer (C) Ganesh Prasad, Eigner Pty Ltd
  38. 38. The Formal Dependency-Oriented Method ● ● Starting at the Business layer, identify the Key Design Artifacts and apply Dependency Principles to arrive at an optimal design Rinse and repeat at the next lower level (C) Ganesh Prasad, Eigner Pty Ltd
  39. 39. Dependency-Oriented Thinking Session 3 – The Business Layer (C) Ganesh Prasad, Eigner Pty Ltd
  40. 40. Agenda ● Business Intent ● The Chain from Vision to Process Step ● Traceability and Minimalism ● The role of Domain Insight ● Dealing with changing requirements (intent versus detail) (C) Ganesh Prasad, Eigner Pty Ltd
  41. 41. Business Layer Design Artifacts (C) Ganesh Prasad, Eigner Pty Ltd
  42. 42. Vision and Mission ● Vision – your idea of Utopia ● Mission – your role in bringing about that Utopia ● Together referred to as “Goal” in TOGAF (C) Ganesh Prasad, Eigner Pty Ltd
  43. 43. The hidden role of Strategy ● Strategy shapes organisations ● The same Mission may be accomplished in different ways (C) Ganesh Prasad, Eigner Pty Ltd
  44. 44. Business Functions are largely Stable ● ● Changes in Strategy tend to impact Business Processes, but curiously, need not impact Business Functions once established Changes in Business Function are known as “restructures” (C) Ganesh Prasad, Eigner Pty Ltd
  45. 45. Function, Process and Process Step ● Function is both Structure and mini-Mission ● Processes are what Functions “do” ● Processes are composed of Steps (which may or may not be reusable) (C) Ganesh Prasad, Eigner Pty Ltd
  46. 46. The Traceability Principle ● Think of Traceability as a chain of “existential dependencies” ● It's a discipline that makes a business “lean and mean” (C) Ganesh Prasad, Eigner Pty Ltd
  47. 47. The Minimalism Principle ● “The simplest way to get a job done” ● A discipline that leads to agility (C) Ganesh Prasad, Eigner Pty Ltd
  48. 48. Domain Insight ● Helps in applying the Traceability and Minimalism principles ● More Art than Science ● Think of examples from your own organisation (C) Ganesh Prasad, Eigner Pty Ltd
  49. 49. Changing Requirements ● Intent versus Detail (C) Ganesh Prasad, Eigner Pty Ltd
  50. 50. Dependency-Oriented Thinking Session 4 – Process Design (C) Ganesh Prasad, Eigner Pty Ltd
  51. 51. Agenda ● ● ● ● The generic business process Human workflow and asynchronous process steps Orchestration and Choreography "Orchestrable" and "Choreographable" Operations (C) Ganesh Prasad, Eigner Pty Ltd
  52. 52. The Crucial Design Step between Process and Process Step ● How should Process Steps be coordinated into a Process? ● Design Exercise (C) Ganesh Prasad, Eigner Pty Ltd
  53. 53. Top-Down Design of the Business Layer (C) Ganesh Prasad, Eigner Pty Ltd
  54. 54. Orchestrated Processes ● The dependency relationships in an orchestrated process mirror the flow of control (C) Ganesh Prasad, Eigner Pty Ltd
  55. 55. Choreographed Processes ● The dependency relationships bear no resemblance to the flow of control (C) Ganesh Prasad, Eigner Pty Ltd
  56. 56. A Simple Business Process ● An Event Trigger followed by one or more Process Steps (C) Ganesh Prasad, Eigner Pty Ltd
  57. 57. A Generic Business Process ● A generic process does not run to completion in one go ● It may pause, and resume based on intermediate event triggers (C) Ganesh Prasad, Eigner Pty Ltd
  58. 58. “Non-blocking” Processes and Callback ● ● It's often efficient for a paused process to do something else instead of idly waiting for an event trigger This model enables the design of long-running processes (C) Ganesh Prasad, Eigner Pty Ltd
  59. 59. Human workflow as a long-running process ● ● Non-blocking process design can be used to design human workflow Pause and Resume junctures occur wherever human interaction is required (C) Ganesh Prasad, Eigner Pty Ltd
  60. 60. Dependencies in Orchestrable and Choreographable Operations ● Recall the different graphs for dependency versus flow of control ● The dependencies are similar, just in different places (C) Ganesh Prasad, Eigner Pty Ltd
  61. 61. The Overhyped Notion of “Reuse” ● ● Reuse is not a first-class benefit It's unreasonable to expect reuse from a SOA initiative if the process steps of a business are not inherently reusable (C) Ganesh Prasad, Eigner Pty Ltd
  62. 62. The potential for reuse is first seen at the Business layer (C) Ganesh Prasad, Eigner Pty Ltd
  63. 63. Lower layers should confirm if reuse is in fact possible (C) Ganesh Prasad, Eigner Pty Ltd
  64. 64. Dependency-Oriented Thinking Session 5 – The Application Layer (C) Ganesh Prasad, Eigner Pty Ltd
  65. 65. Agenda ● ● ● What is an "Application"? The principles of High Cohesion and Decoupling of Internals from Interfaces "Goldilocks" Signatures (Stability versus Precision of Interfaces) ● Variants, Versions and dealing with change ● Shared Semantics for effective Choreography (C) Ganesh Prasad, Eigner Pty Ltd
  66. 66. Application Layer Design Artifacts ● Process Steps at the Business layer map to Operations at the Application layer (C) Ganesh Prasad, Eigner Pty Ltd
  67. 67. Application Layer vs Technology Layer ● The Technology layer provides a detailed “street view” ● The Application layer provides a high-level “map view” (C) Ganesh Prasad, Eigner Pty Ltd
  68. 68. The Relationship between Design Artifacts at the Application and Information Layers ● Products are defined by a shared Internal Data Model ● Services are defined by a shared Interface Data Model (C) Ganesh Prasad, Eigner Pty Ltd
  69. 69. The Cohesion and Coupling Principles ● At each layer, there is an internal focus (Cohesion) and an external focus (Coupling) (C) Ganesh Prasad, Eigner Pty Ltd
  70. 70. Cohesion Exercise 1 (C) Ganesh Prasad, Eigner Pty Ltd
  71. 71. (C) Ganesh Prasad, Eigner Pty Ltd
  72. 72. (C) Ganesh Prasad, Eigner Pty Ltd
  73. 73. Cohesion Exercise 2 (C) Ganesh Prasad, Eigner Pty Ltd
  74. 74. (C) Ganesh Prasad, Eigner Pty Ltd
  75. 75. (C) Ganesh Prasad, Eigner Pty Ltd
  76. 76. (C) Ganesh Prasad, Eigner Pty Ltd
  77. 77. Cohesion Exercise 3 (C) Ganesh Prasad, Eigner Pty Ltd
  78. 78. (C) Ganesh Prasad, Eigner Pty Ltd
  79. 79. (C) Ganesh Prasad, Eigner Pty Ltd
  80. 80. Simultaneous Groupings ● It is possible to group entities in more than one way at the same time (C) Ganesh Prasad, Eigner Pty Ltd
  81. 81. Simultaneous Grouping of Operations ● A dynamic grouping of Operations is a Process ● A static grouping of Operations is an Application (Product or Service) (C) Ganesh Prasad, Eigner Pty Ltd
  82. 82. Anatomy of a Product ● Grouping by internals is the design principle ● External access is “canned” through a relatively rigid native interface (C) Ganesh Prasad, Eigner Pty Ltd
  83. 83. Anatomy of a Service ● Grouping by Interfaces is the design principle ● External access is the very raison d'être! (C) Ganesh Prasad, Eigner Pty Ltd
  84. 84. SOFEA – Architecture for Front-ends ● For the best of both worlds, build user interfaces on top of services (C) Ganesh Prasad, Eigner Pty Ltd
  85. 85. Demystifying Versioning ● Variants and Versions ● Interfaces and Internals ● (C) Ganesh Prasad, Eigner Pty Ltd
  86. 86. Variants ● A Variant is an operation “flavour” that may coexist with other flavours without deprecating them (C) Ganesh Prasad, Eigner Pty Ltd
  87. 87. Versions ● There is always a latest Version that deprecates earlier ones (C) Ganesh Prasad, Eigner Pty Ltd
  88. 88. Interfaces as Abstractions of Operations ● An Interface represents the Business Intent of an Operation ● Details are taken care of by implementation variants (“internals”) (C) Ganesh Prasad, Eigner Pty Ltd
  89. 89. The Impact of Changing Interfaces ● Consumers of operations have a dependency on the interface ● Changes to operations may impact consumers to different degrees (C) Ganesh Prasad, Eigner Pty Ltd
  90. 90. Impacts classified by Version Type ● Versions can be thought of as “x.y.z” ● The only criterion for classification is the level of impact from a change ● A term like “bug fix version” makes no sense from a dependency perspective (C) Ganesh Prasad, Eigner Pty Ltd
  91. 91. Changes to Internals ● A change to the internal logic of an operation with no visibility at the interface changes only the implementation version, not the minor or major versions (C) Ganesh Prasad, Eigner Pty Ltd
  92. 92. “Minor” Changes to Interfaces ● ● ● Some kinds of changes to operations are visible at the interface, but do not impact consumers in a practical sense They only change the minor version number Minor version changes are “backward compatible” (continue to support older consumers while supporting new ones) (C) Ganesh Prasad, Eigner Pty Ltd
  93. 93. Types of changes that do not break an interface ● Interfaces that become more lenient tend not to impact consumers (C) Ganesh Prasad, Eigner Pty Ltd
  94. 94. Major Changes to Interfaces ● A change to an operation that is not only visible at the interface but also forces a change to the consumer is a change to the major version number (C) Ganesh Prasad, Eigner Pty Ltd
  95. 95. Types of changes that break an interface ● An interface that becomes stricter or more restrictive tends to impact consumers (C) Ganesh Prasad, Eigner Pty Ltd
  96. 96. Version Mapping Convention ● ● Exploit the dependency level expressed by the “x.y.z” version numbering scheme The minor version number should always refer to the latest implementation version (C) Ganesh Prasad, Eigner Pty Ltd
  97. 97. Version Mapping Convention, cont'd ● The major version number should always map to the latest minor version (C) Ganesh Prasad, Eigner Pty Ltd
  98. 98. Version Routing Exercise ● Which implementation version will be executed by this call? (C) Ganesh Prasad, Eigner Pty Ltd
  99. 99. Solution ● Thumb rule – It's always the latest version at the lower level (C) Ganesh Prasad, Eigner Pty Ltd
  100. 100. (C) Ganesh Prasad, Eigner Pty Ltd
  101. 101. (C) Ganesh Prasad, Eigner Pty Ltd
  102. 102. The “Minor Version Lockstep Dependency” ● When dealing with multiple variants, changes to the minor version number of one variant will require corresponding changes to the minor version numbers of all the other variants! (C) Ganesh Prasad, Eigner Pty Ltd
  103. 103. The “Goldilocks Signature” Principle ● A balance is required between the stability and the precision of an operation's interface (C) Ganesh Prasad, Eigner Pty Ltd
  104. 104. What is a “Well-Designed” Interface? ● Well-designed interfaces are stable in the face of change ● i.e., they do not create unnecessary dependencies (C) Ganesh Prasad, Eigner Pty Ltd
  105. 105. Why the scheme works (C) Ganesh Prasad, Eigner Pty Ltd
  106. 106. Managing Breaking Changes (C) Ganesh Prasad, Eigner Pty Ltd
  107. 107. Managing Breaking Changes, cont'd (C) Ganesh Prasad, Eigner Pty Ltd
  108. 108. Managing Non-Breaking Changes (C) Ganesh Prasad, Eigner Pty Ltd
  109. 109. Dependency-Oriented Thinking Session 6 – The Information Layer (C) Ganesh Prasad, Eigner Pty Ltd
  110. 110. Agenda ● "Data on the Outside versus Data on the Inside" ● Elements of Low Coupling ● Type Hierarchy and Interface Abstraction ● Identity Association ● Context versus Content (C) Ganesh Prasad, Eigner Pty Ltd
  111. 111. Information Layer Design Artifacts ● ● Only two major categories – “Data on the Outside” and “Data on the Inside” Deceptively simple! (C) Ganesh Prasad, Eigner Pty Ltd
  112. 112. Variants from a Data Perspective ● ● A single abstract interface can map to multiple concrete implementation variants But the -------- ------ remains the same (C) Ganesh Prasad, Eigner Pty Ltd
  113. 113. The Notion of “Context” ● “Context” is a way of formalising aspects of an operation that are not core to its business intent (C) Ganesh Prasad, Eigner Pty Ltd
  114. 114. Low Coupling, or “Need to Know” ● A form of minimalism applied to data (C) Ganesh Prasad, Eigner Pty Ltd
  115. 115. Decoupling of Internal Data from Interface Data ● To be decoupled, interface and internal data models cannot have dependencies on each other (C) Ganesh Prasad, Eigner Pty Ltd
  116. 116. The Domain-Specific Data Dictionary ● Efficiencies are still possible! ● The internal and interface data models do talk about similar entities (C) Ganesh Prasad, Eigner Pty Ltd
  117. 117. What a Data Dictionary Looks Like ● Entities and Value Objects are defined here (C) Ganesh Prasad, Eigner Pty Ltd
  118. 118. Types and Instances ● Both internal and interface data models define instances of types ● Types common to both should be in the common data dictionary (C) Ganesh Prasad, Eigner Pty Ltd
  119. 119. Data Model Example ● Internal and interface data models have some elements in common and some elements that are unique to each (C) Ganesh Prasad, Eigner Pty Ltd
  120. 120. The Relationship between Interface/Internals and Type Hierarchy ● This is why Application and Information layer design is done together! (C) Ganesh Prasad, Eigner Pty Ltd
  121. 121. A Problem We Glossed Over! ● ● ● ● ● Abstract interfaces are stable and shield consumers from many internal changes, but... How does a consumer know which concrete data elements to send and receive? The answer becomes clear if we jettison a fallacy of SOA – that a formal “interface contract” is sufficient for a consumer to begin transacting with an operation In practice, designers of consuming applications always discuss with the designers of operations and negotiate data exchange Use this knowledge to design pragmatic design processes (C) Ganesh Prasad, Eigner Pty Ltd
  122. 122. Building an abstract interface to an existing implementation (C) Ganesh Prasad, Eigner Pty Ltd
  123. 123. When a new consumer is supported by an existing variant (C) Ganesh Prasad, Eigner Pty Ltd
  124. 124. When a new consumer is not supported by an existing variant (C) Ganesh Prasad, Eigner Pty Ltd
  125. 125. The Internal Data Model ● Deals with Entities rather than Value objects (C) Ganesh Prasad, Eigner Pty Ltd
  126. 126. The Interface Data Model ● Never references Entities! (That would be tight coupling) ● Value objects are packaged into messages that are exchanged ● Value objects can also be called “representations” (C) Ganesh Prasad, Eigner Pty Ltd
  127. 127. The Identity Association Principle ● A common design error (C) Ganesh Prasad, Eigner Pty Ltd
  128. 128. How Identity Association Works ● Consumers must not develop dependencies on internal data entities (C) Ganesh Prasad, Eigner Pty Ltd
  129. 129. Revisiting the Goldilocks Signature Principle ● Think about stability and precision afresh from the viewpoint of data (C) Ganesh Prasad, Eigner Pty Ltd
  130. 130. Message Data Model ● The Goldilocks Signature principle is supported by this model (C) Ganesh Prasad, Eigner Pty Ltd
  131. 131. A Terrible Way to Implement Extensible Interfaces ● Extensions gradually destroy structure and meaning (C) Ganesh Prasad, Eigner Pty Ltd
  132. 132. Extensibility with Control ● Setting up a Type Hierarchy supports change gracefully (C) Ganesh Prasad, Eigner Pty Ltd
  133. 133. Isolation of Context from Content ● Keep extraneous considerations separate from the core business intent (C) Ganesh Prasad, Eigner Pty Ltd
  134. 134. The Context Type Hierarchy ● Context has its own hierarchy with a single, optional base type called “Context Type” (C) Ganesh Prasad, Eigner Pty Ltd
  135. 135. Supporting New Variants that Differ only in Context ● Building in an optional context element into every interface is insurance against breaking change (C) Ganesh Prasad, Eigner Pty Ltd
  136. 136. Context of Output Data ● ● Context of input data is used to determine appropriate variants to invoke Context of output data can support choreographable operations (C) Ganesh Prasad, Eigner Pty Ltd
  137. 137. Service Content and Process Context ● When considering a single operation, some data elements may be considered content rather than context (i.e., they follow from the business intent) (C) Ganesh Prasad, Eigner Pty Ltd
  138. 138. Modelling Service Content as Context ● Sometimes, a process may have operations with common content ● This content could be considered to be their common context (C) Ganesh Prasad, Eigner Pty Ltd
  139. 139. Context By Reference ● ● Operations sharing “content context” with other operations can then deal with references to common data These reference IDs are a form of context that is common to the process (C) Ganesh Prasad, Eigner Pty Ltd
  140. 140. Context By Reference, cont'd ● Subsequent operations refer to common content through the context ID (C) Ganesh Prasad, Eigner Pty Ltd
  141. 141. Example – Bringing Application and Data Layer Principles Together (C) Ganesh Prasad, Eigner Pty Ltd
  142. 142. The Type Hierarchy supporting Late Binding (C) Ganesh Prasad, Eigner Pty Ltd
  143. 143. “Schema Validation” (C) Ganesh Prasad, Eigner Pty Ltd
  144. 144. Routing/Binding from Interface to Implementation (C) Ganesh Prasad, Eigner Pty Ltd
  145. 145. Dependency-Oriented Thinking Session 7 – The Technology Layer (C) Ganesh Prasad, Eigner Pty Ltd
  146. 146. Agenda ● ● ● ● ● Standards, Bundling and Tooling Standards and Standards Families - SOAP and REST Bundling - Data, Logic, Physical Components and their association Tooling - the core and supporting components of a distributed solution Implementing a logical design (C) Ganesh Prasad, Eigner Pty Ltd
  147. 147. Technology Layer – The Design of Implementation ● Not implementation itself, but the design of implementation (C) Ganesh Prasad, Eigner Pty Ltd
  148. 148. Technology Layer Design Artifacts ● At the most abstract level, Technology consists of three elements ● They are Standards, Tooling and Bundling (C) Ganesh Prasad, Eigner Pty Ltd
  149. 149. Bundling Decisions ● “Where to place what” is a bundling decision (C) Ganesh Prasad, Eigner Pty Ltd
  150. 150. Logic Bundling Principle ● This is a variant of the Cohesion principle – what belongs together must go together (C) Ganesh Prasad, Eigner Pty Ltd
  151. 151. The State or “Stickiness” Principle ● ● Placing logic on one physical component as opposed to another could be the difference between a stateless and a stateful system Stateless systems have significant architectural advantages on account of their reduced bundling dependencies (scalability, failure recovery) (C) Ganesh Prasad, Eigner Pty Ltd
  152. 152. Topology “Hotspots” ● ● The way physical components are connected or “wired” together can create bundling dependencies of another kind Performance bottlenecks and single points of failure are common results of topology-related bundling decisions (C) Ganesh Prasad, Eigner Pty Ltd
  153. 153. Reference Architecture of a Deployable Application (C) Ganesh Prasad, Eigner Pty Ltd
  154. 154. Determining Standards for Orchestrable Operations (C) Ganesh Prasad, Eigner Pty Ltd
  155. 155. Determining Standards for Choreographable Operations (C) Ganesh Prasad, Eigner Pty Ltd
  156. 156. Determining Tooling Components (C) Ganesh Prasad, Eigner Pty Ltd
  157. 157. Determining Deployment Bundles (C) Ganesh Prasad, Eigner Pty Ltd
  158. 158. Determining Description Bundles (C) Ganesh Prasad, Eigner Pty Ltd
  159. 159. The Service Provider (C) Ganesh Prasad, Eigner Pty Ltd
  160. 160. The Service Consumer (C) Ganesh Prasad, Eigner Pty Ltd
  161. 161. Legacy Systems (C) Ganesh Prasad, Eigner Pty Ltd
  162. 162. Functional Symbols for Tooling ● From Gregor Hohpe's “Enterprise Integration Patterns” (C) Ganesh Prasad, Eigner Pty Ltd
  163. 163. Additional Symbol for Tooling ● Internal logic has no symbol in “Enterprise Integration Patterns” ● We have to “roll our own”! (C) Ganesh Prasad, Eigner Pty Ltd
  164. 164. The Core Technology Layer Components ● Service Container ● Broker ● Process Coordinator (C) Ganesh Prasad, Eigner Pty Ltd
  165. 165. Service Container ● Implements Business Logic and exposes it (C) Ganesh Prasad, Eigner Pty Ltd
  166. 166. How a Service Container is Used ● The logic implemented by the Service Container and exposed as an operation is consumed by a service consumer (C) Ganesh Prasad, Eigner Pty Ltd
  167. 167. Broker ● Mediates access to existing logic (C) Ganesh Prasad, Eigner Pty Ltd
  168. 168. How a Broker is Used ● ● ● The special protocols and interfaces of legacy systems are hidden through “adapters” Data formats are converted through “transformer” logic Physical locations are hidden and variants are abstracted through “mediator” logic (C) Ganesh Prasad, Eigner Pty Ltd
  169. 169. Process Coordinator ● Combines existing operations into business processes ● More relevant for orchestrable operations (C) Ganesh Prasad, Eigner Pty Ltd
  170. 170. How a Process Coordinator is Used ● The Process Coordinator runs stateful process logic (orchestration) ● It invokes operations as required ● The operations themselves are stateless (C) Ganesh Prasad, Eigner Pty Ltd
  171. 171. The Components Working Together ● The three core technology components are designed to work together (C) Ganesh Prasad, Eigner Pty Ltd
  172. 172. Broker Design Error 1 ● Topology Hotspot – the Broker is not meant to be a centralised component (C) Ganesh Prasad, Eigner Pty Ltd
  173. 173. Broker Design Error 2 ● Always use the right tool for the job ● The Broker is a mediator ● Do not use the Broker as a Service Container ● Do not use the Broker as a Process Coordinator (C) Ganesh Prasad, Eigner Pty Ltd
  174. 174. Dependencies introduced by SOAP ● Static Description dependency ● Bundling dependency ● Synchronisation dependency (C) Ganesh Prasad, Eigner Pty Ltd
  175. 175. Dependencies introduced by REST ● Semantic dependency ● Synchronisation dependency (C) Ganesh Prasad, Eigner Pty Ltd
  176. 176. What is a “Semantic Dependency”? ● The requirement for a system to resolve ambiguity (C) Ganesh Prasad, Eigner Pty Ltd
  177. 177. The Problem with WSDL ● WSDL is a static description of a group of operations ● Three dependencies arise from this design (C) Ganesh Prasad, Eigner Pty Ltd
  178. 178. The WSDL Dependency Multiplied ● A popular service can have many consumers that are then dependent on its interface contract (C) Ganesh Prasad, Eigner Pty Ltd
  179. 179. Cascading Impacts of Change ● WSDL is a dependency hotspot (C) Ganesh Prasad, Eigner Pty Ltd
  180. 180. Calculating the Brittleness of WSDL ● ● A WSDL file describes exactly 1 service consisting of 5 operations, each with an input and an output document If any given document has a 10% probability of changing, what is the probability of the WSDL file changing? (C) Ganesh Prasad, Eigner Pty Ltd
  181. 181. Strategies to minimise change ● Dependency principles can be applied to minimise the effects of change due to the WSDL dependency hotspot (C) Ganesh Prasad, Eigner Pty Ltd
  182. 182. Dependencies arising from REST's Hypermedia Constraints ● ● There is no static description of operations in REST (WADL is not RESTian) There are still 3 dependencies (C) Ganesh Prasad, Eigner Pty Ltd
  183. 183. Miscellaneous Technology Layer Considerations (C) Ganesh Prasad, Eigner Pty Ltd
  184. 184. The “Canonical Data Model” Fallacy ● A Canonical Data Model could be too heavyweight and rigid (C) Ganesh Prasad, Eigner Pty Ltd
  185. 185. Domain Data Models ● Domain Data Models are more flexible and federation-friendly (C) Ganesh Prasad, Eigner Pty Ltd
  186. 186. “The SOA Ecosystem” ● The logical view of service providers and consumers (C) Ganesh Prasad, Eigner Pty Ltd
  187. 187. Processes as Service Consumers ● Processes are a special type of service consumer (C) Ganesh Prasad, Eigner Pty Ltd
  188. 188. Processes as Operations ● ● A process abstracts coarse-grained logic This coarse-grained logic may in turn be invoked by a service consumer (C) Ganesh Prasad, Eigner Pty Ltd
  189. 189. Processes in the SOA Ecosystem ● A process is both a service provider and a service consumer (C) Ganesh Prasad, Eigner Pty Ltd
  190. 190. Operation Signatures implemented in SOAP and REST (C) Ganesh Prasad, Eigner Pty Ltd
  191. 191. Dependency-Oriented Thinking Session 8 – Worked-Out Examples (C) Ganesh Prasad, Eigner Pty Ltd
  192. 192. Agenda ● ● Option 1: Detailed analysis of participants' own design problems Option 2: Canned case studies: ● ● ● ● Conducting a post-mortem based on dependency principles Designing a system based on an orchestrated business process Designing a system based on a choreographed business process Designing an interface data model to cater to change (Type Hierarchy and Goldilocks Signatures) (C) Ganesh Prasad, Eigner Pty Ltd
  193. 193. Post-Mortem Example (C) Ganesh Prasad, Eigner Pty Ltd
  194. 194. Exercise – Post-Mortem ● What is wrong with this design? (C) Ganesh Prasad, Eigner Pty Ltd
  195. 195. A More Flexible Design (C) Ganesh Prasad, Eigner Pty Ltd
  196. 196. Synchronous Orchestrated Process (C) Ganesh Prasad, Eigner Pty Ltd
  197. 197. Banking Application Sequence Diagram (C) Ganesh Prasad, Eigner Pty Ltd
  198. 198. Processes, Services and Operations ● Dynamic grouping of operations into a single process “Open Account” ● Static grouping of operations into 3 services (C) Ganesh Prasad, Eigner Pty Ltd
  199. 199. High-Level Solution Diagram – Banking (C) Ganesh Prasad, Eigner Pty Ltd
  200. 200. Asynchronous Orchestrated Process (C) Ganesh Prasad, Eigner Pty Ltd
  201. 201. Insurance Application Sequence Diagram (C) Ganesh Prasad, Eigner Pty Ltd
  202. 202. Processes, Services and Operations ● Two dynamic groupings (processes): Get Quote and Purchase Policy ● 6 static groupings (services) (C) Ganesh Prasad, Eigner Pty Ltd
  203. 203. High-Level Solution Diagram – Insurance (C) Ganesh Prasad, Eigner Pty Ltd
  204. 204. Choreographed Process (C) Ganesh Prasad, Eigner Pty Ltd
  205. 205. A Maze Game (C) Ganesh Prasad, Eigner Pty Ltd
  206. 206. Allowed Movements (C) Ganesh Prasad, Eigner Pty Ltd
  207. 207. Cell Identifiers – Identity Association ● A cell's location must not be derivable from its name or vice-versa (C) Ganesh Prasad, Eigner Pty Ltd
  208. 208. The Design – Hypermedia Constraints (C) Ganesh Prasad, Eigner Pty Ltd
  209. 209. Interaction at the start of the game (C) Ganesh Prasad, Eigner Pty Ltd
  210. 210. Interaction in the middle of the game (C) Ganesh Prasad, Eigner Pty Ltd
  211. 211. Interaction at the end of the game (C) Ganesh Prasad, Eigner Pty Ltd
  212. 212. Managing Change (C) Ganesh Prasad, Eigner Pty Ltd
  213. 213. The 70s ● Banking in a simpler (and more rigid) time (C) Ganesh Prasad, Eigner Pty Ltd
  214. 214. Service Interfaces to Support Arbitrary Clients (C) Ganesh Prasad, Eigner Pty Ltd
  215. 215. Variants of Similar Operations (C) Ganesh Prasad, Eigner Pty Ltd
  216. 216. Standardised Variants, Abstract Interfaces (C) Ganesh Prasad, Eigner Pty Ltd
  217. 217. Processes as Standardised Operation Variants (C) Ganesh Prasad, Eigner Pty Ltd
  218. 218. Supporting a New Variant (C) Ganesh Prasad, Eigner Pty Ltd
  219. 219. Deployment of Components (C) Ganesh Prasad, Eigner Pty Ltd
  220. 220. A More Likely Scenario! (C) Ganesh Prasad, Eigner Pty Ltd

×