Good Enough Architecture Stefan Tilkov stefan.tilkov@innoq.com - - PowerPoint PPT Presentation

good enough architecture
SMART_READER_LITE
LIVE PREVIEW

Good Enough Architecture Stefan Tilkov stefan.tilkov@innoq.com - - PowerPoint PPT Presentation

GOTO Berlin 2019 Good Enough Architecture Stefan Tilkov stefan.tilkov@innoq.com @stilkov "Tegel Airport TXL Berlin May 2012 - 19" by andynash is licensed under CC BY-SA 2.0 (Software) Architecture De f initions Fundamental


slide-1
SLIDE 1

“Good Enough” Architecture

Stefan Tilkov stefan.tilkov@innoq.com @stilkov

GOTO Berlin 2019

"Tegel Airport TXL Berlin May 2012 - 19" by andynash is licensed under CC BY-SA 2.0

slide-2
SLIDE 2

@stilkov

(Software) Architecture Definitions

Fundamental concepts or properties of a system in its environment embodied in its elements, relationships, and in the principles of its design and evolution (ISO 42010) Whatever the architect considers important enough to merit their attention Architecture represents the significant design decisions that shape a system, where significant is measured by cost

  • f change (Grady Booch)
slide-3
SLIDE 3

@stilkov

Architecture is not an upfront activity performed by somebody in charge of telling everyone else what to do

slide-4
SLIDE 4

@stilkov

Architecture is a property of a system, not a description of its intended design

slide-5
SLIDE 5

Pick the best car:

slide-6
SLIDE 6

@stilkov

Quality

https:/ /iso25000.com/index.php/en/iso-25000-standards/iso-25010

slide-7
SLIDE 7

Scaling Dimensions

Logic Load

written in a day depends on German tax law a dozen users half

  • f the

planet

Netflix Twitter Insurance Policy Management Facebook Amazon Random CMS

slide-8
SLIDE 8

@stilkov

There is no “good” or “bad” architecture without context; architecture needs to take specific quality attributes into account

slide-9
SLIDE 9

Cases

slide-10
SLIDE 10

@stilkov

Context:

Observation(s):

Lesson(s) learned:

slide-11
SLIDE 11

#1: Non-extensible Extensibility

slide-12
SLIDE 12

@stilkov

Context

  • E-Commerce (retail) provider
  • Global customer base
  • Catalog/CMS/Shop/Fulfillment
  • Multi-tenant
  • Highly customizable
slide-13
SLIDE 13

@stilkov

Large customers
 (“strategic”) Small customers
 (“long tail”) Specific General High Low (Acceptable)
 Cost Customization
 (Need) The Solution

slide-14
SLIDE 14

@stilkov

If your design attempts to satisfy everyone, you’ll likely end up satisfying no one

slide-15
SLIDE 15

@stilkov

Highly specific code is often preferable to sophisticated configuration

slide-16
SLIDE 16

#2: Perilously fine-grained

slide-17
SLIDE 17

@stilkov

Context

  • Large-scale B2B food retailer
  • New company-wide shop and logistics system
  • >200 developers
slide-18
SLIDE 18

@stilkov

Team 1 Team 3 Team 2

slide-19
SLIDE 19

@stilkov Order Service Support Fulfillment Billing Checkout

slide-20
SLIDE 20

Why would you cut up your system into tiny, distributed, hard-to- manage fragments?

slide-21
SLIDE 21

@stilkov

Everybody wants to be Netflix, but nobody is

slide-22
SLIDE 22

@stilkov

slide-23
SLIDE 23

@stilkov

slide-24
SLIDE 24

@stilkov Order Service Support Fulfillment Billing Checkout

slide-25
SLIDE 25

@stilkov Support Fulfillment Billing Checkout Order Service

slide-26
SLIDE 26

@stilkov

Lessons learned

  • Small is not always beautiful
  • Refactoring within team boundaries much easier than

globally

  • Ignore organizational parameters at your own risk
