2. Irakli Nadareishvili
Senior Director, SharedTech, Capital One
• API & Microservices Governance
• Capital One’s Developer Tooling
• Co-author of “Microservice Architecture”
inadarei
4. Align Around the Goal
“Why does Capital One care
about Microservices?”
inadarei
5. 11
“Speed and Safety at Scale and in Harmony”
Need for coordination is why we constantly
compromise between speed and safety.
Microservices Way:
inadarei
6. Microservices close the alignment loop!
AgileProcess:
Operations:
Product:
DevOps & CI/CID
Lean Product Dev
Toyota Production System: Think In Small Batches
Architecture: Microservices
inadarei
7. Data: Batch-size Is a Strong Predictor of Performance
Source: Accelerate, by Nicole Forsgren, PhD, Jez Humble, and Gene Kim
8. Getting to High-Performance Teams:
1 Measure Autonomy, to Gauge Progress
2 Combine Small Batches with Clarity on Long-Term View
3 Facilitate Experimentation and Design-Thinking
And yes, our teams are small (5 devs max), but that’s not the point.
inadarei
9. 1. Measure Autonomy, to Gauge Progress
Because:
Knowing you’re on the right path is paramount.
inadarei
10. 1. Measure Autonomy, to Gauge Progress
Initial attempts: tracking disruption events (qualitative).
Eventual (quantitative): Forsgren et al.’s metrics:
1. Lead time
2. Deploy frequency
3. Time to restore service
11. 2. Clarity on Long-Term View
Because:
99.999% of tech teams have Agile Myopia
(not a scientific fact, but a strong belief based on years of observation)
inadarei
13. 3. Experimentation and Design-Thinking
Because:
Product-Market Mismatch and Rework
are devastatingly expensive.
inadarei
14. 3. Experimentation and Design-Thinking
“You’ve gotta start with the customer experience and
work backwards to the technology. You can’t start with
the technology and figure-out where you’re gonna sell
it.”
– Steve Jobs at the 1997 WWDC
@source: https://youtu.be/FF-tKLISfPE?t=114
16. At the beginning:
1. ECS-based container deployments +
custom code, Mesos, Nomad, Kube
2. Dozen+ of CI/CD implementations
3. Non-standard secrets management
4. Resiliency tests ran quarterly
5. Dozens of teams building their own infra
inadarei
17. Now and Going Forward:
1. Kubernetes packaged for Capital One
2. Federated Ops of Kubernetes Clusters
3. Unified CI/CD (using Spinnaker) and auditable release
management with inner-sourced pipeline patterns.
4. Enterprise Solutions: Hashicorp Vault, chaos
engineering, test execution, code analysis, container
analysis
inadarei
19. Kubernetes is Architect’s Tool (not just ops)
1. PODs make sidecars an architectural
reality
2. Istio is the best thing since sliced bread
3. Being ubiquitous is a value by itself
inadarei
25. Example: Actors for DigiCoins
1. DigiCoin customer – a user using digicoin apps to
purchase or exchange digital coins.
2. DigiCoin Wallet – the platform
3. DigiCoin app – mobile app
4. …
DigiCoins is a fake exchange and wallet for digital currency. This is an entirely imaginary example for demo purposes only
inadarei
26. API Design: JTBDs
When _____ , I want to _____ , so I can _____ .
Circumstance, motivation, goal
Based on Alan Klement’s JTBD Story template https://jtbd.info/replacing-the-user-story-with-the-job-story-af7cdee10c27
inadarei
27. Example: JTBDs for DigiCoins
1. When a customer wants to buy coins they want to
see current price of a coin so that they can estimate
their buying power.
2. When a customer initiates coin purchase, they need
to add or reuse a payment method, so that they can
provide funds for the purchase
3. When a customer finalizes a coin purchase,
DigiCoins needs to charge the payment method, so
that it can make money
DigiCoins is a fake exchange and wallet for digital currency. This is an entirely imaginary example for demo purposes only
inadarei
28. Example: Queries for DigiCoins
1. Lookup of a coin “price”
1. Input: digital coin id, traditional currency code.
2. Response: conversion rate
2. Lookup of existing payment methods
1. Input: user identifier, payment type (coin, credit, bank transfer etc.)
2. Response: uuid and details of the payment method, status of the
payment method
DigiCoins is a fake exchange and wallet for digital currency. This is an entirely imaginary example for demo purposes only
inadarei
29. Example: Action(s) for DigiCoins
1. Charge a payment method to fund coin purchase
1. Input: payment method identifier and details.
2. Response: success or failure code
DigiCoins is a fake exchange and wallet for digital currency. This is an entirely imaginary example for demo purposes only
inadarei
30. Example: OpenAPI Spec
DigiCoins is a fake exchange and wallet for digital currency. This is an entirely imaginary example for demo purposes only
inadarei
32. Our Design Process
1. Find Bounded Contexts w/ Event Storming
2. Identify Actors
3. Identify JTBDs
4. Define Queries and Actions
5. Design OpenAPI Spec
6. Get feedback on the spec
7. Implement APIs (usually w/ microservices)
inadarei