Professional Documents
Culture Documents
ARcHitECtuREs
Day 2:
The Evolution of Penultimate Widgets!
@neal4d
nealford.com @rebeccaparsons @patkua
2020-06-03 2021-08-17
Agenda Part 1
Incremental Change
Definition
chaos
unit engineering
tests metrics
Exercise:
What type of fitness function?
enterprise architecture
Agenda Part 2
The Evolution of
Penul&ma e
Agenda Part 2
fitness functions architecture migration
The Evolution of
Penul&ma e
experimentation
automating
governance hypothesis/data driven
development
Penul&ma e
Penul&ma e
Penul&ma e
3.
evolu&onary architecture
2.
automated
machine provisioning
Penul&ma e
Penul&ma e
Penul&ma e
Penul&ma e
Penul&ma e
Penul&ma e
Penul&ma e
demonstration
defeats
discussion
Penul&ma e
microservices for
new development
migrate critical
existing systems
component coupling
the extent to which components know
about each other
component component
component
component coupling
tight loose
coupling coupling
component b
component c component a
component d
component coupling
efferent coupling
the degree to which the target component
is dependent on other components
component b
component a component c
component d
Abstractness
where:
ma => abstract elements
mc => concrete elements
Instability
where:
ce => efferent coupling
ca => afferent coupling
Distance from the Main Sequence
Distance from the Main Sequence
Distance from the Main Sequence
distance from the main sequence
Dependency Metrics
Connascence
h"ps://connascence.io/name.html
Origin
Two components are connascent if a
change in one would require the
other to be modified in order to
maintain the overall correctness of
the system.
sta$c dynamic
sta$c
Connascence of Name
mul$ple components must agree on the name of an en$ty
sta$c
Connascence of Type
mul$ple components must agree on the type of an en$ty
sta$c
Connascence of Type
mul$ple components must agree on the type of an en$ty
constants!
sta$c dynamic
dynamic
Connascence of Execution
the order of execu,on of mul,ple components is important
dynamic
Connascence of Timing
the %ming of the execu%on of mul%ple components is important
race
condition
dynamic
Connascence of Value
occurs when several values relate on one another
and must change together
dynamic
Connascence of Identity
mul$ple components must reference the same en$ty
dynamic
Connascence of Identity
mul$ple components must reference the same en$ty
ACID
transaction
Connascence
Two components are connascent if a
change in one would require the
other to be modified in order to
maintain the overall correctness of
the system.
sta$c dynamic
Connascence Properties
sta$c dynamic
]
Strength name
type
static
meaning
algorithm
]
position
refactor
execution order
this way
timing dynamic
value
identity
Connascence Properties
sta$c dynamic
]
Locality
static
]
Proximal code (in the same module, class, or
function) should have more & higher forms
of connascence than less proximal code (in
separate modules, or even codebases).
dynamic
Coupling
seman&c syntac&c
Connascence Properties
Locality dynamic
locality matters!
dynamic
Coupling
syntac'c
Connascence Properties
sta$c dynamic
sta$c dynamic
ive
ive
h es
es
co
n-
h
no
co
Chidamber & Kemerer Metrics
LCOM (Lack of Cohesion in Methods)
n
sio
ive
ive
he
es
co
h
es
co
d
ixe
n-
h
no
co
m
Unifying Coupling/Connascence
When Migra+ng Architecture…
1. improve modularity
When Migra+ng Architecture…
2. create service-based
1. improve modularity architecture
When Migra+ng Architecture…
2. create service-based
1. improve modularity architecture 3. isolate quanta
When Migra+ng Architecture…
2. create service-based
1. improve modularity architecture 3. isolate quanta
service database
granularity scope
Electronics Recycling Application
public requests receiving department recycling and accounting
kiosk
receiving accounting
quote
assessment recycling
item status
reporting
Electronics Recycling Application
kiosk public ui receiving ui recycling ui
Electronics Recycling Application
kiosk public ui receiving ui recycling ui
Service-based Architecture
adding microservices
client requests client requests client requests
microservices for
new development
migrate critical
existing systems
e
Deployment Pipeline
Penul&ma
cycle time
Penul&ma e
fitness function:
CycleTimeGuard
Penul&mateWidgets has entered an extremely compe&&ve
market with a startup running popular flash promo&ons. The
marke&ng department commi?ed to keeping up with
Penul&mateWidgets own aggressive marke&ng campaign, which
requires development teams to be able to deliver changes to the
promo&on pages within an hour. Thus, they want a guarantee
that changes can always take place within an hour.
Penul&ma e
fitness function:
CycleTimeGuard
• u&lize the good modularity of the monolith to build a
deployment pipeline that automa&cally incorporates CMS
changes
• con&nuously deploy new content for marke&ng pages as
long as they pass smoke test
• measure cycle &me from deployment pipeline for
deployments for marke&ng sites
• save cycle &me results to aggregate a weekly chart
Incidentally Coupled Teams
user interface
server-side
DBA
Conway’s Law
organizations which design
systems ... are constrained to
produce designs which are copies
of the communication structures of
these organizations
custome custome
r r
commercial disability
customer
insurance insurance
service
division division
custome custome
r r
casualty travel
insurance insurance
division division
auto and
life
homeowners
insurance
insurance
division
division
commercial disability
customer
insurance insurance
service
division division
casualty travel
insurance insurance
division division
eusable code is, the less u
hexagonal pattern
operational reuse
the sidecar pattern
the sidecar pattern
service mesh
two reuse solutions
service mesh
SOA
Data Mesh
h"ps://mar*nfowler.com/ar*cles/data-monolith-to-mesh.html
data warehouse
ETL
Data
Warehouse
Data Lake
Data
Data
LakeLake |
| Hub
Hub
data lake on the cloud
Data Mesh
DATA MESH
ARCHITECTURE
Federated Ecosystem Governance
(enable interoperability)
Decentralized
Data Product Domain Data Products as Architecture
ownership Quanta
icroservices architecture and want to ensure that as new requests appear that th
Penul&ma e
fitness function:
Elas&city of Microservices
icroservices architecture and want to ensure that as new requests appear that th
Penul&ma e
fitness function:
Elas&city of Microservices
icroservices architecture and want to ensure that as new requests appear that th
Penul&ma e
fitness function:
Elas&city of Microservices
icroservices architecture and want to ensure that as new requests appear that th
Penul&ma e
fitness function:
Elas&city of Microservices
icroservices architecture and want to ensure that as new requests appear that th
Penul&ma e
fitness function:
Elas&city of Microservices
icroservices architecture and want to ensure that as new requests appear that th
Penul&ma e
fitness function:
Elas&city of Microservices
• build a Hello, World service to allow instan&a&on of the
service template
• deploy the service and direct enough requests to it to
trigger elas&city in the naming service
• verify that the number of instances rose properly
Penul&ma e
fitness function:
Determinis&c Distributability
chaos
unit engineering
tests metrics
Penul&ma e
fitness function:
Maintaining Good Throughput
heir website has become and want to make sure they maintain good throughput
Penul&ma e
fitness function:
Degrade Gracefully
maintainable?
Concrete Architecture Defini/ons
maintainable?
“legacy in a Box”
Make New Habits
Penul&ma e
fitness function:
Upgrade All The Things
incremental
Penul&ma e
Evolving Rou+ng
Evolving Rou+ng
Penul&ma e
Evolving Rou+ng
Penul&ma e
Evolving Rou+ng
Penul&ma e
Evolving Rou+ng
Penul&ma e Experimen)ng
with New Markets
Penul&ma e
fitness function:
MaintainTheMock
Penul&mateWidgets has started experimen&ng with
flashing the chips on their 'smart' widgets during the
manufacturing process, allowing them to make changes
in hardware-based code more easily and quickly.
However, they must make sure that the mock version of
the hardware API the developers use is always up to date
with the real API.
Penul&ma e
fitness function:
MaintainTheMock
Build a fitness func&on that matches the mock API method signatures,
parameters, and types to the real API on the hardware; fail the build if
the team has allowed it to get out of sync.
Penul&ma e
Penul&ma e
fitness function:
Doc Sync With API
alien artifacts!
Penul&ma e
integration
alien artifacts!
architecture
(Forced) Integra/on
(Forced) Integra/on
(Forced) Integra/on
(Selec&ve Use of) ESB
Enterprise Service Bus
“Legacy in a Box” Pa0ern
Enterprise Service Bus
“legacy in a Box”
Penul&ma e
Penul&ma e
Penul&ma e
selected
experiments:
ideation
pivot
fold
double
down
portfolio
of experiments
Penul&ma e
Penul'ma e OpenUl'ma e
Penul'ma e OpenUl'ma e
No architecture states!
Fitness Func*on Guidelines
developers must collaborate
No architecture states!
Fitness Func*on Guidelines
prefer automation but rely
on manual when needed
automation =
when needed
Architecture Defined
architecture = +
prioritization cost
h"p://evolu+onaryarchitecture.com
iMpLemEN)Ng eVoLuTiONaRy
ARcHitECtuREs
@neal4d
nealford.com @rebeccaparsons @patkua
2020-09-10