event-based systems: architect's dream or developer's ... · architect's view...

11
DEBS 2007 Gregor Hohpe Event-Based Systems: Architect's Dream or Developer's Nightmare Event-Based Systems: Architect's Dream or Developer's Nightmare? Gregor Hohpe Software Engineer Google, Inc. www.eaipatterns.com 2 © 2007 Google, Inc. All rights reserved,

Upload: others

Post on 13-Jul-2020

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Event-BAsed Systems: Architect's Dream or Developer's ... · Architect's View Developer's View Loosely coupled Asynchronous Composable Scalable Real time Good bye, call stack Timing

DEBS 2007

Gregor Hohpe Event-Based Systems: Architect's Dream or Developer's Nightmare

Event-Based Systems:

Architect's Dream or

Developer's Nightmare?

Gregor Hohpe

Software Engineer

Google, Inc.

www.eaipatterns.com

2© 2007 Google, Inc. All rights reserved,

Page 2: Event-BAsed Systems: Architect's Dream or Developer's ... · Architect's View Developer's View Loosely coupled Asynchronous Composable Scalable Real time Good bye, call stack Timing

DEBS 2007

Gregor Hohpe Event-Based Systems: Architect's Dream or Developer's Nightmare

3© 2007 Google, Inc. All rights reserved,

4© 2007 Google, Inc. All rights reserved,

Architect's View Developer's View

� Loosely coupled

� Asynchronous

� Composable

� Scalable

� Real time

�Good bye, call stack

�Timing uncertainty

�Evolving system

�Complex Run-time

�Real headache

Page 3: Event-BAsed Systems: Architect's Dream or Developer's ... · Architect's View Developer's View Loosely coupled Asynchronous Composable Scalable Real time Good bye, call stack Timing

DEBS 2007

Gregor Hohpe Event-Based Systems: Architect's Dream or Developer's Nightmare

5© 2007 Google, Inc. All rights reserved,

Call Stack = Developer's Comfort Zone

• Command-and-control scheme

• Single thread of execution, easy to debug

• Predictable, we know who does what when

• What they taught us in CS 101

"Welcome to the real world…"

6© 2007 Google, Inc. All rights reserved,

The Real World Is Full Of Events

• Hide the new programming model

• "Doodleware":programming in pictures

• Make building simple solutions easy

• Vendor-specific terminology

• Expose the new programming model

• Better support in languages and tools

• Make building real solutions efficient

• Improve collective understanding

"Remember: I'm offering you the truth, nothing more."

Page 4: Event-BAsed Systems: Architect's Dream or Developer's ... · Architect's View Developer's View Loosely coupled Asynchronous Composable Scalable Real time Good bye, call stack Timing

DEBS 2007

Gregor Hohpe Event-Based Systems: Architect's Dream or Developer's Nightmare

7© 2007 Google, Inc. All rights reserved,

Taking the Red Pill

• Separate API from architecture

• Capture knowledge in design patterns

• Configuration is programming

• Use pictures, but not for programming

• Shift attention to run-time

• Think beyond development

• Look for the Killer App

"I know what you're thinking: Why didn't I take the blue pill?"

8© 2007 Google, Inc. All rights reserved,

API ≠ Architecture

• New technologies and programming models often proliferated by big platform & framework vendors.

• Often more attention is paid to the programming interface

as opposed to the programming model.

• Examples: Java JMS, Microsoft WCF ("Indigo"),

• Counter-example: Microsoft Workflow Foundation.

• Difficult to interest developers in architectural

considerations.

• Trick: teach developers without them noticing.

Page 5: Event-BAsed Systems: Architect's Dream or Developer's ... · Architect's View Developer's View Loosely coupled Asynchronous Composable Scalable Real time Good bye, call stack Timing

DEBS 2007

Gregor Hohpe Event-Based Systems: Architect's Dream or Developer's Nightmare

9© 2007 Google, Inc. All rights reserved,

Design Patterns – 10 Years After GoF

• “Mind sized” chunks of information

(Ward Cunningham)

• Human-to-human communication

• Good solution to a common problem within a specific

context

• Expresses intent ( “why” vs. “how”)

• Observed from actual experience

• NOT:

• A firm rule – always a time when not to use

• Copy-paste solution

10© 2007 Google, Inc. All rights reserved,

Why Revisit Patterns?

• New programming models bring new patterns.

• Patterns are expressed using the constructs of the underlying architectural style (e.g. OO, SOA).

• Patterns can help discover higher levels of abstraction.

• Patterns are fuzzy around the edges and work well in the absence of formalisms.

• Pattern language forms important vocabulary.

• Ultimately some of these patterns can be implemented in the platform. This is an iterative process.