slide-27
SLIDE 27

#3: Your system WILL be dynamic

slide-28
SLIDE 28

@stilkov

Context

  • Large-scale insurance system
  • Model-driven development
  • > 100 developers
  • 2 Releases/year
slide-29
SLIDE 29

@stilkov

Modeling Business Concept

3 6 4 5 2 1

Technical Concept Implementation Module Test Integration Test Rollout Vision

What if you miss your slot?

Modeling

slide-30
SLIDE 30

@stilkov

Policy Holder Clause

  • id
  • value
  • dueDate
  • name
  • address
  • status
  • text
  • validity
  • taxClass

* *

regionCode

Model Name New Name (Meaning) Description Release Introduced taxClass regionCode … 10.3 …

slide-31
SLIDE 31

@stilkov

Lessons learned

  • Centralized responsibility hurts
  • Faced with too much rigidity, a way around the rules will

be found

  • Just because you’re used to it doesn’t mean it’s

acceptable

slide-32
SLIDE 32

#4: Free-style architecture

slide-33
SLIDE 33

@stilkov

Context

  • E-Commerce/Online shop (Retail)
  • 100-120 developers
  • ~10 self-contained teams
slide-34
SLIDE 34

@stilkov

number of developers strength of decoupling methods modules components μservices systems

slide-35
SLIDE 35

@stilkov

From a layered system …

System Logic Data UI Module Module Module

slide-36
SLIDE 36

@stilkov

… to a system of systems

System System System Logic Data UI Logic Data UI Logic Data UI

slide-37
SLIDE 37

@stilkov

In-page Cross-page JavaScript method calls Links & redirects Shared abstractions & frameworks Micro-architecture Common language runtime HTTP HTML 5 JS platform Standard Browser

slide-38
SLIDE 38

@stilkov

But …

  • Lack of standardization led to inefficient UI integration

at runtime

  • Vast differences in API style, formats, documentation

created needless extra work

  • Despite no centralised frontend, a central frontend team

created a new bottle neck

slide-39
SLIDE 39

@stilkov

You cannot decide to not have an architecture; if you don’t actively create it, be prepared to deal with the one that emerges

slide-40
SLIDE 40

@stilkov

There’s a fine line between diversity (that adds value) and chaos (that doesn’t)

slide-41
SLIDE 41

@stilkov

Extremely loose coupling requires very few rules, but they need to be enforced strictly

slide-42
SLIDE 42

#5: Cancerous Growth

slide-43
SLIDE 43

@stilkov

Context

  • Financial services provider with independent

brokers as clients

  • ~30 developers
  • 20 years of company history
slide-44
SLIDE 44

@stilkov

Oracle DB Oracle Forms App

slide-45
SLIDE 45

@stilkov

Oracle DB

Java/JSP Web App Lots of PL/SQL

slide-46
SLIDE 46

@stilkov

Oracle DB

Java/JSP Web App Lots of PL/SQL .NET Web Service .NET Web Service .NET Web Service .NET Web Service

slide-47
SLIDE 47

@stilkov

Oracle DB

Java/JSP Web App Lots of PL/SQL .NET Web Service .NET Web Service .NET Web Service .NET Web Service

Oracle DB

Java/JSP Web App Lots of PL/SQL .NET Web Service .NET Web Service .NET Web Service .NET Web Service

Company A Company B

slide-48
SLIDE 48

@stilkov

Java/JSP Web App Lots of PL/SQL .NET Web Service .NET Web Service .NET Web Service .NET Web Service

Oracle DB

Java/JSP Web App Lots of PL/SQL .NET Web Service .NET Web Service .NET Web Service .NET Web Service

Company A Company B

slide-49
SLIDE 49

@stilkov

Java/JSP Web App .NET Web Service .NET Web Service .NET Web Service .NET Web Service

Oracle DB

Java/JSP Web App .NET Web Service .NET Web Service .NET Web Service .NET Web Service

Company A Company B

Mongo Couch/Pouch Mongo MySQL

