to make a quantum leap from the relative certainty of a single machine or process to the byzantine interactions of interconnected subsystems, where we cannot stop the world to take a snapshot of it or to make it move one step at a time. -- Sergey Bykov We need a Change in our Mindset
If you don’t understand your Business Domain, you don’t understand the Problem Domain Driven Design (Bounded Contexts) Set Expectations (Contracts) This is NOT about Technology Communicate (document) clearly Domain Understanding Ownership Simplicity Empathy Anti-Fragility Observability Operational Friendliness Preserve Knowledge
“You build it, you run it” Cross-functional Teams (“DevSecOps”) Service Orientation API-First Design (no Backdoors) Risk and Incident Management Communication Plans Domain Understanding Ownership Simplicity Empathy Anti-Fragility Observability Operational Friendliness Preserve Knowledge
Your System does not run in Isolation Be a good Citizen Anticipate Effects on (possibly unknown) upstream/downstream Services Mechanical Sympathy Domain Understanding Ownership Simplicity Empathy Anti-Fragility Observability Operational Friendliness Preserve Knowledge
Don’t hide Complexity, never assume Single-Version Software Standardize everything Automate and reduce Toil to prevent Human Error Chaos test in Production Boring (Tech) is good “Soft-Delete” and Self-Healing Document clearly (Recovery Plans, Last Change, Ownership) Practice (Game/Hack Days) Domain Understanding Ownership Simplicity Empathy Anti-Fragility Observability Operational Friendliness Preserve Knowledge
Stand on the Shoulders of Giants Learn from the Past Blameless Culture Write Post-Mortems Make Knowledge accessible Domain Understanding Ownership Simplicity Empathy Anti-Fragility Observability Operational Friendliness Preserve Knowledge
Closed Loops Continuously Observe, Analyze, Act Behavior Driven Development to bridge Silos Ship (release) often but incrementally Version everything (GitOps) Shared Responsibility (GitOps) No central Coordinator APIs as System and Communication Boundaries SLOs as Contracts Domain Understanding Ownership Simplicity Empathy Anti-Fragility Observability Operational Friendliness Preserve Knowledge