learning the three types - conferences...fail fast, timeout, circuit breaker, steady state...

109
Learning the Three Types of Microservices Mike Amundsen @mamund API Academy SACon London 2018

Upload: others

Post on 22-Mar-2021

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Learning the Three Types of Microservices

Mike Amundsen@mamund

API Academy

SACon London 2018

Page 2: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply
Page 3: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

http://apiacademy.co

Page 4: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

http://g.mamund.com/msabook

Page 5: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

@TheCAMBook

"A reusable guide to the technology, business, and

politics of doing APIs at scale within the enterprise."

-- Kin Lane, API Evangelist

Page 6: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

http://g.mamund.com/cambook

Page 7: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Overview

● Programming the Network● Microservices● Three Types of Microservice Components● Nygard's Stability Patterns● Applying Nygard to Microservices● But Wait, There's More...

Page 8: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply
Page 9: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply
Page 10: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply
Page 11: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply
Page 12: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply
Page 13: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply
Page 14: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply
Page 15: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Traveling

Page 16: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Traveling

Page 17: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Travelingthe Network

Page 18: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Programmingthe Network

Page 19: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply
Page 20: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply
Page 21: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Data on the Inside vs. Data on the Outside, Helland (2005) http://cidrdb.org/cidr2005/papers/P12.pdf

"There is no simultaneity at a distance."

-- Pat Helland (2005)

Programming the Network

Pat Helland

Page 22: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Newton rules the "inside"

Sir Isaac Newton

Page 23: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Einstein rules the "outside"

Albert Einstein

Page 24: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Data on the Inside vs. Data on the Outside, Helland (2005) http://cidrdb.org/cidr2005/papers/P12.pdf

Programming the Network

Pat Helland

Page 25: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Data on the Inside vs. Data on the Outside, Helland (2005) http://cidrdb.org/cidr2005/papers/P12.pdf

Programming the Network

Pat Helland

Page 26: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Data on the Inside vs. Data on the Outside, Helland (2005) http://cidrdb.org/cidr2005/papers/P12.pdf

Programming the Network

Pat Helland

Page 27: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing

Fallacies of Distributed Computing (1994)

L Peter Deutsch

Page 28: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

The Language of the System, Rich Hickey (2012) https://www.youtube.com/watch?v=ROor6_NGIWU

The Language of the System (2012)

Rich Hickey

Page 29: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Programming the Network brings new challenges

Page 30: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Microservices

Page 31: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"An approach to developing a single application as a suite of

small services, each running in its own process and

communicating with lightweight mechanisms."

-- Martin Fowler, 2014

https://www.thoughtworks.com/insights/blog/microservices-nutshell

Page 32: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Emphasizes scalability of component interactions, generality of interfaces,

independent deployment of components, and intermediary

components."

-- Roy Fielding, 2000

Page 33: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"A universal linked information system, in which generality and portability are [most] important."

-- Tim Berners-Lee, 1989

Page 34: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Microservice Characteristics

● Make each program to one thing well● Expect the output of every program to be the input of

another program● Design and build software to be tried early● Use tools to lighten the programming task

Page 35: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Unix Operating Principles (1978)

● Make each program to one thing well● Expect the output of every program to be the input of

another program● Design and build software to be tried early● Use tools to lighten the programming task

https://en.wikipedia.org/wiki/Unix_philosophy

Page 36: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Loosely-coupled components running in an

engineered system.

Page 37: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Three Types of Microservices

Page 38: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Three Types of Microservices

● Stateless● Persistence● Aggregator

Page 39: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Stateless Microservices

Page 40: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Stateless Microservices

● Simple processors (converters, translators, etc.)● No dependence on other microservices● No local data storage (disk I/O)

The most common MSC example, but the least useful!

Page 41: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Stateless Microservices

● No shared state● Easy to replace● Easy to scale up

Ephemeral Computing

Page 42: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Stateless Microservices

WARNING: NOT REAL CODE!

Page 43: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Persistence Microservices

Page 44: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Persistence Microservices

● Simple (local) storage (reads and/or writes)● Disk I/O dependent● Possibly VM or one-U dependent

Commonly needed MSC, not the easiest to implement.

Page 45: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Persistence Microservices

● System of Record/Source of Truth● Relatively easy to scale for reads (CQRS)● No cross-service two-phase commits (Saga)

Durable Storage

