WTF is a microservice?
Rafael Schloming
Co-Founder & Chief Architect
datawire.io
History
Datawire
● Founded in 2014
● Focused on microservices
Me
● Lots of distributed systems experience
● Starting from zero with microservices
2
datawire.io
What is a microservice?
Wikipedia: “...no industry consensus…”
● “...implementation approach for SoA…”
● “...processes that communicate with each other to fulfill a goal…”
● “...Naturally enforces a modular structure...”
Everything else:
● Volumes of essays… good, bad, and ugly...
3
datawire.io
Three aspects of Microservices
Technology
Process
People
4
datawire.io
From Three Sources
5
Experts Bootstrapping
Migrating
datawire.io
Starting Point
Technical:
● An application composed of a network of small services
● Building your application from microservices forces you to create clear
boundaries, better abstractions, ...
Process:
● ???
People:
● ???
6
datawire.io
The Expert Source
Read just about every firsthand story out there
Went to conferences
Talked to everyone we could
Started the practitioner summit
And armed with a little bit of knowledge, we started filling in our picture…
7
datawire.io
People Picture
Developer Happiness/Tooling/Platform Team
● Builds the infrastructure
Service teams
● Builds the features
8
datawire.io
Technical Picture
Control Plane
● Service Discovery
● Logging + Metrics
● Configuration
● Smart Endpoints
Traffic Layer
● HTTP
● RPC
● Messaging
9
Reference Architecture
datawire.io
First Picture
Technical:
● A network of small services
● Connected via a control plane and traffic layer
Process:
● ???
People:
● Platform team and service teams
10
datawire.io
The Bootstrap Perspective
Five engineers building an out of the box control plane...
Ingest interesting application level events:
● start, stop, heartbeat events
● log messages
Store them in an appropriate piece of infrastructure:
● Service registry
● Log store
Transform and Present:
● Realtime view of: routing table, service health
● Historic view of: request traces, ...
11
datawire.io
Ubiquitous Data Processing Pipeline
12
Ingest Source of Truth Transform Present
Template for many data driven businesses…
datawire.io
V1: Started with Discovery
Requirements:
● highly available
● low throughput
● low latency
● low operational complexity
● able to survive a complete restart
● capable of handling spikes
Initial Choices:
● vert.x + hazelcast
● websockets
● smart clients
● auth0 + python shim
Total Services: 2
13
datawire.io
V2: Added Tracing (PoC)
Requirements:
● high throughput
● highish latency ok
● cannot impact application
Initial choices:
● vert.x, hazelcast (only retained transient buffer of last 1000 log messages)
● websockets
● smart circular buffer minimized impact on application
Total Services: 3
14
datawire.io
V3: Added Persistence for Tracing
Requirements:
● keep extended history
● provide full text search
● filtering, sorting, etc
Initial Choices:
● elasticsearch for storage/search
● query service
Total Services: 4
15
datawire.io
First hint of pain...
Rerouting data pathways:
● touched multiple services
● coupled changes
Poor local dev experience:
● manually fire up and wire the whole fabric
Slow deployment pipeline:
● bunched up changes
All this resulted in a big scary cutover
16
datawire.io
V4: Adding Persistence for Discovery
Requirements:
● track errors associated with particular service nodes
● store routing strategies
Initial Choices:
● postgres (RDS) for persistence
Yet another big cutover… enough is enough!
Let’s fix our tooling once and for all...
17
datawire.io
Deployment Requirements
Stuff we had tried:
● Deliver everything as a docker image
○ Still too much wiring to bootstrap the system
● Use kubernetes for everything
○ Nice dev experience with minikube, but we use amazon services
Need to meet both dev & operational requirements…
● Fast dev cycle
● Good visibility
● Fast rollback
● Ability to leverage commodity services
18
datawire.io
Deployment Redesign
● Complete system definition in git
○ Contains all the information necessary to bootstrap the system from scratch in all of its operating
environments…
● System definition is well factored with respect to its environments…
○ Abstract definition: “my service needs postgres and redis”
○ Development: service -> docker image, postgres -> docker image, redis -> docker image
■ Use minikube to run the whole system
○ Test: <same as dev for now>
○ Production: service -> docker image, postgres -> RDS, redis -> elasticache
■ Kubernetes cluster for stateless services
● Tooling caters to the needs of each environment
○ Development: fast feedback cycle
○ Test: repeatable environments
○ Production: quick and safe updates/rollbacks
● Tooling helps maintain environment parity
19
datawire.io
DevOps?
DevOps is presented as a solution to an organizational problem, but we all sat in the
same room…
We were thinking about operational factors from day one:
● throughput, latency, availability, …
● building a service, not a server
This forced us to follow an incremental process:
● tooling for this process was inadequate
● when we thought about the process it helped us figure out the tooling
20
datawire.io
Process: Architecture vs Development (SoA vs SoD)
Systems (their shape in particular) are traditionally architected
Architecture
● lots of up front thinking
● slow feedback cycle
Development
● frequent small changes
● quick feedback cycle
● measure the impact at every step
Microservices are about enabling a developmental methodology for systems
21
datawire.io
Methodology for Developing Systems
Principles
● small frequent changes
● rapid feedback and good visibility
Applied to codebases:
● Tooling for rapid feedback: compilers, incremental builds, test suites
● Tooling for good visibility: printf, logging, debuggers, profilers
Applied to systems:
● Key characteristics go beyond just logic and correctness
● Performance within specified tolerance of the running system is a critical feature
Tests don’t cut it anymore...
22
datawire.io
Update the Dev Cycle
Tests assess impact on correctness...
Build -> Test -> Deploy
We need a way to assess impact on the system…
Build -> Test -> Assess Impact -> Deploy
How do you measure system level impact?
● Measure impact against defined Service Level Objectives (SLOs):
○ throughput, latency, and availability (error rate)
23
datawire.io
Back to the Experts...
● Canary Testing
● Circuit Breakers
● Dark Launching
● Tracing
● Metrics
● Deployment
All ways to enable the dev cycle for running systems:
● make small frequent changes
● measure the impact on the running system
● provide good visibility
24
datawire.io
Second Picture
Technical:
● A network of small services
● Scaffolding to safely enable small frequent changes
Process:
● Service oriented Development
● Small frequent changes with good visibility and feedback
People:
● Platform team and service teams
25
datawire.io
The Migration Perspective
Variety of stages...
● Monolith: django, rails, ...
● Monolith++: mothership + several little ducklings
● SoA-ish: small flock of services (maybe 5-10)
● Inbetweeners…
Some moving really slowly...
● Months to create just one microservice…
Some moving much faster…
● What’s the difference?
26
datawire.io
Migration is about people
Starting point: team vs tech
● Picking a tech stack for the entire eng org to adopt is slow
○ lots of organizational friction
● Replatforming/refactoring an entire existing monolith is slow
○ lots of organizational and orchestrational friction
● Creating a relatively autonomous team to tackle a particular problem in the form
of a service
Growing pains: stability vs progress
● some orgs hit a sticking point, some didn’t
27
datawire.io
The People Picture: Dividing up the Work
The work has two aspects:
● build the features (dev)
● keeping the system running (ops)
You can’t usefully divide up the work along these lines:
● new features are the biggest source of instability (bugs)
● separate roles creates misaligned incentives ⇒ (devops)
● yet a big part of the work is keeping things running
Microservices is about how to go about dividing up work:
● break the big app into smaller ones
● divide operational responsibility in a way that aligns incentives
28
datawire.io
Third Picture
Technical:
● A network of small services
● Scaffolding to quickly and safely enable small frequent changes
Process:
● Service oriented Development
● Small frequent changes with good visibility and feedback
People:
● Dividing up the work
● Service teams deliver features to users
● Platform team supports service teams
29
datawire.io
The Hard Way
30
1. Start with Tech
2. Reverse Engineer The Process + People
3. Make lots of mistakes along the way
4. Learn from them
datawire.io
The Easy Way
31
1. Understand the principles of People and
Process
2. Use this as a framework to
a. pick tech that fits
b. learn from other people's mistakes
datawire.io
Microservices Cheat Sheet (What, Why & How)
People Process Technology
Microservices are a way to divide the work of
building a cloud application
Microservices are built from a process of
frequent small changes with rapid feedback
and good visibility
Microservices are an application that is made up
of a network of small services
This work falls into two categories:
● Keep the system running (ops)
● Build new features (dev).
Dividing work along these categories creates
conflicting incentives between progress and
stability. New features from dev eventually
become the biggest source of instability for
ops.
Unifying these roles (devops) allows you to
minimize the tradeoff between progress and
stability, but you now need to divide up the
work by dividing up the app. This results in a
network of services.
This is the application of the traditional dev
cycle to systems rather than codebases, and
for it to work, key system properties must
become a first class features for developers.
This requires dev tooling to support quickly and
safely assessing system impact.
This requires fast deployment tooling and good
visibility into key system level properties:
● Throughput
● Latency
● Availability (error-rate)
Depending on your system, this may require
tooling for:
● Fancy request routing (for canary
testing, dark launching)
Give your dev teams operational responsibility!
Define service level objectives & agreements
for each service:
SLOs: throughput, latency, availability
SLAs: what happens when these aren’t met
Commoditize common operational overhead.
Extend the dev cycle to include a stage to
assess the impact on key system properties
(SLOs)
Build -> Test -> Deploy
⇒
Build -> Test -> Assess Impact -> Deploy
Start with a fast deployment pipeline that
incorporates basic system level metrics and
monitoring for each service.
32
datawire.io 33
Questions?
datawire.io
Microservices Cheat Sheet (What, Why & How)
People
Microservices are a way to divide the work of building a cloud application
Two aspects of work: keep it running (ops), build new features (dev)
Dividing by aspect creates conflicting incentives between progress and stability.
Unifying roles (devops) to minimize tradeoff... divide work by dividing the app
Give your dev teams operational responsibility!
Define service level objectives & agreements for each service:
SLOs: throughput, latency, availability
SLAs: what happens when these aren’t met
Commoditize common operational overhead.
34
datawire.io
Microservices Cheat Sheet (What, Why & How)
Process
Microservices are built from a process of frequent small changes with rapid
feedback and good visibility
This is the application of the traditional dev cycle to systems rather than
codebases, and for it to work, key system properties must become a first class
features for developers.
Extend the dev cycle to include a stage to assess the impact on key system
properties (SLOs)
Build -> Test -> Deploy
⇒
Build -> Test -> Assess Impact -> Deploy
35
datawire.io
Microservices Cheat Sheet (What, Why & How)
Technology
Microservices are an application that is made up of a network of small services
This requires dev tooling to support quickly and safely assessing system impact.
This requires fast deployment tooling and good visibility into key system level
properties:
● Throughput
● Latency
● Availability (error-rate)
Depending on your system, this may require tooling for:
● Fancy request routing (for canary testing, dark launching)
Start with a fast deployment pipeline that incorporates basic system level metrics
and monitoring for each service.
36
datawire.io
DevOps: you can’t split the work (along these lines)
37
Dev
Ops
User User
DevOps
datawire.io
Features are the largest source of bugs
38
Dev
Dev
Dev
Dev
Ops
Ops
User
User
datawire.io
Microservices: Divide the work by dividing the app
39
Dev
User
User
Infra
Dev
Dev
DevOps
datawire.io
Dividing up Work
40
Dev
Dev
DevDev
Dev
Dev
Dev
Infra
User
User
User
User
Ops
datawire.io 41

