The document discusses technical debt and strategies for managing it over time. It advocates for loose coupling between components using techniques like immutability, microservices, and standards. This distributes technical debt across teams and helps systems evolve more gradually over time like a tortoise, rather than taking on large debt quickly like a hare. The document recommends focusing on direction over speed and emphasizes the importance of stability, feedback, and continual learning to effectively manage technical debt.
3. The Hare & the Tortoise
Coupling & Immutability
Betting on the right Horse
Technical Debt
Haste vs Speed
Standards & Stability
Open Source, Standards & Technical Debt
Debt Dilution & Delegation
4. Technical Debt
Hard to monitor
Time to pay
- Evolves slowly from many small decisions
- Can go unnoticed for a long time
You might only realize debt when it’s time to pay
Technical decisions imply a hidden cost that will have to be
paid in the future in order to catch up with state-of-the-art
technology.
7. Open Source & Standards
Follow vs Influence
Avoid NIH by setting industry standards
When faced with a need:
- already existing?
- valid?
- implement
Most people have the same needs
New standard ⇒ public
- Stay ahead of the curve
- Set the new standard!
8. Coupling
Hard coupling / Monolith
Loose coupling / Microservices
- Monolithic systems are strongly coupled and hard to update.
- Their technical debt is also strongly coupled.
- Loose API between components
- Decorrelation of dependencies
- Distributes technical debt
Image:
Wikimedia
Commons
—
LuK
USA
LLC
/
Michael
Poehler
—
CC
BY
3.0
9. Immutability
Immutability encourages loose coupling
- No evolution of state (full replacement)
- Requires frequent changes
- Distributes technical debt
- VMs vs Containers vs Functions
Mutable systems
- State evolves with time
- Divergence vs Convergence vs Congruence
10. Public Cloud
Delegation of Technical Debt
One way to reduce debt
(at least its ownership)
⚠ Strong dependence on
Cloud APIs/features
Image:
Unsplash
—
Billy
Huynh
- local optimum
- global debt
11. Team Topologies
Conway’s Law
Code debt/ownership
Debt Dilution
Plan systems architecture, adapt teams
Ensure responsibility of debt management
and reduction
Distribute debt and associated mental
load between teams
Image:
XKCD
13. The Three Ways of DevOps
Flow / Systems Thinking
Amplify Feedback Loops
Culture of Continual Experimentation
& Learning
Decoupling software architecture from infrastructure lowers
risks of technical debt.
Involving Ops in architecture (+ feedback) helps lower coupling.
Definitely a tortoise approach to a race.
15. The right time to adopt
Image:
Craig
Chelius
—
CC
BY
3.0
16. Stability & Loose Coupling
Image:
Wikimedia
Commons
—
Emw
—
CC
BY-SA
3.0
Stability
- Standard interface
- Few changes in time
Loose Coupling
- Partial upgrades
- Delegation of Tech debt
- Configuration changes
17. eBPF
Highly efficient sandboxed virtual machine in the kernel,
making it more programmable at native execution speed.
Stability
eBPF is based on the OS (mainly Linux) kernel interface
Loose Coupling
eBPF can enhance application without specific instrumentation:
- observability
- security
- network
- tracing & profiling
19. Cilium & Friends
Cilium
- performance gains
(no need for iptables, bypass TCP/IP)
- simpler architecture
(e.g. no sidecar proxy for Service Mesh)
Tetragon
- observe & export kernel events
- act on events (e.g. SIGKILL)
Hubble
- fine-grained network observability
- exports to SIEM
- support for OpenTelemetry