Page 6: Event-BAsed Systems: Architect's Dream or Developer's ... · Architect's View Developer's View Loosely coupled Asynchronous Composable Scalable Real time Good bye, call stack Timing

DEBS 2007

Gregor Hohpe Event-Based Systems: Architect's Dream or Developer's Nightmare

11© 2007 Google, Inc. All rights reserved,

Composability

"The ability to build new things from existing

pieces."

"The ability to build new things from existing

pieces."

12© 2007 Google, Inc. All rights reserved,

Composition Is Programming

• Introduces a new layer into the system: the composition layer.

• Often euphemistically called "Configuration only. No coding needed."

• Deserves to be a 1st class citizen:

• Language

• Tools

• Testing

• Programming with XML files tedious and error prone

“Great composers are few and far in between.”“Great composers are few and far in between.”

Page 7: Event-BAsed Systems: Architect's Dream or Developer's ... · Architect's View Developer's View Loosely coupled Asynchronous Composable Scalable Real time Good bye, call stack Timing

DEBS 2007

Gregor Hohpe Event-Based Systems: Architect's Dream or Developer's Nightmare

13© 2007 Google, Inc. All rights reserved,

“Doodleware” Only Limited Help

• For example

• Graphical process editors

• Graphical transformation editors

• We love pictures

• Programming in pictures tedious

• Scalability issues

• Diff, Merge mostly unsupported

• Often a thin veneer over a complex (or unfamiliar) programming paradigm “EAI Art”

14© 2007 Google, Inc. All rights reserved,

Use Pictures, But Not For Programming

• Loosely coupled systems enable independent variability

• System can evolve locally without breaking

• Evolution can lead to surprises

• Therefore, extract accurate state of the system:

• Design-time analysis

• Run-time observation

• “Reverse” MDA

Page 8: Event-BAsed Systems: Architect's Dream or Developer's ... · Architect's View Developer's View Loosely coupled Asynchronous Composable Scalable Real time Good bye, call stack Timing

DEBS 2007

Gregor Hohpe Event-Based Systems: Architect's Dream or Developer's Nightmare

15© 2007 Google, Inc. All rights reserved,

Visualization – Example Input

16© 2007 Google, Inc. All rights reserved,

Visualization – Example Output

Page 9: Event-BAsed Systems: Architect's Dream or Developer's ... · Architect's View Developer's View Loosely coupled Asynchronous Composable Scalable Real time Good bye, call stack Timing

DEBS 2007

Gregor Hohpe Event-Based Systems: Architect's Dream or Developer's Nightmare

17© 2007 Google, Inc. All rights reserved,

Shift Attention to Run-time

• Loose coupling and composability mean the compiler and

static type checking play a smaller part

• Need tools to perform similar functions at run-time

• Validate system configuration

• Validate dynamic system behavior

18© 2007 Google, Inc. All rights reserved,

Model Validation

CustomerCustomer

LoggerLogger

order

Channel

orders

Channel

Page 10: Event-BAsed Systems: Architect's Dream or Developer's ... · Architect's View Developer's View Loosely coupled Asynchronous Composable Scalable Real time Good bye, call stack Timing

DEBS 2007

Gregor Hohpe Event-Based Systems: Architect's Dream or Developer's Nightmare

19© 2007 Google, Inc. All rights reserved,

Think Beyond Development

• More time spent debugging, testing, maintaining,

understanding existing solutions

• New testing approaches

• Testing individual components easier but not sufficient.

• More aspects into play: network, marshalling etc.

• Use non-distributed, synchronous versions for initial testing.

• Debugging Tools

• System monitoring, visualization, model validation

• Documentation needed to convey architectural intent.

“Your compiler does not tell you if you violate

architectural principles.”

“Your compiler does not tell you if you violate

architectural principles.”

20© 2007 Google, Inc. All rights reserved,

Look for the Killer App

• Some programming environments are naturally event-driven

• User Interface frameworks, e.g. Visual Basic, Swing

• Using events feels natural: "user clicks a button"

• Data replication / change tracking for large data sets

• Financial industry

• The Internet?

• E.g., feed readers, alerts, ….

Page 11: Event-BAsed Systems: Architect's Dream or Developer's ... · Architect's View Developer's View Loosely coupled Asynchronous Composable Scalable Real time Good bye, call stack Timing

DEBS 2007

Gregor Hohpe Event-Based Systems: Architect's Dream or Developer's Nightmare

21© 2007 Google, Inc. All rights reserved,

Conclusion

• Balance architectural benefits with development

effectiveness.

• Do not hide architectural style. Provide tools to work with

it effectively.

• Harvest patterns to share knowledge about building

"good" event-based systems.

www.EnterpriseIntegrationPatterns.com

• Pattern catalog

• Articles

• Blog ("Ramblings")