More Related Content

PDF
O'Reilly Software Architecture Conference NYC 2017: Move fast and s/break/mak...
PDF
Microservices Standardization - Susan Fowler, Stripe
PDF
Microservices 101 - The Big Why?
PPTX
LJCConf 2013 "Chuck Norris Doesn't Need DevOps"
PPTX
microXchg 2018: "What is a Service Mesh? Do I Need One When Developing 'Cloud...
PPTX
LSCC 2014 "Crafting DevOps: Applying Software Craftsmanship to DevOps"
PDF
AllDayDevOps: "Microservices: The People and Organisational Impact"
PDF
The seven more deadly sins of microservices final
O'Reilly Software Architecture Conference NYC 2017: Move fast and s/break/mak...
Microservices Standardization - Susan Fowler, Stripe
Microservices 101 - The Big Why?
LJCConf 2013 "Chuck Norris Doesn't Need DevOps"
microXchg 2018: "What is a Service Mesh? Do I Need One When Developing 'Cloud...
LSCC 2014 "Crafting DevOps: Applying Software Craftsmanship to DevOps"
AllDayDevOps: "Microservices: The People and Organisational Impact"
The seven more deadly sins of microservices final

What's hot (20)

PDF
QCon SF 2017 - Microservices: Service-Oriented Development
PDF
Reactive Principles and Microservices
PPTX
O'Reilly SACON "Continuous Delivery Patterns for Contemporary Architecture"
PPTX
2015 03-11_todd-fritz_devnexus_2015
PDF
OOP/MM 2017: "Seven (More) Deadly Sins of Microservices"
PPTX
Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...
PPTX
LJC 2015 "The Crafty Consultants Guide to DevOps"
PPTX
2016 open-source-network-softwarization
PPTX
LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"
PDF
Joyent circa 2006 (Scale with Rails)
PDF
JAXLondon 2017 "Continuous Delivery with Containers and Java"
PPTX
On microservices and monoliths
PDF
Platform values, Rust, and the implications for system software
PDF
Cloud Foundry OpenTour Kiev Keynote
PDF
What they don't tell you about micro-services
PDF
Getting Started with Docker - Nick Stinemates
PPTX
SDN Demystified, by Dean Pemberton [APNIC 38]
PPTX
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...
PDF
A Gentle introduction to microservices
PPTX
Kubernetes, Toolbox to fail or succeed for beginners - Demi Ben-Ari, VP R&D @...
QCon SF 2017 - Microservices: Service-Oriented Development
Reactive Principles and Microservices
O'Reilly SACON "Continuous Delivery Patterns for Contemporary Architecture"
2015 03-11_todd-fritz_devnexus_2015
OOP/MM 2017: "Seven (More) Deadly Sins of Microservices"
Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...
LJC 2015 "The Crafty Consultants Guide to DevOps"
2016 open-source-network-softwarization
LJC: "Chuck Norris Doesn't Do DevOps...but Java developers might benefit"
Joyent circa 2006 (Scale with Rails)
JAXLondon 2017 "Continuous Delivery with Containers and Java"
On microservices and monoliths
Platform values, Rust, and the implications for system software
Cloud Foundry OpenTour Kiev Keynote
What they don't tell you about micro-services
Getting Started with Docker - Nick Stinemates
SDN Demystified, by Dean Pemberton [APNIC 38]
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...
A Gentle introduction to microservices
Kubernetes, Toolbox to fail or succeed for beginners - Demi Ben-Ari, VP R&D @...
Ad

