Why Enterprise Architecture Usually Sucks.

45
Why Enterprise Architecture Usually Sucks. Phillip Calçado ThoughtWorks http://fragmental.tw Saturday, 11 September 2010

description

Presented at ThoughtWorks Australia Team Hug 2010 Summary here: http://fragmental.tw/2010/09/12/thoughtworks-australia-teamhug-2010-why-enterprise-architectures-suck/

Transcript of Why Enterprise Architecture Usually Sucks.

Page 1: Why Enterprise Architecture Usually Sucks.

Why Enterprise Architecture Usually Sucks.

Phillip CalçadoThoughtWorks

http://fragmental.tw

Saturday, 11 September 2010

Page 2: Why Enterprise Architecture Usually Sucks.

1.Conway-Driven Architecture2.Architecture-Driven Business

Saturday, 11 September 2010

Page 3: Why Enterprise Architecture Usually Sucks.

1. Conway-Driven Architecture

“Any organisation that designs a system will inevitably produce a design whose structure is a copy of the organisation's communication structure.”

-Melvin Conway

Saturday, 11 September 2010

Page 4: Why Enterprise Architecture Usually Sucks.

Saturday, 11 September 2010

Page 5: Why Enterprise Architecture Usually Sucks.

team a

team b

team b

team c

Saturday, 11 September 2010

Page 6: Why Enterprise Architecture Usually Sucks.

team b

systema

systemb

systemc

Saturday, 11 September 2010

Page 7: Why Enterprise Architecture Usually Sucks.

team b

systema

systemb

systemc

doesn’ttrust

doesn’ttrust

doesn’ttrust

Saturday, 11 September 2010

Page 8: Why Enterprise Architecture Usually Sucks.

team b

systema

systemb

systemclegacy

database x

billing system y

inventory system z

hrsystem w

portal s

Saturday, 11 September 2010

Page 9: Why Enterprise Architecture Usually Sucks.

can I have this feature?

pretty please?

Saturday, 11 September 2010

Page 10: Why Enterprise Architecture Usually Sucks.

LOL r u crazy?

Saturday, 11 September 2010

Page 11: Why Enterprise Architecture Usually Sucks.

team b

systema

systemb

systemclegacy

database x

billing system y

inventory system z

hrsystem w

portal s

This “small” change means...

Saturday, 11 September 2010

Page 12: Why Enterprise Architecture Usually Sucks.

team b

systema

systemb

systemclegacy

database x

billing system y

inventory system z

hrsystem w

portal s

This “small” change means...

change

Saturday, 11 September 2010

Page 13: Why Enterprise Architecture Usually Sucks.

team b

systema

systemb

systemclegacy

database x

billing system y

inventory system z

hrsystem w

portal s

This “small” change means...

change

change

Saturday, 11 September 2010

Page 14: Why Enterprise Architecture Usually Sucks.

team b

systema

systemb

systemclegacy

database x

billing system y

inventory system z

hrsystem w

portal s

This “small” change means...

changechange

change

Saturday, 11 September 2010

Page 15: Why Enterprise Architecture Usually Sucks.

team b

systema

systemb

systemclegacy

database x

billing system y

inventory system z

hrsystem w

portal s

This “small” change means...

changechange

change

change

Saturday, 11 September 2010

Page 16: Why Enterprise Architecture Usually Sucks.

team b

systema

systemb

systemclegacy

database x

billing system y

inventory system z

hrsystem w

portal s

This “small” change means...

changechange

change

change

change

Saturday, 11 September 2010

Page 17: Why Enterprise Architecture Usually Sucks.

team b

systema

systemb

systemclegacy

database x

billing system y

inventory system z

hrsystem w

portal s

This “small” change means...

changechange

change

change

change

change

Saturday, 11 September 2010

Page 18: Why Enterprise Architecture Usually Sucks.

“I don’t understand why things are so hard around here!”“IT doesn’t deliver; we need more people. Get me some consultants!”“In-house is too complicated, let’s buy a package!”

“We are too slow. We have to become agile! ”

Saturday, 11 September 2010

Page 19: Why Enterprise Architecture Usually Sucks.

2. Architecture-Driven Business

“Developers have to translate for domain experts. Domain experts translate between developers and still other experts. Developers even translate for each other. The indirectness of communication conceals the formation of schisms. This leads to unreliable software that doesn't fit together.”

-Eric EvansSaturday, 11 September 2010

Page 20: Why Enterprise Architecture Usually Sucks.

IT always wins.

Saturday, 11 September 2010

Page 21: Why Enterprise Architecture Usually Sucks.

IT always wins.

We need invoices to be available in our

sales channel to our customers

Saturday, 11 September 2010

Page 22: Why Enterprise Architecture Usually Sucks.

IT always wins.

We need invoice.xsds to be available in our portlets to our

contacts

Saturday, 11 September 2010

