98
Building Microservice Architectures @neal4d nealford.com

Building Microservice Architectures

  • Upload
    lylien

  • View
    225

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Building Microservice Architectures

Building Microservice Architectures

@neal4d nealford.com

Page 2: Building Microservice Architectures

AGENDA

engineeringcharacteristics

what problem

Page 3: Building Microservice Architectures

message busprocess choreographer

service orchestrator

business services BS BS BS BS BS BS

enterprise services ES ES ES ES ES ES

application services AS infrastructure services IS

abstract enterprise-level coarse-grained services owned and defined by business users

no implementation - only name, input, and output data represented as wsdl, bpel, xml, etc.

ExecuteTrade PlaceOrder ProcessClaim

Service-oriented Architecture

Page 4: Building Microservice Architectures

message busprocess choreographer

service orchestrator

business services BS BS BS BS BS BS

enterprise services ES ES ES ES ES ES

application services AS infrastructure services IS

concrete enterprise-level coarse-grained services owned by shared services teams

custom or vendor implementations that are one-to-one or one-to-many relationship with business services

CreateCustomer CalcQuote ValidateTrade

Service-oriented Architecture

Page 5: Building Microservice Architectures

message busprocess choreographer

service orchestrator

business services BS BS BS BS BS BS

enterprise services ES ES ES ES ES ES

application services AS infrastructure services IS

concrete application-level fine-grained services owned by application teams

bound to a specific application context

AddDriver UpdateAddress CalcSalesTax

Service-oriented Architecture

Page 6: Building Microservice Architectures

message busprocess choreographer

service orchestrator

business services BS BS BS BS BS BS

enterprise services ES ES ES ES ES ES

application services AS infrastructure services IS

concrete enterprise-level fine-grained services owned by infrastructure or shared services teams

implements non-business functionality to support both enterprise and business services

WriteAudit CheckUserAccess LogError

Service-oriented Architecture

Page 7: Building Microservice Architectures

message busprocess choreographer

service orchestrator

business services BS BS BS BS BS BS

enterprise services ES ES ES ES ES ES

application services AS infrastructure services IS

mediation and routing

process choreography

service orchestration

message enhancement

message transformation

protocol transformation

Service-oriented Architecture

Page 8: Building Microservice Architectures

message busprocess choreographer

service orchestrator

business services BS BS BS BS BS BS

enterprise services ES ES ES ES ES ES

application services AS infrastructure services IS

Service-oriented Architecture

maximize reusemaximize canonicality

Page 9: Building Microservice Architectures

message busprocess choreographer

service orchestrator

business services BS BS BS BS BS BS

enterprise services ES ES ES ES ES ES

application services AS infrastructure services IS

Service-oriented Architecture

incremental changeoperationally complex

Page 10: Building Microservice Architectures

Yesterday’s best practice is tomorrow’s

anti-pattern.

We inadvertently build architectures to solve outdated problems.

Page 11: Building Microservice Architectures

Architecture is abstract until operationalized.

nealford.com/memeagora/2015/03/30/architecture_is_abstract_until_operationalized.html

Page 12: Building Microservice Architectures

Architecture is abstract until operationalized.

3D 4D2D

view

controller

model

ORM ORMHibernate4.3.8

modelCustomer1.3.5

controllerCustomerInfo4.3.1

viewAngularJS1.3.15

Oracle 12c

ORMHibernate4.4.1

modelCustomer1.3.5

controllerCustomerInfo4.3.1

viewAngularJS1.3.15

Oracle 12c

nealford.com/memeagora/2015/03/30/architecture_is_abstract_until_operationalized.html

Page 13: Building Microservice Architectures

AGENDA

engineeringcharacteristics

what problem

Page 14: Building Microservice Architectures

Domain Driven Design

Page 15: Building Microservice Architectures

Bounded Context

+

Page 16: Building Microservice Architectures

api layer

client requests client requests client requests

Microservices Architecturedistributed architecture

Page 17: Building Microservice Architectures

api layer

client requests client requests client requests

separately deployed components

Microservices Architecture

Page 18: Building Microservice Architectures

api layer

client requests client requests client requests

service component

Microservices Architecture

Page 19: Building Microservice Architectures

api layer

client requests client requests client requests

bounded context

Microservices Architecture

Page 20: Building Microservice Architectures

service orchestration

api layer

client requests client requests client requests

Microservices Architecture

Page 21: Building Microservice Architectures

Monoliths vs. Microservices

Page 22: Building Microservice Architectures

Monoliths vs. Microservices

Page 23: Building Microservice Architectures

Products, not Projects

projects:

products:

‘s “You build it, you run it”

Page 24: Building Microservice Architectures

Conway’s Law“organizations which design systems ... are

constrained to produce designs which are copies of the communication structures of these

organizations”