Viewers also liked (20)

PPTX
Microservices are the Future! (...and always will be) - Josh Holtzman, PayPal...
PDF
Engineering and Autonomy in the Age of Microservices - Nic Benders, New Relic
PDF
Bringing Learnings from Googley Microservices with gRPC - Varun Talwar, Google
PDF
The Hardest Part of Microservices: Your Data - Christian Posta, Red Hat
PDF
Microservices Practitioner Summit Jan '15 - Scaling Uber from 1 to 100s of Se...
PDF
Microservices Practitioner Summit Jan '15 - Designing APIs with Customers in ...
PDF
Dark launching with Consul at Hootsuite - Bill Monkman
PPTX
Microservices Practitioner Summit Jan '15 - Breaking Things On Purpose - Kolt...
PDF
Microservices: The Organizational and People Impact
PDF
Microservices Practitioner Summit Jan '15 - Microservices Practitioner Summit...
PPTX
How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault
PDF
2016 - 10 questions you should answer before building a new microservice
PDF
DLJCJUG 2015: The Seven Deadly Sins of Microservices
PDF
Building microservices
PDF
Microservices Practitioner Summit Jan '15 - Don't Build a Distributed Monolit...
PDF
Microservice Memoirs - Lachlan Evanson
PDF
Microservices in Your Datacenter
PDF
Microservice, Microservice. Wherefore Art Thou, Microservice.
PDF
Microservices Practitioner Summit Jan '15 - Maximizing Developer Productivity...
ODP
Embedding Java code in a Jolie Service
Microservices are the Future! (...and always will be) - Josh Holtzman, PayPal...
Engineering and Autonomy in the Age of Microservices - Nic Benders, New Relic
Bringing Learnings from Googley Microservices with gRPC - Varun Talwar, Google
The Hardest Part of Microservices: Your Data - Christian Posta, Red Hat
Microservices Practitioner Summit Jan '15 - Scaling Uber from 1 to 100s of Se...
Microservices Practitioner Summit Jan '15 - Designing APIs with Customers in ...
Dark launching with Consul at Hootsuite - Bill Monkman
Microservices Practitioner Summit Jan '15 - Breaking Things On Purpose - Kolt...
Microservices: The Organizational and People Impact
Microservices Practitioner Summit Jan '15 - Microservices Practitioner Summit...
How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault
2016 - 10 questions you should answer before building a new microservice
DLJCJUG 2015: The Seven Deadly Sins of Microservices
Building microservices
Microservices Practitioner Summit Jan '15 - Don't Build a Distributed Monolit...
Microservice Memoirs - Lachlan Evanson
Microservices in Your Datacenter
Microservice, Microservice. Wherefore Art Thou, Microservice.
Microservices Practitioner Summit Jan '15 - Maximizing Developer Productivity...
Embedding Java code in a Jolie Service
Ad