slide-50
SLIDE 50

@stilkov

Java/JSP Web App .NET Web Service .NET Web Service .NET Web Service .NET Web Service

Oracle DB

Java/JSP Web App .NET Web Service .NET Web Service .NET Web Service .NET Web Service

Company A Company B

Mongo Couch/Pouch Mongo MySQL

C++ Encryption Lib

slide-51
SLIDE 51

@stilkov

Lessons learned

  • Successful systems often end up the worst architecture
  • Unmanaged evolution will lead to complete chaos
  • Don’t be afraid of some light architectural governance
slide-52
SLIDE 52

#6: Improve with less intelligence

slide-53
SLIDE 53

@stilkov

Context

  • Bank with multiple CotS systems
  • Highly proprietary integration solution phased out by

vendor

  • Project launched to replace commercial product with
  • pen source solution
slide-54
SLIDE 54

@stilkov

Magical Integration Broker

Custom App CotS DB External Partner Other Group Company Parent Company External Partner Custom App Custom App CotS

slide-55
SLIDE 55

@stilkov

Magical Integration Broker

Custom App CotS DB External Partner Other Group Company Parent Company External Partner Custom App Custom App CotS

Magical Integration Broker

Routing Conversion Transformation Transcoding Transport Error handling Business logic …

slide-56
SLIDE 56

@stilkov Custom App CotS DB External Partner Other Group Company Parent Company External Partner Custom App Custom App CotS Pub/Sub Messaging

slide-57
SLIDE 57

@stilkov Custom App CotS DB External Partner Other Group Company Parent Company External Partner Custom App Custom App CotS Pub/Sub Messaging

Pub Sub Messaging

Pub/Sub routing Transport Error handling

Adapter (Docker Container)

Conversion Transformation Transcoding Error handling Business logic

slide-58
SLIDE 58

@stilkov

Lessons learned

  • Smart endpoints, dumb pipes (cf. Jim Webber)
  • Value of specific over generic solutions
  • Micro architecture with blueprints
slide-59
SLIDE 59

Takeaways

slide-60
SLIDE 60

@stilkov

1. Don’t be afraid of architecture

slide-61
SLIDE 61

@stilkov

2. Choose the simplest thing that will work

slide-62
SLIDE 62

@stilkov

3. Create evolvable structures

slide-63
SLIDE 63

@stilkov

4. Manage your system’s architectural evolution

slide-64
SLIDE 64

@stilkov

5. Don’t build road blocks – create value and get out of the way

slide-65
SLIDE 65

@stilkov

Stefan Tilkov @stilkov stefan.tilkov@innoq.com Phone: +49 170 471 2625

innoQ Deutschland GmbH

  • Krischerstr. 100

40789 Monheim am Rhein Germany Phone: +49 2173 3366-0 innoQ Schweiz GmbH

  • Gewerbestr. 11

CH-6330 Cham Switzerland Phone: +41 41 743 0116

www.innoq.com

Ohlauer Straße 43 10999 Berlin Germany Phone: +49 2173 3366-0

  • Ludwigstr. 180E

63067 Offenbach Germany Phone: +49 2173 3366-0 Kreuzstraße 16 80331 München Germany Phone: +49 2173 3366-0

@stilkov

That’s all I have. Thanks for listening!

slide-66
SLIDE 66

@stilkov

www.innoq.com

OFFICES

Monheim Berlin Offenbach Munich Hamburg Zurich

FACTS

~150 employees Privately owned Vendor-independent

SERVICES

Strategy & technology consulting Digital business models Software architecture & development Digital platforms & infrastructures Knowledge transfer, coaching & trainings

CLIENTS

Finance Telecommunications Logistics E-commerce Fortune 500 SMBs Startups

slide-67
SLIDE 67

@stilkov

Growing architectural maturity means less guidance and rules are needed

slide-68
SLIDE 68

@stilkov

The more experienced you are at (active and passive) architectural governance, the less you can do of it