—Melvin Conway

Page 25: Building Microservice Architectures

user interface

server-side

DBA

Page 26: Building Microservice Architectures

Orders

Shipping

Catalog

Page 27: Building Microservice Architectures

Monoliths vs. Microservices

Page 28: Building Microservice Architectures

Smart Endpoints, Dumb Pipes

<— HTTP —><— messaging —>

Page 29: Building Microservice Architectures

Standardize on integration, not platform

embrace polyglot solutions where sensible

too few languages/platforms

too many languages/platforms

Sam Newman

Building MicroservicesDESIGNING FINE-GRAINED SYSTEMS

Standardize in the gaps between services - be flexible about what

happens inside the boxes

Sam Newman

Building MicroservicesDESIGNING FINE-GRAINED SYSTEMS

Have one, two or maybe three ways of integrating, not 20.

Sam Newman

Building MicroservicesDESIGNING FINE-GRAINED SYSTEMS

Pick some sensible conventions, and stick with them.

Page 30: Building Microservice Architectures

Decentralized Data Management

versusACID BASE

Page 31: Building Microservice Architectures

Data Management

Sam Newman

Building MicroservicesDESIGNING FINE-GRAINED SYSTEMS

Avoid distributed transactions if at all possible

Decentralized

Page 32: Building Microservice Architectures

GovernanceDecentralized

Page 33: Building Microservice Architectures

Decentralized Governance

Page 34: Building Microservice Architectures

Decentralized Governance

Enterprise architects suffer from less pressure to make the correct choice(s)

in microservice architectures.

Page 35: Building Microservice Architectures

Infrastructure Automation

Page 36: Building Microservice Architectures

Small, Single Responsibility

small enough to fit in your head

rewrite over maintain

(10—1000 LOC)-ish / service

single responsibility

Page 37: Building Microservice Architectures

AGENDA

engineeringcharacteristics

what problem

Page 38: Building Microservice Architectures

Microservice

maximize easy evolution

api layer

client requests client requests client requests

Page 39: Building Microservice Architectures

support ∆Microservice is the first

architectural style developed post-Continuous Delivery.

Page 40: Building Microservice Architectures

Benefits

Page 41: Building Microservice Architectures

Microservice Implementation

http://2012.33degree.org/pdf/JamesLewisMicroServices.pdfhttp://www.infoq.com/presentations/Micro-Services

PCI Level 1 !!

Page 42: Building Microservice Architectures

Asynchronicity

Prefer timely partial over slow complete

return optimized for ranking/aggregation,

not display

Page 43: Building Microservice Architectures

Integration & Disintegration

Page 44: Building Microservice Architectures

Complected Deployments

complect, transitive verb: intertwine, embrace, especially

to plait together production

!

Page 45: Building Microservice Architectures

Evolutionary Architecture

production

Components are deployed.

Features are released.

Applications consist of routing.

Page 46: Building Microservice Architectures

Evolutionary Architecture

production

Dis-integrate services that

monitoring shows are no longer used

Page 47: Building Microservice Architectures

How Big?

rele

ase

risk

# services

Page 48: Building Microservice Architectures

Backends for Frontends

https://www.thoughtworks.com/insights/blog/bff-soundcloud

Page 49: Building Microservice Architectures

Backends for Frontends

Page 50: Building Microservice Architectures

BFF as Migration Path

Page 51: Building Microservice Architectures

AGENDA

engineeringcharacteristics

what problem

Page 52: Building Microservice Architectures

Design For Failure

clients must respond gracefully to provider failure

aggressive monitoring: - business relevant - architectural - semantic

Page 53: Building Microservice Architectures

Monitoring

Sam Newman

Building MicroservicesDESIGNING FINE-GRAINED SYSTEMS

You have to get much better at monitoring.

Page 54: Building Microservice Architectures
Page 55: Building Microservice Architectures

Aggregating Monitors

Response TimeResponse Time

Response Time

Page 56: Building Microservice Architectures

Sam Newman

Building MicroservicesDESIGNING FINE-GRAINED SYSTEMS

Capture metrics, and logs, for each node, and aggregate them

to get a rolled up picture.

Aggregating Monitors

Page 57: Building Microservice Architectures

Synthetic Transactions

Sam Newman

Building MicroservicesDESIGNING FINE-GRAINED SYSTEMS

Use synthetic transactions to test production systems.

Page 58: Building Microservice Architectures

Correlation IDs ID: 123

ID: 123

ID: 123

Sam Newman

Building MicroservicesDESIGNING FINE-GRAINED SYSTEMS

Use correlation IDs to track down nasty bugs

Page 59: Building Microservice Architectures

Sam Newman

Building MicroservicesDESIGNING FINE-GRAINED SYSTEMS

Use timeouts, circuit breakers and bulk-heads to avoid