Similar to WTF is a Microservice - Rafael Schloming, Datawire (20)

PDF
MA Microservices Meetup: Move fast and make things
PDF
Webinar: Code Faster on Kubernetes
PDF
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
PDF
From monolith to microservices
PDF
Surviving microservices
PPTX
Micro Front-End & Microservices - Plansoft
PDF
Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...
PDF
Monitoring Big Data Systems "Done the simple way" - Demi Ben-Ari - Codemotion...
PDF
Microservice architecture
PDF
Data Science in Production: Technologies That Drive Adoption of Data Science ...
PPTX
Microservices at ibotta pitfalls and learnings
PDF
Thinking DevOps in the era of the Cloud - Demi Ben-Ari
PDF
High-Speed Reactive Microservices
PDF
An illustrated guide to microservices (ploneconf 10 21-2016)
PPTX
Develop, deploy, and operate services at reddit scale oscon 2018
PDF
Microservice - Up to 500k CCU
PDF
Kenzan: Architecting for Microservices
PPTX
Do I Need A Service Mesh.pptx
PDF
Microservices
PDF
Thinking DevOps in the Era of the Cloud - Demi Ben-Ari
MA Microservices Meetup: Move fast and make things
Webinar: Code Faster on Kubernetes
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
From monolith to microservices
Surviving microservices
Micro Front-End & Microservices - Plansoft
Monitoring Big Data Systems Done "The Simple Way" - Demi Ben-Ari - Codemotion...
Monitoring Big Data Systems "Done the simple way" - Demi Ben-Ari - Codemotion...
Microservice architecture
Data Science in Production: Technologies That Drive Adoption of Data Science ...
Microservices at ibotta pitfalls and learnings
Thinking DevOps in the era of the Cloud - Demi Ben-Ari
High-Speed Reactive Microservices
An illustrated guide to microservices (ploneconf 10 21-2016)
Develop, deploy, and operate services at reddit scale oscon 2018
Microservice - Up to 500k CCU
Kenzan: Architecting for Microservices
Do I Need A Service Mesh.pptx
Microservices
Thinking DevOps in the Era of the Cloud - Demi Ben-Ari