Page 46: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Persistence Microservices

WARNING: NOT REAL CODE!

Page 47: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Aggregator Microservices

Page 48: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Aggregator Microservices

● Depends on other ("distant") microservices ● Network dependent● Usually Disk I/O dependence, too

The most often-needed; most challenging, too.

Page 49: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Aggregator Microservices

● Sequence vs. Parallel calls● Timing is everything● Easy to scale (should be…)

Workflow Choreography

Page 50: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Aggregator Microservices

WARNING: NOT REAL CODE!

Page 51: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Three Types of Microservices

● Stateless (ephemeral)● Persistence (durable)● Aggregator (workflow)

Page 52: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

But, what about the network?

Page 53: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Nygard's Stability Patterns

Page 54: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

“Bugs will happen. They cannot be eliminated, so they

must be survived instead.”

-- Michael T. Nygard

Page 55: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply
Page 56: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Nygard Stability Patterns

● Timeout● Circuit Breaker● Bulkhead● Steady State● Fail Fast● Handshaking

Page 57: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Nygard Stability Patterns" -- Timeout

"The timeout is a simple mechanism allowing you to stop waiting for an answer once you think it will not come."

-- Chapter 5.1

Page 58: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Nygard Stability Patterns" -- Timeout

"The timeout is a simple mechanism allowing you to stop waiting for an answer once you think it will not come."

-- Ch 5.1

WARNING: NOT REAL CODE!

Page 59: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Nygard Stability Patterns" -- Circuit Breaker

"Circuit breakers are a way to automatically degrade functionality when the system is under stress."

-- Chapter 5.2

Page 60: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Nygard Stability Patterns" -- Circuit Breaker

"Circuit breakers are a way to automatically degrade functionality when the system is under stress."

-- Chapter 5.2

Page 61: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Nygard Stability Patterns" -- Bulkhead

"The bulkhead enforces a principle of damage containment."-- Chapter 5.3

Page 62: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Nygard Stability Patterns" -- Bulkhead

"The bulkhead enforces a principle of damage containment."-- Chapter 5.3

Page 63: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Nygard Stability Patterns" -- Bulkhead

"The bulkhead enforces a principle of damage containment."-- Chapter 5.3

Page 64: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Nygard Stability Patterns" -- Steady State

"The system should be able to run indefinitely without human intervention."

-- Chapter 5.4● Avoid fiddling● Purge data w/ app logic● Limit caching● Roll the logs

Page 65: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Nygard Stability Patterns" -- Steady State

"The system should be able to run indefinitely without human intervention."

-- Chapter 5.4● Avoid fiddling● Purge data w/ app logic● Limit caching● Roll the logs

Page 66: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Nygard Stability Patterns" -- Fail Fast

"If the system can determine in advance that it will fail at an operation, it’s always better to fail fast."

-- Chapter 5.5

Page 67: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Nygard Stability Patterns" -- Fail Fast

"If the system can determine in advance that it will fail at an operation, it’s always better to fail fast."

-- Chapter 5.5

WARNING: NOT REAL CODE!

Page 68: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Nygard Stability Patterns" -- Handshaking

"Handshaking is all about letting the server protect itself by throttling its own workload."

-- Chapter 5.6

Page 69: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Nygard Stability Patterns" -- Handshaking

"Handshaking is all about letting the server protect itself by throttling its own workload."

-- Chapter 5.6

WARNING: NOT REAL CODE!

Page 70: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Nygard Stability Patterns" -- Cache

"Caching can reduce the load on the server and cut response times to a fraction of what they would be without caching."

-- Chapter 10.2

Page 71: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Nygard Stability Patterns" -- Cache

"Caching can reduce the load on the server and cut response times to a fraction of what they would be without caching."

-- Chapter 10.2

WARNING: NOT REAL CODE!

Page 72: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"Nygard Stability Patterns" -- Cache

"Caching can reduce the load on the server and cut response times to a fraction of what they would be without caching."

-- Chapter 10.2

WARNING: NOT REAL CODE!

Page 73: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Stabilizing Stateless Microservices

Page 74: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Stateless Microservices

WARNING: NOT REAL CODE!

Page 75: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Networked Stateless

● What if the work takes too long?

Page 76: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Stable Stateless Microservices

1. Fail-Fast

WARNING: NOT REAL CODE!

Page 77: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Stabilizing Persistence Microservices