cascading failure.

Page 60: Building Microservice Architectures

Engineering Consistency

service behavior

integration

downstream

metrics

Sam Newman

Building MicroservicesDESIGNING FINE-GRAINED SYSTEMS

Consider Service Templates to make it easy to do the right

thing!

Page 61: Building Microservice Architectures

Orchestration

http://en.wikipedia.org/wiki/Orchestration_(computing)

Orchestration describes the automated arrangement,

coordination, and management of complex computer systems, middleware, and services.

Page 62: Building Microservice Architectures

in microservices

vs. orchestrationchoreography

Page 63: Building Microservice Architectures

Orchestration

change address

recalc quote

update claims

notify insured

Page 64: Building Microservice Architectures

Choreography

change address

recalc quote

update claims

notify insured

mediator versus broker topology

http://shop.oreilly.com/product/110000195.do

Page 65: Building Microservice Architectures

Testing Microservices

http://martinfowler.com/articles/microservice-testing/

Page 66: Building Microservice Architectures

Test Pyramid for Microservices

Page 67: Building Microservice Architectures

Inside the Box

Page 68: Building Microservice Architectures

Unit Testing

Sociable

Solitary

Page 69: Building Microservice Architectures

Integration Testing

Page 70: Building Microservice Architectures

Integration Testing

Page 71: Building Microservice Architectures

Component Testing

Page 72: Building Microservice Architectures

Component Testing

shims:

inproctester github.com/aharin/inproctester

Plasma github.com/jennifersmith/plasma

Page 73: Building Microservice Architectures

Component Testing

Page 74: Building Microservice Architectures

http://martinfowler.com/articles/consumerDrivenContracts.htmlConsumer Driven Contracts

Page 75: Building Microservice Architectures

Contract TestingPact

github.com/realestate-com-au/pact

Pacto github.com/thoughtworks/pacto

Janus github.com/gga/janus

Page 76: Building Microservice Architectures

End-to-End Testing

as few as possible

focus on personas & user journeys

choose endpoints wisely

rely on infrastructure as code for repeatability

make tests data-independent

Page 77: Building Microservice Architectures

engineering

Deployment

Page 78: Building Microservice Architectures

Sam Newman

Building MicroservicesDESIGNING FINE-GRAINED SYSTEMS Abstract out underlying

platform differences to provide a uniform deployment

mechanism.

Page 79: Building Microservice Architectures

Don’t Let Changes Build Upstaging production

Page 80: Building Microservice Architectures

Don’t Let Changes Build Upstaging production

Sam Newman

Building MicroservicesDESIGNING FINE-GRAINED SYSTEMS

Don’t let changes build up - release as soon as you can, and

preferably one at a time!

Page 81: Building Microservice Architectures

Service Discovery

Page 82: Building Microservice Architectures

Dynamic Service Registries

https://consul.io/

http://zookeeper.apache.org

https://coreos.com/etcd/

Page 83: Building Microservice Architectures

Service Visualization

https://github.com/adrianco/spigo

Page 84: Building Microservice Architectures

Tools

www.devopsbookmarks.com/

Page 85: Building Microservice Architectures

Turnkey Platforms

Page 86: Building Microservice Architectures

Turnkey Platforms

https://www.hashicorp.com/blog/otto.html

Page 87: Building Microservice Architectures

AGENDA

engineeringcharacteristics

what problem

Page 88: Building Microservice Architectures

(Micro)service architectures provide unique benefits at the cost of increased (essential)

complexity.

You must be this tall to use microservices

Page 89: Building Microservice Architectures

If you can't build a monolith, what makes you think

microservices are the answer?

www.codingthearchitecture.com/2014/07/06/distributed_big_balls_of_mud.html

Page 90: Building Microservice Architectures

service-oriented architecture

microservices architecture

service-based architecture

is there a middle ground?

Service-based Architecture

Page 91: Building Microservice Architectures

Service-based Architecture

service granularity

database scope

integration hub

Page 92: Building Microservice Architectures

Migration

Page 93: Building Microservice Architectures

Partition Along Natural Boundaries

transactional

domain

organizational structural

Build a small number of larger services first.

Page 94: Building Microservice Architectures

Inverse Conway Maneuver

Build teams that look like the architecture you want

(and it will follow).domain

Page 95: Building Microservice Architectures

case study: RealEstate.com.au

Page 96: Building Microservice Architectures

Efferent Coupling

efferent

Strive for low efferent coupling for your team.

Page 97: Building Microservice Architectures

Continuous DeliveryTeams with low efferent coupling deliver relatively independently

into a common integration pipeline (without fearing breaking

each others builds).

Page 98: Building Microservice Architectures

nealford.com

@neal4d

nealford.com/books

nealford.com/videos

www.oreilly.com/software-architecture-video-training-series.html