More from Ambassador Labs (20)

PDF
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
PDF
Ambassador Developer Office Hours: Summer of Kubernetes Ship Week 1: Intro to...
PDF
Cloud native development without the toil
PPTX
Webinar: Accelerate Your Inner Dev Loop for Kubernetes Services
PDF
[Confoo Montreal 2020] From Grief to Growth: The 7 Stages of Observability - ...
PDF
[Confoo Montreal 2020] Build Your Own Serverless with Knative - Alex Gervais
PDF
[QCon London 2020] The Future of Cloud Native API Gateways - Richard Li
PDF
What's New in the Ambassador Edge Stack 1.0?
PDF
Webinar: Effective Management of APIs and the Edge when Adopting Kubernetes
PDF
Ambassador: Building a Control Plane for Envoy
PDF
Telepresence - Fast Development Workflows for Kubernetes
PDF
[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...
PDF
[KubeCon NA 2018] Effective Kubernetes Develop: Turbocharge Your Dev Loop - P...
PDF
The rise of Layer 7, microservices, and the proxy war with Envoy, NGINX, and ...
PDF
The Simply Complex Task of Implementing Kubernetes Ingress - Velocity NYC
PDF
Ambassador Kubernetes-Native API Gateway
PPTX
Micro xchg 2018 - What is a Service Mesh?
PDF
KubeCon NA 2017: Ambassador and Envoy (Envoy Salon)
PDF
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
PDF
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...
Ambassador Developer Office Hours: Summer of Kubernetes Ship Week 1: Intro to...
Cloud native development without the toil
Webinar: Accelerate Your Inner Dev Loop for Kubernetes Services
[Confoo Montreal 2020] From Grief to Growth: The 7 Stages of Observability - ...
[Confoo Montreal 2020] Build Your Own Serverless with Knative - Alex Gervais
[QCon London 2020] The Future of Cloud Native API Gateways - Richard Li
What's New in the Ambassador Edge Stack 1.0?
Webinar: Effective Management of APIs and the Edge when Adopting Kubernetes
Ambassador: Building a Control Plane for Envoy
Telepresence - Fast Development Workflows for Kubernetes
[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...
[KubeCon NA 2018] Effective Kubernetes Develop: Turbocharge Your Dev Loop - P...
The rise of Layer 7, microservices, and the proxy war with Envoy, NGINX, and ...
The Simply Complex Task of Implementing Kubernetes Ingress - Velocity NYC
Ambassador Kubernetes-Native API Gateway
Micro xchg 2018 - What is a Service Mesh?
KubeCon NA 2017: Ambassador and Envoy (Envoy Salon)
O'Reilly Software Architecture Conference London 2017: Building Resilient Mic...
Velocity NYC 2017: Building Resilient Microservices with Kubernetes, Docker, ...

Recently uploaded (20)

PDF
Convolutional neural network based encoder-decoder for efficient real-time ob...
PDF
Transform-Your-Streaming-Platform-with-AI-Driven-Quality-Engineering.pdf
PDF
Transform-Quality-Engineering-with-AI-A-60-Day-Blueprint-for-Digital-Success.pdf
PPTX
Microsoft User Copilot Training Slide Deck
PDF
“A New Era of 3D Sensing: Transforming Industries and Creating Opportunities,...
PDF
AI.gov: A Trojan Horse in the Age of Artificial Intelligence
PDF
5-Ways-AI-is-Revolutionizing-Telecom-Quality-Engineering.pdf
PDF
sustainability-14-14877-v2.pddhzftheheeeee
PPTX
GROUP4NURSINGINFORMATICSREPORT-2 PRESENTATION
PDF
The-Future-of-Automotive-Quality-is-Here-AI-Driven-Engineering.pdf
PDF
INTERSPEECH 2025 「Recent Advances and Future Directions in Voice Conversion」
PDF
4 layer Arch & Reference Arch of IoT.pdf
PDF
The influence of sentiment analysis in enhancing early warning system model f...
PDF
Transform-Your-Factory-with-AI-Driven-Quality-Engineering.pdf
PDF
Comparative analysis of machine learning models for fake news detection in so...
PPTX
future_of_ai_comprehensive_20250822032121.pptx
PDF
Accessing-Finance-in-Jordan-MENA 2024 2025.pdf
PDF
sbt 2.0: go big (Scala Days 2025 edition)
DOCX
search engine optimization ppt fir known well about this
PDF
The-2025-Engineering-Revolution-AI-Quality-and-DevOps-Convergence.pdf
Convolutional neural network based encoder-decoder for efficient real-time ob...
Transform-Your-Streaming-Platform-with-AI-Driven-Quality-Engineering.pdf
Transform-Quality-Engineering-with-AI-A-60-Day-Blueprint-for-Digital-Success.pdf
Microsoft User Copilot Training Slide Deck
“A New Era of 3D Sensing: Transforming Industries and Creating Opportunities,...
AI.gov: A Trojan Horse in the Age of Artificial Intelligence
5-Ways-AI-is-Revolutionizing-Telecom-Quality-Engineering.pdf
sustainability-14-14877-v2.pddhzftheheeeee
GROUP4NURSINGINFORMATICSREPORT-2 PRESENTATION
The-Future-of-Automotive-Quality-is-Here-AI-Driven-Engineering.pdf
INTERSPEECH 2025 「Recent Advances and Future Directions in Voice Conversion」
4 layer Arch & Reference Arch of IoT.pdf
The influence of sentiment analysis in enhancing early warning system model f...
Transform-Your-Factory-with-AI-Driven-Quality-Engineering.pdf
Comparative analysis of machine learning models for fake news detection in so...
future_of_ai_comprehensive_20250822032121.pptx
Accessing-Finance-in-Jordan-MENA 2024 2025.pdf
sbt 2.0: go big (Scala Days 2025 edition)
search engine optimization ppt fir known well about this
The-2025-Engineering-Revolution-AI-Quality-and-DevOps-Convergence.pdf

WTF is a Microservice - Rafael Schloming, Datawire

  • 1. WTF is a microservice? Rafael Schloming Co-Founder & Chief Architect
  • 2. datawire.io History Datawire ● Founded in 2014 ● Focused on microservices Me ● Lots of distributed systems experience ● Starting from zero with microservices 2
  • 3. datawire.io What is a microservice? Wikipedia: “...no industry consensus…” ● “...implementation approach for SoA…” ● “...processes that communicate with each other to fulfill a goal…” ● “...Naturally enforces a modular structure...” Everything else: ● Volumes of essays… good, bad, and ugly... 3
  • 4. datawire.io Three aspects of Microservices Technology Process People 4
  • 6. datawire.io Starting Point Technical: ● An application composed of a network of small services ● Building your application from microservices forces you to create clear boundaries, better abstractions, ... Process: ● ??? People: ● ??? 6
  • 7. datawire.io The Expert Source Read just about every firsthand story out there Went to conferences Talked to everyone we could Started the practitioner summit And armed with a little bit of knowledge, we started filling in our picture… 7
  • 8. datawire.io People Picture Developer Happiness/Tooling/Platform Team ● Builds the infrastructure Service teams ● Builds the features 8
  • 9. datawire.io Technical Picture Control Plane ● Service Discovery ● Logging + Metrics ● Configuration ● Smart Endpoints Traffic Layer ● HTTP ● RPC ● Messaging 9 Reference Architecture
  • 10. datawire.io First Picture Technical: ● A network of small services ● Connected via a control plane and traffic layer Process: ● ??? People: ● Platform team and service teams 10
  • 11. datawire.io The Bootstrap Perspective Five engineers building an out of the box control plane... Ingest interesting application level events: ● start, stop, heartbeat events ● log messages Store them in an appropriate piece of infrastructure: ● Service registry ● Log store Transform and Present: ● Realtime view of: routing table, service health ● Historic view of: request traces, ... 11
  • 12. datawire.io Ubiquitous Data Processing Pipeline 12 Ingest Source of Truth Transform Present Template for many data driven businesses…
  • 13. datawire.io V1: Started with Discovery Requirements: ● highly available ● low throughput ● low latency ● low operational complexity ● able to survive a complete restart ● capable of handling spikes Initial Choices: ● vert.x + hazelcast ● websockets ● smart clients ● auth0 + python shim Total Services: 2 13
  • 14. datawire.io V2: Added Tracing (PoC) Requirements: ● high throughput ● highish latency ok ● cannot impact application Initial choices: ● vert.x, hazelcast (only retained transient buffer of last 1000 log messages) ● websockets ● smart circular buffer minimized impact on application Total Services: 3 14
  • 15. datawire.io V3: Added Persistence for Tracing Requirements: ● keep extended history ● provide full text search ● filtering, sorting, etc Initial Choices: ● elasticsearch for storage/search ● query service Total Services: 4 15
  • 16. datawire.io First hint of pain... Rerouting data pathways: ● touched multiple services ● coupled changes Poor local dev experience: ● manually fire up and wire the whole fabric Slow deployment pipeline: ● bunched up changes All this resulted in a big scary cutover 16
  • 17. datawire.io V4: Adding Persistence for Discovery Requirements: ● track errors associated with particular service nodes ● store routing strategies Initial Choices: ● postgres (RDS) for persistence Yet another big cutover… enough is enough! Let’s fix our tooling once and for all... 17
  • 18. datawire.io Deployment Requirements Stuff we had tried: ● Deliver everything as a docker image ○ Still too much wiring to bootstrap the system ● Use kubernetes for everything ○ Nice dev experience with minikube, but we use amazon services Need to meet both dev & operational requirements… ● Fast dev cycle ● Good visibility ● Fast rollback ● Ability to leverage commodity services 18
  • 19. datawire.io Deployment Redesign ● Complete system definition in git ○ Contains all the information necessary to bootstrap the system from scratch in all of its operating environments… ● System definition is well factored with respect to its environments… ○ Abstract definition: “my service needs postgres and redis” ○ Development: service -> docker image, postgres -> docker image, redis -> docker image ■ Use minikube to run the whole system ○ Test: <same as dev for now> ○ Production: service -> docker image, postgres -> RDS, redis -> elasticache ■ Kubernetes cluster for stateless services ● Tooling caters to the needs of each environment ○ Development: fast feedback cycle ○ Test: repeatable environments ○ Production: quick and safe updates/rollbacks ● Tooling helps maintain environment parity 19
  • 20. datawire.io DevOps? DevOps is presented as a solution to an organizational problem, but we all sat in the same room… We were thinking about operational factors from day one: ● throughput, latency, availability, … ● building a service, not a server This forced us to follow an incremental process: ● tooling for this process was inadequate ● when we thought about the process it helped us figure out the tooling 20
  • 21. datawire.io Process: Architecture vs Development (SoA vs SoD) Systems (their shape in particular) are traditionally architected Architecture ● lots of up front thinking ● slow feedback cycle Development ● frequent small changes ● quick feedback cycle ● measure the impact at every step Microservices are about enabling a developmental methodology for systems 21
  • 22. datawire.io Methodology for Developing Systems Principles ● small frequent changes ● rapid feedback and good visibility Applied to codebases: ● Tooling for rapid feedback: compilers, incremental builds, test suites ● Tooling for good visibility: printf, logging, debuggers, profilers Applied to systems: ● Key characteristics go beyond just logic and correctness ● Performance within specified tolerance of the running system is a critical feature Tests don’t cut it anymore... 22
  • 23. datawire.io Update the Dev Cycle Tests assess impact on correctness... Build -> Test -> Deploy We need a way to assess impact on the system… Build -> Test -> Assess Impact -> Deploy How do you measure system level impact? ● Measure impact against defined Service Level Objectives (SLOs): ○ throughput, latency, and availability (error rate) 23
  • 24. datawire.io Back to the Experts... ● Canary Testing ● Circuit Breakers ● Dark Launching ● Tracing ● Metrics ● Deployment All ways to enable the dev cycle for running systems: ● make small frequent changes ● measure the impact on the running system ● provide good visibility 24
  • 25. datawire.io Second Picture Technical: ● A network of small services ● Scaffolding to safely enable small frequent changes Process: ● Service oriented Development ● Small frequent changes with good visibility and feedback People: ● Platform team and service teams 25
  • 26. datawire.io The Migration Perspective Variety of stages... ● Monolith: django, rails, ... ● Monolith++: mothership + several little ducklings ● SoA-ish: small flock of services (maybe 5-10) ● Inbetweeners… Some moving really slowly... ● Months to create just one microservice… Some moving much faster… ● What’s the difference? 26
  • 27. datawire.io Migration is about people Starting point: team vs tech ● Picking a tech stack for the entire eng org to adopt is slow ○ lots of organizational friction ● Replatforming/refactoring an entire existing monolith is slow ○ lots of organizational and orchestrational friction ● Creating a relatively autonomous team to tackle a particular problem in the form of a service Growing pains: stability vs progress ● some orgs hit a sticking point, some didn’t 27
  • 28. datawire.io The People Picture: Dividing up the Work The work has two aspects: ● build the features (dev) ● keeping the system running (ops) You can’t usefully divide up the work along these lines: ● new features are the biggest source of instability (bugs) ● separate roles creates misaligned incentives ⇒ (devops) ● yet a big part of the work is keeping things running Microservices is about how to go about dividing up work: ● break the big app into smaller ones ● divide operational responsibility in a way that aligns incentives 28
  • 29. datawire.io Third Picture Technical: ● A network of small services ● Scaffolding to quickly and safely enable small frequent changes Process: ● Service oriented Development ● Small frequent changes with good visibility and feedback People: ● Dividing up the work ● Service teams deliver features to users ● Platform team supports service teams 29
  • 30. datawire.io The Hard Way 30 1. Start with Tech 2. Reverse Engineer The Process + People 3. Make lots of mistakes along the way 4. Learn from them
  • 31. datawire.io The Easy Way 31 1. Understand the principles of People and Process 2. Use this as a framework to a. pick tech that fits b. learn from other people's mistakes
  • 32. datawire.io Microservices Cheat Sheet (What, Why & How) People Process Technology Microservices are a way to divide the work of building a cloud application Microservices are built from a process of frequent small changes with rapid feedback and good visibility Microservices are an application that is made up of a network of small services This work falls into two categories: ● Keep the system running (ops) ● Build new features (dev). Dividing work along these categories creates conflicting incentives between progress and stability. New features from dev eventually become the biggest source of instability for ops. Unifying these roles (devops) allows you to minimize the tradeoff between progress and stability, but you now need to divide up the work by dividing up the app. This results in a network of services. This is the application of the traditional dev cycle to systems rather than codebases, and for it to work, key system properties must become a first class features for developers. This requires dev tooling to support quickly and safely assessing system impact. This requires fast deployment tooling and good visibility into key system level properties: ● Throughput ● Latency ● Availability (error-rate) Depending on your system, this may require tooling for: ● Fancy request routing (for canary testing, dark launching) Give your dev teams operational responsibility! Define service level objectives & agreements for each service: SLOs: throughput, latency, availability SLAs: what happens when these aren’t met Commoditize common operational overhead. Extend the dev cycle to include a stage to assess the impact on key system properties (SLOs) Build -> Test -> Deploy ⇒ Build -> Test -> Assess Impact -> Deploy Start with a fast deployment pipeline that incorporates basic system level metrics and monitoring for each service. 32
  • 34. datawire.io Microservices Cheat Sheet (What, Why & How) People Microservices are a way to divide the work of building a cloud application Two aspects of work: keep it running (ops), build new features (dev) Dividing by aspect creates conflicting incentives between progress and stability. Unifying roles (devops) to minimize tradeoff... divide work by dividing the app Give your dev teams operational responsibility! Define service level objectives & agreements for each service: SLOs: throughput, latency, availability SLAs: what happens when these aren’t met Commoditize common operational overhead. 34
  • 35. datawire.io Microservices Cheat Sheet (What, Why & How) Process Microservices are built from a process of frequent small changes with rapid feedback and good visibility This is the application of the traditional dev cycle to systems rather than codebases, and for it to work, key system properties must become a first class features for developers. Extend the dev cycle to include a stage to assess the impact on key system properties (SLOs) Build -> Test -> Deploy ⇒ Build -> Test -> Assess Impact -> Deploy 35
  • 36. datawire.io Microservices Cheat Sheet (What, Why & How) Technology Microservices are an application that is made up of a network of small services This requires dev tooling to support quickly and safely assessing system impact. This requires fast deployment tooling and good visibility into key system level properties: ● Throughput ● Latency ● Availability (error-rate) Depending on your system, this may require tooling for: ● Fancy request routing (for canary testing, dark launching) Start with a fast deployment pipeline that incorporates basic system level metrics and monitoring for each service. 36
  • 37. datawire.io DevOps: you can’t split the work (along these lines) 37 Dev Ops User User DevOps
  • 38. datawire.io Features are the largest source of bugs 38 Dev Dev Dev Dev Ops Ops User User
  • 39. datawire.io Microservices: Divide the work by dividing the app 39 Dev User User Infra Dev Dev DevOps