Top Banner
A Rose By Any Other Name… Monoglot Microservices Martin Feckie @mfeckie Andy Marks @andee_marks
32

YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Jan 21, 2018

Download

Technology

Andy Marks
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

A Rose By Any Other Name… Monoglot Microservices

Martin Feckie @mfeckieAndy Marks @andee_marks

Page 2: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Background

Page 3: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

A B

E

DC

Service Bus

EDA

BC

Point-to-point/Synchronous

Event-driven/Asynchronous

Page 4: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Shopping Cart

Fulfilment

RESTful JSON over HTTP(S)

Page 5: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Organised around

business capabilities

Productsnot

projects

Smart

endpoints and

dumb pipes

Decentralised governance

Decentralised data

management

Infrastructureautomation

Design for failure

Evolutionary design

Componentisationvia services

http://martinfowler.com/articles/microservices.html

Smart endpoints and dumb

pipes

Page 6: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Shopping Cart

Fulfilment

Golang

Scala

Page 7: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Organised around

business capabilities

Productsnot

projects

Smart endpoints and dumb

pipes

Decentralised

governance

Decentralised data

management

Infrastructureautomation

Design for failure

Evolutionary

design

Componentisationvia services

http://martinfowler.com/articles/microservices.html

Evolutionary design

Decentralised governance

Page 8: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

⇒ ?❌Polyglot❌HTTP

Page 9: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

❌Polyglot❌HTTP

Design failure↑ for

Page 10: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Design for failure

Page 11: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Shopping Cart

public void save(){

try {

db.persist(this);

} catch (Exception ex){

ex.printStacktrace();

// That should fix it!

}

}

BANG!

Page 12: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Shopping Cart

public void save(){

try {

db.persist(this);

} catch (SQLNonTransientException ex){

// Authentication failure, etc.

} catch (SQLTransientException ex){

// Timeout, etc.

} catch (SQLRecoverableException ex){

// Connection reset, etc.

} catch (Exception ex){

ex.printStacktrace();

}

}

BANG!

Page 13: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

A B

E

DC

BANG!

BANG!BANG!

BANG!

Page 14: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

A B

E

DC

Page 15: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

P(F) = 0.0000009

A B

E

DC

P(F) = 0.000045

P(F) = 0.000020P(F) = 0.000020

P(F) = 0.00000317

P(F) = 0.0000312

P(F) = 0.0000007

P(F) = 0.0000098P(F) = 0.0000014

[P(F) = Probability of Failure]

Page 16: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

A B

EP(F) = 0.000045

P(F) = 0.000020

P(F) = 0.00000317

P(F) = 0.0000312

P(F) = 0.0000007

P(X or Y) = P(X) + P(Y)

Page 17: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Design for

failure

HorizontalScaling

Observability

RecoveryDiscovery

Page 18: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Design for

failure

HorizontalScaling

Observability

RecoveryDiscovery

Page 19: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Design

for

failure

Horizontal

Scaling

ribbon

Page 20: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Design for

failure

HorizontalScaling

Observability

RecoveryDiscovery

Page 21: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Design

for

failure

Discovery

eureka

Page 22: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Design for

failure

HorizontalScaling

Observability

RecoveryDiscovery

Page 23: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Design

for

failure

Observabi

lity

http://zipkin.io/

Page 24: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Design for

failure

HorizontalScaling

Observability

RecoveryDiscovery

Page 25: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

AA

AAA B

E

DC

Page 26: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

AA

AAA B

E

DC

Kafka

DNS

Page 27: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Design for

failure

HorizontalScaling

Observability

RecoveryDiscovery

Page 28: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

The OTP

Page 29: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Conclusion

Page 30: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

❌Polyglot❌HTTP

Design failure↑ for

Page 31: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

A B

E

DC

Service Bus

EDA

BCA B

A

B

Page 32: YOW West 2016: "A Rose By Any Other Name: Monoglot Microservices"

Thanks!Martin Feckie @mfeckie

Andy Marks @andee_marks