decoupled apis through microservices

Post on 13-Apr-2017

267 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

M I C R O S E R V I C E SD E C O U P L I N G A P I S T H R O U G H

David Simons @SwamWithTurtles

M I C R O S E R V I C E SD E C O U P L I N G A P I S T H R O U G H

David Simons @SwamWithTurtles

W H O A M I ?

• David Simons (@SwamWithTurtles)

• Freelance Tech Lead/Consultant

• 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 W A N T T O TA L K A B O U T…

• What problems do microservices solve?

• What is a microservice?

• An example!

• When are microservices wrong?

• 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 ConsumersWell 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

D E C O U P L E D

A G O O D A P I I S …

R E U S A B L E

A G O O D A P I I S …

S C A L A B L E

A G O O D A P I I S …

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 :

Independently deployable services focused around business concerns,

which contain all your logic.

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”

S M A R T P I P E S

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

• Corollary: Microservice architectures can be polyglot

• 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

A N E X A M P L E !

• Youth-targeted BBC news site

• Targeting a range of devices

• Needing to deal with a large amount of traffic and spikes

S 3

N E W S B E AT ‘ M I C R O S E R V I C E ’ A R C H I T E C T U R E

B B C C O N T E N T S E R V I C E S

F R O N T- E N D F E T C H & D I S P L AY

L B SQSR E N D E R E R S

• Robust

• Encapsulated and Decoupled

• Extensible

W H AT ’ S T H E D O W N S I D E ?

Q U E S T I O N 3 :

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

M O R E R E Q U E S T S

• Increased latency

• Less suitable for mobile platforms

M O R E C O M P L E X

• Upfront costs in terms of set-up and maintenance

• Architecture can be more complex

• Issues are less discoverable

C O S T

• Added complexity

• Repeated licensing costs for non-open source platforms

B U T…

• 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 4 :

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

S T E P # 1 :

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)

C R E AT I O N

• DropWizard

C R E AT I O N

• Automated API Generation

• e.g. Swagger, Strongloop

P O P U L AT I O N

S T E P # 2 :

J U S T C O D E I T !

P O P U L A T I O N

T H I N G S C A N B E H A R D E R

B U T…

S O W H E R E D O W E F O C U S ?

• Security

• Greater documentation

• Integration testing

A L S O T E A M C H A N G E

• “organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations"

• - Conway’s Law

M E S S A G E PA S S I N G

S T E P # 3 :

M E S S A G E PA S S I N G

• “Smart Endpoints, Dumb Pipes” - Martin Fowler

• All the standard ways of consuming APIs - e.g. HTTP, Message Queues

D E P L O Y M E N T

S T E P # 4 :

D E P L O Y M E N T

• Five years ago:

• Work hard

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 ES O …

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!

T H A N K S

@swamwithturtles swamwithturtles.com

top related