M I C R O S E R V I C E S
D E C O U P L I N G A P I S T H R O U G H
M I C R O S E R V I C E S
D E C O U P L I N G A P I S T H R O U G H
W H O A M I ?
• David Simons
(@SwamWithTurtles)
• Technical Lead for
Softwire
• Hacker specialising in
Node and Java
M Y E X P E R I E N C E
W I T H A P I S
• Focused on web
development
• Utilise data from our own,
or third party APIs to affect
rendered data
W H AT I WA N T T O
TA L K A B O U T…
• What problems do
microservices solve?
• What is a microservice?
• How can I start
implementing
microservices?
W H AT P R O B L E M S D O
M I C R O S E R V I C E S S O LV E ?
Q U E S T I O N 1 :
W H AT D O W E
A S P I R E F O R I N
A G O O D A P I ?
W H AT M A K E S A G O O D A P I ?
HATEOS-y
Sensibly named
Ignorant of Consumers
Well Maintained
Tested
Appropriate
Extensible
Hard to Misuse
Secure Useful
High Quality Data
RESTful
Easy to Adopt
Resilient
Performant
Versioned
Declarative
Flexible output formats
Stable
Well Documented
A M I C R O S E R V I C E
A R C H I T E C T U R E M A K E S
Y O U R A P I S M O R E :
D E C O U P L E D , R E U S A B L E
A N D S C A L A B L E
M Y C L A I M …
W H AT I S A
M I C R O S E R V I C E ?
Q U E S T I O N 2 :
F O C U S E D
A R O U N D
B U S I N E S S
C O N C E R N S
M I C R O S E R V I C E S A R E …
M I C R O S E R V I C E S
A R E N O T L AY E R E D
A R C H I T E C T U R E S
B AT C H D ATA P R O C E S S
D ATA A C C E S S L AY E R
P R E S E N TAT I O N T I E R
M E S S A G E Q U E U E
B U S I N E S S
C O N C E R N S
B AT C H D ATA P R O C E S S
D ATA A C C E S S L AY E R
P R E S E N TAT I O N T I E R
TaxPricing
I N D E P E N D E N T LY
D E P L O YA B L E
M I C R O S E R V I C E S A R E …
B U S I N E S S
C O N C E R N S
B AT C H D ATA P R O C E S S
D ATA A C C E S S L AY E R
P R E S E N TAT I O N T I E R
TaxPricing
B U S I N E S S
C O N C E R N S
B AT C H D ATA P R O C E S S
D ATA A C C E S S L AY E R
P R E S E N TAT I O N T I E R
Tax v2Pricing
T H E
F R A C T U R E D
M O N O L I T H
B E WA R E …
C O N TA I N I N G
A L L Y O U R
L O G I C
A M I C R O S E R V I C E H A S …
- M A R T I N F O W L E R
“Smart Endpoints, Dumb Pipes”
H O W D O E S T H I S M AT C H
O U R “ I D E A L A P I ” ?
D E C O U P L E D
• Implementation can’t be
leaked due to separate
deployments
• All the intelligence is in the
system
R E U S A B L E
• Services contain “just
enough” information to be
useful in multiple places
• No danger of long strands
of dependencies
S C A L A B L E
• Separate systems can each
be deployed
independently of the other
• Smaller systems have less
requirements in terms of
hardware
M I C R O S E R V I C E S A R E N O T
R I G H T F O R E V E RY O N E
WA R N I N G
T H E B A D
B I T S …
• Increased latency through
message passing
• Added work and
complexity
• Issues are less
discoverable
• Increased licensing costs
on some stacks
T H E B A D
B I T S …
• Similar issues exist with
any “encapsulation”
methodology:
• OOP
• Web Components
H O W C A N I S TA R T T O
I M P L E M E N T T H E M ?
Q U E S T I O N 3 :
T H E R E ’ S T O O M U C H T O
TA L K A B O U T I N O N E TA L K .
WA R N I N G
C R E AT I O N
• Do it yourself!
• Lightweight languages
such as NodeJS make
API creation easy
• App creation
frameworks like Spring
Boot (Java) and
Yeomen (JS)
D E P L O Y M E N T
• Automate it as much as
possible
• Old favourites: Continuous
Integration/Source Control
• Puppet/Chef for config
management
• Docker can automate
microservice containers
T O
C O N C L U D E …
• APIs work best when they
allow separate parts of
your system to behave
independently
• Using microservices can
enforce this pattern
• The Ecosystem is big - and
growing!