Emergent Behavior
- of -
Complex Systems
@danielgsims
SYSTEM
Cohesive group of interconnected components
component
component
component
component
props
service
service
service
service
requests
class
class
class
class
methods
publisher
consumer
consumer
consumer
events
Complexity
Simple
Many Components
Complex Interactions
Emergence
A system's behavior emerges from the interactions of its components.
Game of Life
Millennium Bridge
Users are a component of your system.
Flash Crash 2010
-
Trading algorithms for computers in the NYSE
-
36 minutes - lost 9% of the market
-
Second Largest Drop in DJIA
-
Chaotic Input
-
Fat Finger Trades
-
Large Directional Bets
-
High Frequency Trade
-
-
Turned it on and off again
-
Aftermath
It can be hard to determine the root cause of unexpected behavior.
We need a shift in how we think about, develop and maintain our systems.
-
Command Module
-
Electronics
-
Cooling System
Designing a spacecraft
- Plug door for High Pressure environment
- Silver coated wire
- Ethelyne Glycol - subzero
antifreeze
I just make websites.
- Somebody I work with
-
Privacy
-
Security
-
Operational Success
-
Reputation
-
Manage Complexity
-
Study the behavior of our systems
-
Respond to unexpected behavior
Simplify Interactions
Modules
Interface
Behavior
Modules
Cognitive Overhead
Benefit
Think Deep
Simple
Complicated
- What, now how
- Use well established design patterns
- Use common architectures
- Speak the same language
Understand Your Users
User
zipcode
Content
Service
content
Database
Cache (1min)
Geography
Service
determine geo area
fetch content
80% of the US Population lives within 384 Metro Areas
The system becomes more performant the more its used.
-
Scaling policies
-
Cache requirements
-
Database throughput
Working Code Is Not Enough
Bigger Picture
- How will the system change technically
-
How will the system grow
-
Focus on a strong foundation
-
Think about technical debt
Service
Service
Service
Dev
infrastructure
infrastructure
infrastructure
Ops
Service
Service
Service
infrastructure
infrastructure
infrastructure
External
Users
Developers
Internal Users
-
Get a wide angle view of your systems
-
Establish Service Level Objectives
-
Observability into your systems
-
Real User Monitoring
-
Application Performance Metrics
-
Business Indicators
-
-
Test Real Life Scenarios
-
Load Tests
-
Real Data
-
The whole is greater than the sum of its parts.
- Domain Driven Design by Eric Evans
- Site Reliability Engineering by Beyer, et al
- A Philosophy of Software Design by John Ousterhout
- https://principlesofchaos.org/
- Criteria for Modularization by Parnas
- Million Dollar Microsecond from Radio Lab
Resources
@danielgsims
Emergent Behavior of Complex Systems
By Daniel Sims
Emergent Behavior of Complex Systems
- 138