Page 23: Why Enterprise Architecture Usually Sucks.

developer’s kingdom

business’ nightmare

Saturday, 11 September 2010

Page 24: Why Enterprise Architecture Usually Sucks.

developer’sbusiness’

InvoicingOracle Invoice Server + PDF Printing Service + SAP

CustomerIdentity Manager + CUS_SYS_01 Database + CRM

SaleCMS + E-Commerce Server + Warehouse System

mapping

Saturday, 11 September 2010

Page 25: Why Enterprise Architecture Usually Sucks.

“How did we end up with three CRMs again?”

“These customers are in another database. We can create a service

for that...”

“This may be a simple change for the business but in our end it’s complicated!”Saturday, 11 September 2010

Page 26: Why Enterprise Architecture Usually Sucks.

Some Suggestions

Saturday, 11 September 2010

Page 27: Why Enterprise Architecture Usually Sucks.

1.Don’t try to break the law2.Design principles are fractal3.Domain-Driven Architecture

Saturday, 11 September 2010

Page 28: Why Enterprise Architecture Usually Sucks.

1.Don’t try to break the law2.Design principles are fractal3.Domain-Driven Architecture

Saturday, 11 September 2010

Page 29: Why Enterprise Architecture Usually Sucks.

team b

systema

systemb

systemc

Saturday, 11 September 2010

Page 30: Why Enterprise Architecture Usually Sucks.

team b

systema

systemb

systemc

the governance group

Saturday, 11 September 2010

Page 31: Why Enterprise Architecture Usually Sucks.

team b

systema

systemb

systemc

the governance group bottleneck

Saturday, 11 September 2010

Page 32: Why Enterprise Architecture Usually Sucks.

createoneproject team

withpeople

from different departments

Saturday, 11 September 2010

Page 33: Why Enterprise Architecture Usually Sucks.

1.Don’t try to break the law2.Design principles are fractal3.Domain-Driven Architecture

Saturday, 11 September 2010

Page 34: Why Enterprise Architecture Usually Sucks.

team b

systema

systemb

systemclegacy

database x

billing system y

inventory system z

hrsystem w

portal s

Saturday, 11 September 2010

Page 35: Why Enterprise Architecture Usually Sucks.

OperationOperation

AttributeAttribute

OperationOperation

AttributeAttribute

OperationOperation

AttributeAttribute

OperationOperation

AttributeAttribute

OperationOperation

AttributeAttribute

OperationOperation

AttributeAttribute

OperationOperation

AttributeAttribute

team b

system a

system b

system c

legacy database

x

billing system y

inventory system z

hr system w

portal s

Saturday, 11 September 2010

Page 36: Why Enterprise Architecture Usually Sucks.

•Layers•Cohesion•Coupling•Dependency Injection•...

still applies

Saturday, 11 September 2010

Page 37: Why Enterprise Architecture Usually Sucks.

1.Don’t try to break the law2.Design principles are fractal3.Domain-Driven Architecture

Saturday, 11 September 2010

Page 38: Why Enterprise Architecture Usually Sucks.

big bangmapping

Saturday, 11 September 2010

Page 39: Why Enterprise Architecture Usually Sucks.

Adopt Layers

BusinessServices

}}

InfrastructureServices

Saturday, 11 September 2010

Page 40: Why Enterprise Architecture Usually Sucks.

Adopt Layers

InfrastructureServices

BusinessServices

}}

TechnicalVocabulary

(and no Business Logic)

BusinessVocabulary

(and Business Logic)

Saturday, 11 September 2010

Page 41: Why Enterprise Architecture Usually Sucks.

Adopt Layers

littlemapping

Saturday, 11 September 2010

Page 42: Why Enterprise Architecture Usually Sucks.

Good Architectures support and are driven by the business

Bad Architectures require the business to change

What’s easy to change in the business model should be easy to change in your

architecture

Saturday, 11 September 2010

Page 43: Why Enterprise Architecture Usually Sucks.

Good Architectures support and are driven by the business

Bad Architectures require the business to change

What’s easy to change in the business model should be easy to change in your

architecture

Saturday, 11 September 2010

Page 44: Why Enterprise Architecture Usually Sucks.

Good Architectures support and are driven by the business

Bad Architectures require the business to change

What’s easy to change in the business model should be easy to change in your

architecture

Saturday, 11 September 2010

Page 45: Why Enterprise Architecture Usually Sucks.

References•http://www.melconway.com/research/committees.html

•http://fragmental.tw/2009/02/24/what-is-a-service/

•http://fragmental.tw/2010/08/17/thoughts-on-abstractions-part-1-%E2%80%93-abstractions-everywhere/

•http://fragmental.tw/2010/09/06/thoughts-on-abstractions-part-2-abstractions-in-your-domain/

•http://fragmental.tw/2010/03/22/nevermind-domain-driven-design/

Saturday, 11 September 2010