Busy Architect's Guide to the Fallacies of Enterprise Systems

Fallacies

What are these again?

Fallacies

Fallacies are...

Fallacies

To put it in Deutsch's own words...

"Essentially everyone, ... makes the following assumptions.

"All turn out to be false in the long run and all cause big trouble and painful learning experiences."

Fallacies

In theory...

In practice...

The Fallacies of Enterprise Computing

Mistakes are all too easy to repeat

The Fallacies of Enterprise Computing

"Essentially everyone, when they first build an enterprise application, makes the following assumptions. All turn out to be false in the long run and all cause big trouble and painful learning experiences."

    New technology is always better than old technology

    Enterprise systems are not "distributed systems"

    Business logic can and should be centralized

    Models can and should be centralized

    The system is monolithic

    The system is ever finished

    Vendors can make problems go away

    Enterprise architecture is the same everywhere

    Developers need only worry about development problems

Fallacy: New tech is always better than old tech

or, Why Believing the Gartner Consultant is a Terrible No Good Very Bad Idea

Fallacy: New tech is always better than old tech

Ever heard these before?

Fallacy: New tech is always better than old tech

This happens every so often

Fallacy: New tech is always better than old tech

This fallacy bites us every single time

Fallacy: New tech is always better than old tech

Questions:

Fallacy: New tech is always better than old tech

New technology is attractive

Fallacy: New tech is always better than old tech

Remember

Fallacy: New tech is always better than old tech

Replacement projects

Fallacy: Enterprise systems are not distributed systems

So we don't need to worry about....

Fallacy: Enterprise systems are not distributed systems

Very few enterprise systems are single-tier/-node

Fallacy: Enterprise systems are not distributed systems

Therefore...

The Fallacies of Distributed Computing

"Essentially everyone, when they first build an distributed system, makes the following 10 assumptions. All turn out to be false in the long run and all cause big trouble and painful learning experiences."

    The network is reliable

    Latency is zero

    Bandwidth is infinite

    The network is secure

    Topology doesn't change

    There is one administrator

    Transport cost is zero

    The network is homogeneous

Fallacy: Enterprise systems are not distributed systems

Side note: HTTP and APIs

Fallacy: Business logic can and should be centralized

It's more widespread than you think

Fallacy: Business logic can and should be centralized

Let's think about "business logic"

Fallacy: Business logic can and should be centralized

Consider...

Fallacy: Business logic can and should be centralized

No central approach works here

Fallacy: Business logic can and should be centralized

Postel's Maxim

"Be strict in what you send.Be liberal in what you accept."

Fallacy: Models can and should be centralized

aka Master Data Modeling and Management

Fallacy: Models can and should be centralized

Much like business logic...

Fallacy: Models can and should be centralized

This requires a shared model model

Fallacy: Models can and should be centralized

But this masks a deeper problem

Fallacy: Models can and should be centralized

Models are relative

Fallacy: The system is monolithic

We own it all

Fallacy: The system is monolithic

"Oh, sure, we can make that change; we just have to roll out new APIs..."

"What do you mean, I broke your mission-critical app? Who are you again?"

Fallacy: The system is monolithic

"But... microservices!"

Fallacy: The system is monolithic

"But.... full stack!"

Fallacy: The system is monolithic

Solution

    make it explicit which parts are tightly-coupled

    ensure those coupled parts evolve atomically

    keep the network out of those atoms as much as possible

Fallacy: The system is monolithic

Solution

Fallacy: The system is finished

We're going to rewrite it all anyway, right?

Fallacy: The system is finished

"We can be done with this in Phase 1"

Fallacy: The system is finished

Example: HTTP

Fallacy: The system is finished

Mitigation

Create systems with "hook points" that allow future programmers to slip in variation without significant rip-and-tear across the codebase;

Fallacy: Vendors can make problems go away

The Sales guy wouldn't lie to me... right?

Fallacy: Vendors can make problems go away

Vendors will often promise the moon

but....

Fallacy: Vendors can make problems go away

Examples

Fallacy: Vendors can make problems go away

Issues

Fallacy: Vendors can make problems go away

"Open standards!"

Fallacy: Vendors can make problems go away

"Open source!"

Fallacy: Enterprise architecture is the same everywhere

If it's good enough for Google.... right?

Fallacy: Enterprise architecture is the same everywhere

What is "architecture"?

Fallacy: Enterprise architecture is the same everywhere

What is "enterprise" architecture?

Fallacy: Enterprise architecture is the same everywhere

Implications

Fallacy: Enterprise architecture is the same everywhere

"But... patterns!"

Fallacy: Developers need only worry about development problems

There's more than just 'the codes'

Fallacy: Developers need only worry about development problems

An enterprise system is more than code

Fallacy: Developers need only worry about development problems

DevOps helps with much of this

Fallacy: Developers need only worry about development problems

But many companies still lag

Fallacy: Developers need only worry about development problems

But many companies still lag

Summary

Wrapping up

Summary

EVERYBODY HAS MADE THESE MISTAKES

Summary

EVERYBODY HAS MADE THESE MISTAKES

-- No shame in admitting it!

Learn from the mistakes

Summary

EVERYBODY HAS MADE THESE MISTAKES

-- No shame in admitting it!

Learn from the mistakes -- Recognize when you're falling into the traps -- Avoid the implicit assumptions during design

Hold design reviews against the fallacies-- Be aggressive in stamping them out

Credentials

Who is this guy?