microservices: architecture for agile software development

Post on 08-Jan-2017

2.610 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Microservices: Architecture for Agile

Software Development Eberhard Wolff Fellow, innoQ

@ewolff

http://microservices-buch.de/

Code

Microservice Definition

Server Server

Microservices: Definition

>  Small

>  Independent deployment units

>  Any technology

>  Any infrastructure

>  UI + Logic

Micro Service

Micro Service

Components Collaborate

Micro Service

Micro Service

Link

Data Replication

REST Messaging

Online Shop

Order

Catalog

Search

Billing

Customer

HTML / HTTP

Online Shop

Elasticsearch

Spring Batch Oracle

Spring MVC MongoDB

Order

Catalog

Search

Billing

Agility

Agile Manifesto >  Individuals and Interaction

>  Over processes and tools

>  Working Software

>  Over comprehensive documentation

>  Customer Collaboration

>  Over contract negotation

>  Responding to change

>  Over following a plan

Agile Manifesto: Individuals and

Interactions

Software Architecture & Individuals

Software Architecture & Individuals

Unrelated?

Does Your Architecture Take Individuals Into

Account?

Conway‘s Law

Architecture copies

communication structures of the organization

Conway‘s Law: Impact Architecture

and communication structures

in the organization are the same thing.

Conway’s Law as a Limit

>  Organization drives architecture

>  I.e. GUI, logic & database team

>  Three technical artifacts

GUI

Logic

DB

E Commerce Shop

Change Order

Process!

time

DB Team Sprint

Logic Team Sprint

GUI Team Sprint

3 sprints

Deployment Monolith

Deployment Monolith

Stories

Technical Coordination

Coordinating Releases

Order Billing Search

Order Search Billing

Team for each business feature Let architecture drive the organization

Deployment Monolith + Conway’s Law

Deployment Monolith

Stories

Technical Coordination

Coordinating Releases

StoriesStories

Order Billing Search

Microservices + Conway’s Law

>  Let architecture drive the organization

>  Team for each Microservice

>  Team responsible for business features

>  Ideal: Independent features

Order Billing Search

Order Search Billing

Team can deploy without integration Changes can be deployed independently & quickly

Strong & enforced modularization

Technology stack per Microservice One or many Microservices per Team

Synergy Microservices / Conway’s Law

Microservices

Microservice

Stories

TechnicalCoordination

Microservice

Stories

TechnicalCoordination

Microservice

Stories

TechnicalCoordination

Order Billing Search

Release Release Release

How to scale agile?

Use a process to scale agile?

Individuals & interaction

over

processes and tools

Define architecture to limit

communication needs

One team can build and deploy features independently!

Team must be responsible for a sensible set of

functionality

Less Technical Coordination

Agile Manifesto: Working Software

Scrum

>  PSI

>  Potentially shippable increment

>  Why?

Principles behind the Agile Manifesto

Our highest priority is

to satisfy the customer

through early and

continuous delivery

of valuable software.

Potentially Shippable Increment

Continuous Delivery

Monolith

ECommerce System

3rd party systems

Database

Continuous Delivery: Build Pipeline

Commit Stage

Automated Acceptance

Testing

Automated Capacity Testing

Manual Explorative

Testing

Release

ECommerce System

Build Pipeline: Complex Infrastructure

>  Huge database

>  3rd party integration

Build Pipeline: Slow Feedback

>  Slow feedback

>  Test everything for each commit

>  Huge deployment unit

>  Deployment slow

Monolith: Deployment

>  Huge deployment

>  Risky

>  Hard to mitigate risk

>  Blue / Green: Create a separate environment

>  Canary: Deploy to one server first

Microservices

ECommerce System

3rd party systems

Database

Order

Catalog

Billing Search

Commit Stage

Automated Acceptance

Testing

Automated Capacity Testing

Manual Explorative

Testing

Release

Commit Stage

Automated Acceptance

Testing

Automated Capacity Testing

Manual Explorative

Testing

Release

Commit Stage

Automated Acceptance

Testing

Automated Capacity Testing

Manual Explorative

Testing

Release

Order

Billing

Customer

Build Pipeline for Microservices

>  Independent deployment

>  Build pipeline per Microservice

>  Small

>  Easier to set up

>  Less features (3rd party systems)

>  Faster Feedback: Less tests

Microservice: Deployment

>  Small deployment

>  Less risky

>  Other Microservices resilient to failing microservice

>  Easy to create new environments

>  E.g. for Blue / Green or Canary

Quick Deployments Time

Size & Risk

Manual Deployment

Pipeline

Continuous Delivery Pipeline

Monolith Microservices

Potentially shippable increment?

SHIP!!!

Agile Manifesto: Customer

Collaboration

Customer Collaboration &

Architecture?

Customer Collaboration &

Architecture? Not sure.

Microservices & Departments

StoriesStories Stories

Customer Billing OrderProcess

ProductOwner

ProductOwner

ProductOwner

Department Department Department

Microservices & Departments

>  Ideal: One team per department

>  Ideal: Change local to one team / Microservice

>  Otherwise: Coordination needed

Customer should own Microservice

Agile Manifesto: Responding to change

Monoliths

>  Architecture rot

>  …not maintainable any more

>  …and can’t be rewritten / replaced

Deployment Monolith

>  Cyclic dependency

>  …because the IDE suggested some class

>  Might not even be noticed

Module

Class

Module

Class

Class Class

Microservices

>  Need to use the API

>  Different team

>  More effort - will think about it

>  Rot less likely

Microservice

Class

Microservice

Class

Class Class

Global Refactorings?

>  Move code from service to service

>  Might be a port to a different language

>  Separate in a new service

>  Harder than in a Deployment Monolith

Microservices

>  Small

>  Easy to change

>  Architectural problems in Microservice unlikely

>  Can be replaced

Microservice

Class

Class

Microservices – Easy to Recylce

Conclusion

Conclusion: Microservices & Agility

>  Individuals over tools

>  Architecture drives organization

>  Scale by architecture not process

>  Working software

>  Actually ship software

>  Continuous Delivery

Conclusion: Microservices & Agility

>  Customer collaboration

>  Customer should own services

>  i.e. organization beyond the project = architecture

Conclusion: Microservices & Agility

>  Responding to change

>  Individual Microservices small

>  Easy to change

>  …and replace

>  Unwanted dependencies won’t sneak in

>  But: Global refactoring hard, too

Meta-Conclusion

How To Think About Architecture

>  Process has an impact on architecture

>  Software architecture & organization are the same

>  Build recyclable software!

Microservice > Agile Achitecture

Strong Modularization

Scaled Agile Architecture

Sustainable development speed Replaceable Services

Continuous Delivery

Choose best technology for job!

Handle Legacy more efficient

Independent Scaling

Robustness

Microservice Training

>  Stefan Tilkov / Eberhard Wolff

>  Frankfurt / Main

>  26.-27.10.2015

>  https://www.innoq.com/de/trainings/microservices-training/

top related