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

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

Embed Size (px)

Citation preview

A Rose By Any Other Name… Monoglot Microservices

Martin Feckie @mfeckieAndy Marks @andee_marks

Background

A B

E

DC

Service Bus

EDA

BC

Point-to-point/Synchronous

Event-driven/Asynchronous

Shopping Cart

Fulfilment

RESTful JSON over HTTP(S)

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

Shopping Cart

Fulfilment

Golang

Scala

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

⇒ ?❌Polyglot❌HTTP

❌Polyglot❌HTTP

Design failure↑ for

Design for failure

Shopping Cart

public void save(){

try {

db.persist(this);

} catch (Exception ex){

ex.printStacktrace();

// That should fix it!

}

}

BANG!

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!

A B

E

DC

BANG!

BANG!BANG!

BANG!

A B

E

DC

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]

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)

Design for

failure

HorizontalScaling

Observability

RecoveryDiscovery

Design for

failure

HorizontalScaling

Observability

RecoveryDiscovery

Design

for

failure

Horizontal

Scaling

ribbon

Design for

failure

HorizontalScaling

Observability

RecoveryDiscovery

Design

for

failure

Discovery

eureka

Design for

failure

HorizontalScaling

Observability

RecoveryDiscovery

Design

for

failure

Observabi

lity

http://zipkin.io/

Design for

failure

HorizontalScaling

Observability

RecoveryDiscovery

AA

AAA B

E

DC

AA

AAA B

E

DC

Kafka

DNS

Design for

failure

HorizontalScaling

Observability

RecoveryDiscovery

The OTP

Conclusion

❌Polyglot❌HTTP

Design failure↑ for

A B

E

DC

Service Bus

EDA

BCA B

A

B

Thanks!Martin Feckie @mfeckie

Andy Marks @andee_marks