Page 78: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Persistence Microservices

WARNING: NOT REAL CODE!

Page 79: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Networked Persistence

● What if the work takes too long?● What is the dependent service doesn't respond in time?● What if the dependent service is down?● What if the storage overflows (data, logs, etc.)?

Page 80: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Stable Persistence Microservices

1. Fail-Fast2. Timeout3. Circuit Breaker4. Steady State

WARNING: NOT REAL CODE!

Page 81: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Stabilizing Aggregator Microservices

Page 82: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Aggregator Microservices

WARNING: NOT REAL CODE!

Page 83: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Networked Aggregators

● What if the work takes too long?● What if a dependent services doesn't respond in time?● What if a dependent service is down?● What if storage overflows (data, logs, etc.)?● What if a dependent service is unhealthy?● What if traffic for a service spikes?

Page 84: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Stable Aggregator Microservices

1. Fail-Fast2. Timeout3. Circuit Breaker4. Steady State5. Handshaking6. Bulkhead

WARNING: NOT REAL CODE!

Page 85: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Nygard's Admonition...

Page 86: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Applying Nygard's Patterns to Services● Stateless

○ fail fast● Persistence

○ fail fast, timeout, circuit breaker, steady state● Aggregation

○ fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead

Apply Nygard's Stability Patterns to improve the health

of your components and your system.

Page 87: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply
Page 88: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

https://blogs.technet.microsoft.com/michael_platt/2005/08/30/integration-and-interoperability/

"Interoperation is peer to peer. Integration is where a system is subsumed within another."

-- Michael Platt, Microsoft

Aim for Interop, not Integration...

Page 89: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Aim for Interop, not Integration...

By Wkinterop - Powerpoint -> PNG, CC BY-SA 3.0, https://en.wikipedia.org/w/index.php?curid=35139609

Page 90: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

https://blogs.technet.microsoft.com/michael_platt/2005/08/30/integration-and-interoperability/

"There is no simultaneity at a distance."

-- Pat Helland, Salesforce

Include time/distance in your models

Pat Helland

Page 91: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

"I'm sorry that coined the term 'objects' for this topic. The big idea is 'messaging'."

Alan Kay, 1998

Include time/distance in your models

Page 92: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing

L Peter Deutsch

Remember, you're programming the network

Page 93: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

●Safety

Remember, you're programming the network

https://www.w3.org/2011/10/integration-workshop/p/hypermedia-oriented-design.pdf

Page 94: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

●Safety The HTTP protocol supports a number of "safe" actions such as HEAD, and GET.

The HTTP methods PUT, POST, and DELETE are categorized as "unsafe" actions.

Remember, you're programming the network

https://www.w3.org/2011/10/integration-workshop/p/hypermedia-oriented-design.pdf

Page 95: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

●Safety●Idempotence

Remember, you're programming the network

https://www.w3.org/2011/10/integration-workshop/p/hypermedia-oriented-design.pdf

Page 96: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

●Safety●Idempotence

In HTML when a FORM element has the METHOD property set to "get" this represents an idempotent action.

When the same property is set to "post" the affordance represents a non-idempotent action.

Remember, you're programming the network

https://www.w3.org/2011/10/integration-workshop/p/hypermedia-oriented-design.pdf

Page 97: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Other Considerations...

● Interop vs. Integration● Time & Distance● Safety & Idempotence

Page 98: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

So...

Page 99: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

We need microservices...

Page 100: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

So that we can program the network...

Page 101: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Which means applying patterns to our code..,

1. Fail-Fast2. Timeout3. Circuit Breaker4. Steady State5. Handshaking6. Bulkhead

Page 102: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

And that means understanding the role of semantics...

Page 103: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

And the role of distance & time...

Page 104: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

And constantly reminding ourselves of the challenge.

Page 105: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

That's a lot!

Page 106: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

The Best Software Architecture"The best software architecture 'knows' what

changes often and makes that easy."- Paul Clements

Page 107: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Let's continue the conversation...

Page 108: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Learning the Three Types of Microservices

Mike Amundsen@mamund

API Academy

SACon London 2018

Page 109: Learning the Three Types - Conferences...fail fast, timeout, circuit breaker, steady state Aggregation fail fast, timeout, circuit breaker, steady state, handshaking, bulkhead Apply

Learning the Three Types of Microservices

Mike Amundsen@mamund

API Academy

SACon London 2018