A (simpler) Microservices Definition
A Microservice is a unit of business logic.
A Microservice application is a distributed composition of business logic via services.
2. datawire.io
Background...
1. Philip Lombardi @ Datawire.io (twitter: @TheBigLombowski)
2. Datawire.io is building a Microservices Development Kit to enable developers to
build resilient microservice applications.
3. Check us out after meetup: https://datawire.io
2
3. datawire.io
This is a Python talk… really...
1. Datawire is a first-class Python shop.
2. We love Python so much, we use it to write code in other languages (yes, we have
a compiler written in Python).
3. Python & Microservices complement each other really well.
4. Time permitting I’ll do some demo’s with Python microservices...
3
6. datawire.io
Common Microservice Definitions (as applied to Legos)
A piece of plastic that is…
● Small
● Self contained
● Narrow in scope
● Bounded context
● Independent
● Loosely coupled
What’s missing…?
6
7. datawire.io
A (simpler) Microservices Definition
A Microservice is a unit of business logic.
A Microservice application is a distributed composition of
business logic via services.
7
13. datawire.io
Topologies have always been a thing
● Topologies aren’t new, they have always been the bread and butter of distributed
systems design
● In fact we’ve all been stuck living in the same topology for a while now
13
14. datawire.io
Topologies are powerful
Information flows through topologies like water through a pipe or current on a wire
Probably the most important factor in the performance of a distributed system
14
15. datawire.io
Topologies are the purview of the Elite
Architects define the topology
Developers get to plug in business logic in a few predefined places
15
16. datawire.io
Microservices bring topology to Developers
Developers define the topology
Business logic is distributed rather than being centralized
The topology changes and grows much more quickly
16
19. datawire.io
Operational Scale (Linear Topology)
19
Ingest Source of Truth Transform Present
Template for many data driven businesses…
Network Disk Disk + CPU Network + CPU
25. datawire.io
Can topologies give me a death star?
They help, but not quite… you need to build topologies quickly!
25
Organizational Scale
AgilityVelocity
27. datawire.io
Common Explanations
Both are topologies of services
● Fine grained SOA
● Integration pattern vs application components
● Organizational factors...
We need a better definition…
● These explanations ignore the process that yields the topology
27
28. datawire.io
Architecture and Development are different processes
Both can yield topologies of services, but SOA won’t build your death star. For that you
need agile topologies
Microservices: Service Oriented Development
Architecture:
● Lots of up front thinking
● Slow iteration cycle
● Months/years until you get feedback
Development:
● Experimental
● Rapid iteration cycle
● Minutes/hours until you get feedback
28
29. datawire.io
You need a new Mindset and new Tooling
So, how do I build Agile Topologies?
29
31. datawire.io
What’s the new Mindset?
The role of architecture changes
● An architect’s job is to enable developers, not confine them
● Architecture teams -> developer infrastructure, developer happiness, …
31
Up Front Thinking Experimentation
33. datawire.io
What tools enable experimentation & rapid iteration?
You need three things when you decentralize your business logic:
1. A way to make your topology resilient to software bugs
○ Where does my catchall go?
○ Minimize impact of bugs reaching production
○ Graceful degradation instead of catastrophic failure
2. A robust tool for deployment pipelines that enables both service and system level
testing
○ Where do your integration tests go?
3. Good visibility into the state of the running system
○ Where does my printf go?
33
34. datawire.io
How do you build these tools?
It’s all about how you manage your topology
● Transition from DNS -> Discovery
● Central load balancers -> Smart Endpoints
34
35. datawire.io
Routing table is (relatively) static
Routing policy is global
Traditional Topology Management
35
Client
DNS
Load Balancer
Serverresolve
traffic
36. datawire.io
Routing table is updated in realtime
Routing policy is local
Microservices Topology Management
36
Client
Discovery
Server
heartbeats
routes
Smart
Endpoint
38. datawire.io
Summary
Useful definitions:
● Microservice: A node in an Agile Service Topology
● Microservices: Service Oriented Development
How to build a death star (trifecta of velocity, agility, and organizational scale):
● Mindset: architecture -> experimentation
● Tooling: Discovery + Smart Endpoints
With these tools you can get started in half an hour instead of spending six months
rearchitecting
38
39. datawire.io
To learn more
Contact me:
● plombardi@datawire.io
● Twitter: @TheBigLombowski
Jobs
● https://www.datawire.io/careers/
○ Python, Java|Scala|Kotlin, Go and Kubernetes Developers Wanted!
○ Hiring for DevOps | SRE role!
Try
● https://github.com/datawire/mdk
● https://www.datawire.io
39