Mais conteúdo relacionado Semelhante a Architectures That Bend but Don't Break (20) Architectures That Bend but Don't Break1. Architectures that Bend but Don’t Break
Matt Stine
Global Field CTO / Chief Architect
@mstine
http://www.mattstine.com
2. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Who is this guy?
Matt Stine - Global Field CTO / Chief Architect
at Pivotal
18 year Enterprise IT veteran developer / architect
6 years focused on Cloud Native Platforms and
Architecture
Frequent conference circuit speaker
Host of Software Architecture Radio
http://softwarearchitecturerad.io
I wrote a little cloud book…
https://www.oreilly.com/programming/free/
migrating-cloud-native-application-
architectures.csp
2
3. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 3
What even is
architecture?
4. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 3
What even is
architecture?
What does
“bend but not
break”
mean?
5. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 3
What even is
architecture?
What does
“bend but not
break”
mean?
What are
software
stressors?
6. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 3
What even is
architecture?
What does
“bend but not
break”
mean?
What are
software
stressors?
What
software
qualities do we
want?
7. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 3
What even is
architecture?
What does
“bend but not
break”
mean?
What are
software
stressors?
How do we
measure those
qualities?
What
software
qualities do we
want?
8. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 3
What even is
architecture?
What does
“bend but not
break”
mean?
What are
software
stressors?
How do we
create those
qualities?
How do we
measure those
qualities?
What
software
qualities do we
want?
9. 4Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
What even is
architecture?
10. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
5
Architecture: decisions that are hard to reverse.
Matt Parker
Software Architecture: the high level shape and
flow of the software that’s independent of the
problem domain, but dependent on the desired
user experience.
11. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
6
Architecture represents the significant
design decisions that shape a system,
where significance is measured by cost of
change.
Simon Brown
12. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
7
Meaningful architecture is a living, vibrant
process of deliberation, design, & decision,
not just documentation.
Grady Booch
13. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
8
The important stuff (whatever that is).
Ralph Johnson
14. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
9
Architecture is the process by which we
make and capture software engineering
decisions that have system-wide impact and
are often expensive to reverse.
Matt’s Definition
15. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 10
What even is
architecture?
What does
“bend but not
break”
mean?
16. 11Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
What does
“bend but not
break”
mean?
17. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
12
The oak fought the wind and was broken, the willow
bent when it must and survived.
― Robert Jordan, The Fires of Heaven
18. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
13
Bend but
Don’t Break
Defense (2017)
SOURCE: https://www.patspulpit.com/2018/1/6/16855296/new-england-patriots-defense-took-bend-but-dont-break-to-a-new-level-in-2017
■ Yards per Drive:
32nd (i.e. WORST)
■ Points per Drive:
6th
19. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Break vs. Bend
Break
■ Fragile
Stress → Destruction
■ Robust
Stress → Resistance
14
Bend
■ Resilient
Stress → Adaptation
■ Antifragile
Stress → Innovation
20. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
15
CREDIT: Bilgin Ibryam - https://developers.redhat.com/blog/2016/07/20/from-fragile-to-antifragile-software/
21. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
16
Resilience is the ability of a system to adapt
or keep working when challenges occur.
Resilience
CREDIT: Ines Sombra - https://speakerdeck.com/randommood/full-stack-fest-architectural-patterns-of-resilient-distributed-systems
22. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Defining Resilience
■ Fault-tolerance
■ Evolvability
■ Scalability
■ Failure isolation
■ Complexity Management
17
CREDIT: Ines Sombra - https://speakerdeck.com/randommood/full-stack-fest-architectural-patterns-of-resilient-distributed-systems
23. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
18
24. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Immune Systems
19
25. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Muscular Systems
20
26. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Ant Swarms
21
27. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
22
28. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Software That Improves Itself?
23
29. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Socio-technical Systems
24
30. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Socio-technical Systems
24
!
" #!
" #
!
" #
!
" #
31. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 25
What even is
architecture?
What does
“bend but not
break”
mean?
What are
software
stressors?
32. 26Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
What are
software
stressors?
33. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Russ Miles’ Stressors
■ Innovation
■ System Wildly Successful!
■ System Hardly Used
■ System Failures
■ Emergent Need to Reuse
27
34. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 28
What even is
architecture?
What does
“bend but not
break”
mean?
What are
software
stressors?
What
software
qualities do we
want?
35. 29Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
What
software
qualities do we
want?
36. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
30
Can we continuously deliver incremental
value to the business through software?
Innovation
37. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
31
Can we deliver systems that are able to
survive and thrive amidst turbulent
conditions in production?
Wild Success / System Failure
38. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 32
What even is
architecture?
What does
“bend but not
break”
mean?
What are
software
stressors?
How do we
measure those
qualities?
What
software
qualities do we
want?
39. 33Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
How do we
measure those
qualities?
40. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
34
LEAD TIME: how long does it take you to go
from idea to delivered software?
Innovation
41. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
35
CYCLE TIME: how long does it take you to
make a change and deliver it to production?
Innovation
42. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
36
INVERSE LEAD TIME: how long does it take
for feedback to enter your development
queue?
Innovation
43. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
37
TRASH RATIO: how many of your
experiments do you end up discarding?
Innovation
44. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
38
■ Service Level Objectives (SLOs)
■ Steady State Metrics
Resilience
45. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
39
46. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
SRE Measures
■ Service Level Indicator:
Quantitative measure of an aspect of level of service provided (e.g. request
latency)
■ Service Level Objective:
Target value/range of values for a service level measured by an SLI
40
47. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Focus on Distributions
41
Not on Averages!
https://landing.google.com/sre/book/chapters/service-level-objectives.html
48. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Four Golden Signals
■ Latency:
Time it takes to service a request.
■ Traffic:
How much demand is placed on the system.
■ Errors:
Rate of requests that fail.
■ Saturation:
How "full" your service is.
42
49. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Steady State
43
Some externally visible business metric with
a low degree of variation.
50. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Netflix: SPS
44
Successful Streaming Starts per Second
51. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Starts Per Second
45
A single indicator that closely approximates our most important activity: viewing.
A single indicator that closely approximates our
most important activity: viewing.
52. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
46
WHAT IS YOUR MOST IMPORTANT ACTIVITY?
53. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
47
WHAT SINGLE INDICATOR COULD YOU USE TO
APPROXIMATE IT?
54. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
The Ultimate Metric
48
TTRTime to Recovery
55. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 49
What even is
architecture?
What does
“bend but not
break”
mean?
What are
software
stressors?
How do we
create those
qualities?
How do we
measure those
qualities?
What
software
qualities do we
want?
56. 50Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
How do we
create those
qualities?
57. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
51
Can we continuously deliver incremental
value to the business through software?
Innovation
58. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
52
59. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
53
This paper discusses modularization as a
mechanism for improving the flexibility and
comprehensibility of a system while allowing
the shortening of its development time. The
effectiveness of a "modularization” is
dependent upon the criteria used in dividing
the system into modules.
60. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
54
The major progress in the area of modular
programming has been the development of
coding techniques and assemblers which (1)
allow one module to be written with little
knowledge of the code used in another
module and, (2) allow modules to be
reassembled and replaced without
reassembly of the whole system.
61. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
55
Let’s build an online store!
Decomposition Techniques
62. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
56
Product
Catalog
Orders Inventory Payment Fulfillment ShippingNotifications
72. Functional Decomposition
Independent
Development
Dependent on shared
data formats and
schema. Must be jointly
defined and agreed
upon across multiple
groups.
Comprehensibility
You need to know
something about how
all of the modules work
to understand the
whole system.
Changes
Struggles with
knowledge spread
across all modules, so
often each module has
to change in response
to a desired functional
change.
58Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
73. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
59
Let’s Refactor to a
Capability Decomposition
Decomposition Techniques
81. Capability Decomposition
Independent
Development
Has abstract interfaces
that encapsulate the
work to be done.
Comprehensibility
You can understand
modules
independently.
Changes
Usually isolates a
change to a single
module.
61Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
86. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
64
!
!
!
"
"
"
πελάτης
πελάτης
πελάτης
πελάτης
πελάτης
πελάτης
!
!
!
"
"
"
!
!
!
"
"
"
ग्राहक
ग्राहक
ग्राहक
ग्राहक
ग्राहक
ग्राहक
Bounded
Contexts
87. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
64
!
!
!
"
"
"
πελάτης
πελάτης
πελάτης
πελάτης
πελάτης
πελάτης
!
!
!
"
"
"
!
!
!
"
"
"
ग्राहक
ग्राहक
ग्राहक
ग्राहक
ग्राहक
ग्राहक
Bounded
Contexts
88. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
■ Business Invariants
■ Policies
■ Transactions
■ State
■ Persistence
65
Now it’s time to start speaking the
Ubiquitous Language within each Bounded Context.
Tactical Design?
■ Business Invariants
■ Policies
■ Transactions
■ State
■ Persistence
89. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
The Central Concept
66
Aggregate
90. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
The Central Concept
66
Aggregate
A cluster of objects
treated as a single unit.
Often modeled as a
state machine.
The atomic unit for any
transactional
behavior.
Only accessed through its
Root Entity.
Responsible for maintaining
any/all business invariants.
Entity
EntityEntity
Value
Object
Value
Object
Value
Object
91. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
67
Application Service
Hexagonal
Architecture
92. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
67
Application Service
Domain
Model
Hexagonal
Architecture
■ Domain Model (Aggregates, etc.)
wrapped by an Application Service
93. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
67
Application Service
Domain
Model
Port
Port
Port
Port
Port Port
Hexagonal
Architecture
■ Domain Model (Aggregates, etc.)
wrapped by an Application Service
■ Ports represent generic
entry/exit points (interface)
94. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
67
Application Service
Domain
Model
Adapter
Port
Port
Port
Port
Port Port
Adapter
Adapter
Adapter
Adapter
Hexagonal
Architecture
■ Domain Model (Aggregates, etc.)
wrapped by an Application Service
■ Ports represent generic
entry/exit points (interface)
■ Adapters represent specific
entry/exit implementations (class)
95. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
68
Adapter
Port
Port
Port
Port
Port Port
Adapter
Adapter
Adapter
Adapter
Order
(root)
Line Item
Order ID
Order
Repository
Order Placed
Application Service
Hexagonal
Architecture
■ Domain Model (Aggregates, etc.)
wrapped by an Application Service
■ Ports represent generic
entry/exit points (interface)
■ Adapters represent specific
entry/exit implementations (class)
96. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Adapter
Port
Port
Port
Port
Port Port
Adapter
Adapter
Adapter
Adapter
Adapter
Adapter
Adapter
Adapter
REST
SOAP
AMQP
AdapterAdapterKafka
JDBC
69
Application Service
Order
(root)
Line Item
Order ID
Order
Repository
Order Placed
Hexagonal
Architecture
■ Domain Model (Aggregates, etc.)
wrapped by an Application Service
■ Ports represent generic
entry/exit points (interface)
■ Adapters represent specific
entry/exit implementations (class)
98. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Deployment Topology Spectrum
71
Big
Ball
of
Mud
Monolith Modular Monolith Microservices
99. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
72
■ Individually Deployable
■ Individually Upgradeable
■ Individually Replaceable
■ Individually Scalable
■ Heterogeneous Tech Stacks
Modular Monolith Microservices
■ High Cohesion
■ Low Coupling
■ Business Capability Focus
■ Bounded Contexts / Aggregates
■ Data Encapsulation
■ Substitutable
■ Composable
100. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
73
Can we deliver systems that are able to
survive and thrive amidst turbulent
conditions in production?
Wild Success / System Failure
101. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
74
Leverage Patterns
Resilience
102. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Timeouts
75
103. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Retries
76
104. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Bulkheads
77
105. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Circuit Breakers
78
106. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
79
107. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
80
Embrace Chaos
Antifragility
108. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Socio-technical Systems
81
!
" #!
" #
!
" #
!
" #
109. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
82
https://principlesofchaos.org/
110. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
83
111. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Principles of Chaos Engineering
84
■ Build a Hypothesis around Steady State Behavior
■ Vary Real-world Events
■ Run Experiments in Production
■ Automate Experiments to Run Continuously
■ Minimize Blast Radius
112. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Steady State Behavior
85
A business-facing metric with predictable pattern that fluctuates
significantly when system problems are happening.
113. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Vary Real World Events
86
■ Server Crashes
■ Storage Failures
■ Error Responses
■ Increased Latency between Nodes
■ AZ or Region Failures
■ Thundering Herds
114. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
Run Experiments in Production
87
■ Difficult to exactly duplicate the
production environment
■ Impossible to exactly duplicate
production traffic patterns
115. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
88
RUNNING EXPERIMENTS MANUALLY IS
UNSUSTAINABLE
Automate Experiments to Run Continuously
116. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
89
CUSTOMER PAIN WILL HAPPEN.
TAKE STEPS TO ENSURE FALLOUT IS
MINIMIZED AND CONTAINED.
Minimize the Blast Radius
117. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/
90
118. Unless otherwise indicated, these slides are © 2013-2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by-nc/3.0/ 91
What even is
architecture?
What does
“bend but not
break”
mean?
What are
software
stressors?
How do we
create those
qualities?
How do we
measure those
qualities?
What
software
qualities do we
want?
119. > Stay Connected.
Matt Stine
Global Field CTO / Chief Architect
@mstine
http://www.mattstine.com
#springone@s1p
See also these sessions:
Nate Schutta - Thinking Architecturally
Matt Parker - Agile Architecture