53
Software Design and Development Conference 2015 Mark Richards Hands-on Software Architect Author of Enterprise Messaging Video Series (O’Reilly) Author of Java Message Service 2nd Edition (O’Reilly) Co-author of Software Architecture Fundamentals Video Series (O'Reilly) Software Architecture Patterns

Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

  • Upload
    others

  • View
    55

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

Software Design and Development Conference 2015

Mark RichardsHands-on Software ArchitectAuthor of Enterprise Messaging Video Series (O’Reilly)Author of Java Message Service 2nd Edition (O’Reilly)Co-author of Software Architecture Fundamentals Video Series (O'Reilly)

Software Architecture Patterns

Page 2: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

Software Architecture Fundamentals Video Series Enterprise Messaging Video Series

Page 3: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

introductionlayered architecture patternevent-driven architecture patternmicrokernel architecture patternspace-based architecture pattern

agenda

Page 4: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

Software Architecture Pattern Analysis

Page 5: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

module

module

module

module

module

module

module

module

module

module

module

modulemodule

module

module

module

module

module

module

module

module module

module

module

modulemodule

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

modulemodule

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

module

Page 6: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

componentmodule

module

module

module

module

module

componentan encapsulated unit of software consisting of one or more modules that has a specific role and responsibility in the system

Page 7: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

componentcomponent

component

component

component

component

component

component

component

?

Page 8: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

how do components interact?does the architecture scale?how responsive is the architecture?is there a logical flow to the components?what are the deployment characteristics?how does the architecture respond to change?is the architecture extensible and if so how?how maintainable is the architecture?

how are components classified?

Page 9: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

architecture patterns help define the basic characteristics and behavior of the

application

Page 10: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

layered architecture

presentation layer

business layer

persistence layer

database layer

component component component

component component component

component component component

Page 11: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

presentation layer

business layer

persistence layer

database layer

component component

component component

component component

component

component

component

layered architecture

request

Page 12: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

layered architecture

presentation layer

business layer

persistence layer

database layer

component component component

component component component

component component component

separation of concerns

Page 13: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

layered architecture

presentation layer component component component

business layer component component component

persistence layer component component component

database layer

layers of isolation

database layer

presentation layer component component component

persistence layer component component component

business layer component component component

Page 14: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

persistence layer component component component

database layer

layered architecture

presentation layer

business layer

component component component

component component component

hybrids and variants

services layer component component component

Page 15: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

persistence layer component component component

database layer

layered architecture

presentation layer

business layer

component component component

component component component

hybrids and variants

services layer component component component

Page 16: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

persistence layer component component component

database layer

layered architecture

presentation layer component component component

business layer component component component

hybrids and variants

persistence layer component component component

presentation layer component component component

business layer component component component

com

pone

nt

com

pone

nt

layer

Page 17: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

database layer

layered architecturehybrids and variants

persistence layer component component component

presentation layer component component component

business layer component component component

com

pone

nt

com

pone

nt

layer

com

pone

nt

com

pone

nt

layer

persistence layer component component component

presentation layer component component component

business layer component component component

Page 18: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

layered architecture

considerations

tends to lend itself towards monolithic applications

watch out for the architecture sinkhole anti-pattern

good general purpose architecture and a good starting point for most systems

Page 19: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

layered architecture

analysis overall agility deployment testability performance scalability development complexity loose coupling

Page 20: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

event-driven architecture

mediator topology broker topology

Page 21: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

event queue

event-driven architecture

mediatorevent

event channel

event channel

event channel

mediator topology

event

processorevent

module module

module module

processorevent

module module

module module

processorevent

module module

module module

processorevent

module module

module module

processorevent

module module

module module

Page 22: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

event queue mediator

event

event channel

event channel

event channel

mediator topology

event

processorevent

module module

module module

processorevent

module module

module module

processorevent

module module

module module

processorevent

module module

module module

processorevent

module module

module module

event-driven architecture

Page 23: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

process engine

adjustmentprocess

notificationprocess

quoteprocess

claimsprocess

customerprocess

you move...

you moved!

notify insurednotify

insured

change address

recalc quote

update claims

adjust claimschange

addressrecalc quote

update claims

adjust claims

event-driven architecture

Page 24: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

broker topology

event processorevent

module module

module module

processorevent

module module

module module

event channel

event channel

event-driven architecture

Page 25: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

event channel

event channel

event channel

broker topology

event processorevent

module module

module module

processorevent

module module

module module

processorevent

module module

module module

processorevent

module module

module module

processorevent

module module

module module

event-driven architecture

Page 26: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

you move...customer process

notification process adjustment process

quote process claims process

you moved!

change address

recalc quote

update claims

change address

update claims

event-driven architecture

Page 27: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

considerations contract creation, maintenance,

and versioning can be difficult

must address remote process availability or unresponsiveness

reconnection logic on server restart or failure must be addressed

event-driven architecture

Page 28: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

analysis overall agility deployment testability performance scalability development complexity loose coupling

event-driven architecture

Page 29: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

microkernel architecture

plug-in component

plug-in component

plug-in component

plug-in component

plug-in component

plug-in component

core system

(a.k.a. plug-in architecture pattern)

Page 30: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

microkernel architecture

plug-in module

core system

architectural components

minimal functionality to run systemgeneral business rules and logicno custom processing

standalone independent modulespecific additional rules or logic

Page 31: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

microkernel architecture

Page 32: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

check other stuff...

check audit writes

check sql calls

check contract

standards

check header standards

check interceptors

microkernel architecture

source validation tool

read source files

validation report

Page 33: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

claims processing

MA module

NY module

CA module

GA module

NH module

TX module

NY module

microkernel architecture

Page 34: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

plug-in component 1

plug-in component 2

plug-in component 3

plug-in component 4

core system

registryregistry

1: <location>, <contract>2: <location>, <contract>3: <location>, <contract>4: <location>, <contract>

microkernel architecture

Page 35: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

registrymicrokernel architecture

static { pluginRegistry.put(NAMING, "ValidatorNamingPlugin"); pluginRegistry.put(SYSOUT, "ValidatorSysoutPlugin"); pluginRegistry.put(AUDIT, "ValidatorAuditPlugin"); pluginRegistry.put(TODO, "ValidatorTodoPlugin"); pluginRegistry.put(COMMENTS, "ValidatorCommentsPlugin"); pluginRegistry.put(SVC_CALLS, null); }

Page 36: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

registrymicrokernel architecture

private String executeChecks(String moduleName) throws Exception { for (Map.Entry<String, String> entry : pluginRegistry.entrySet()) { if (entry.getValue() != null) { Class<?> c = Class.forName(PLUGIN_PKG + entry.getValue()); Constructor<?> con = c.getConstructor(); ValidatorPlugin plugin = (ValidatorPlugin)con.newInstance(); data = plugin.execute(data); } } }

Page 37: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

plug-in component 1

plug-in component 2

plug-in component 3

plug-in component 4

core system

plug-in contracts

std

std

std

std

microkernel architecture

Page 38: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

microkernel architecture

plug-in contracts

public class ValidatorData { public String moduleName; //input public List<String> moduleContents; //input public String validationResults; //output}

public interface ValidatorPlugin { public ValidatorData execute(ValidatorData data);}

Page 39: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

considerations

can be embedded or used as part of another pattern

great pattern for product-based applications

great support for evolutionary design and incremental development

microkernel architecture

Page 40: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

analysis overall agility deployment testability performance scalability development complexity loose coupling

microkernel architecture

Page 41: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

let's talk about scalability for a moment...

web server app server

web server

web server

web server

web server

web server

web server

app server

app server

app server

app server

space-based architecture

Page 42: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

space-based architecture

db

processing unitprocessing unit processing unit

virtualized middleware

...

messaging grid data grid processing

griddeployment

manager

Page 43: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

space-based architecturearchitectural components

db

processing unitprocessing unit processing unit

virtualized middlewaremessaging

grid data grid processing grid

deployment manager

Page 44: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

processing unit

processing unit

module module module

data replication engine

in memory data

space-based architecture

Page 45: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

middlewaremessaging

grid

data grid

processing grid

deployment manager

space-based architecture

Page 46: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

middlewaremessaging

grid

data grid

processing grid

deployment manager

manages input request and session

space-based architecture

Page 47: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

middlewaremessaging

grid

data grid

processing grid

deployment manager

manages data replication between processing units

space-based architecture

------------------------ ------------ ------------

Page 48: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

middlewaremessaging

grid

data grid

processing grid

deployment manager

manages distributed request processing

space-based architecture

Page 49: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

middlewaremessaging

grid

data grid

processing grid

deployment manager

manages dynamic processing unit deployment

space-based architecture

Page 50: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

space-based architecture

product implementations

javaspacesgigaspacesibm object gridgemfirencacheoracle coherence

Page 51: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

it's all about variable scalability...

good for applications that havevariable load or inconsistent peak times

not a good fit for traditional large-scale relational database systems

relatively complex and expensive pattern to implement

space-based architecture

Page 52: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

analysis overall agility deployment testability performance scalability development complexity

space-based architecture

Page 53: Software Architecture Patterns - SDD Conferencesddconf.com › brands › sdd › library › Architecture_Patterns.pdf · Software Architecture Patterns. Software Architecture Fundamentals

Independent  ConsultantHands-­‐on  So*ware  ArchitectPublished  Author  /  Conference  Speaker

Mark  Richards

h<p://www.wmrichards.comh<p://www.linkedin.com/pub/mark-­‐richards/0/121/5b9

Software Architecture Patterns