78
Microservices: Architecture to Scale Agile Eberhard Wolff Fellow, innoQ @ewolff

Microservices: Architecture to scale Agile

Embed Size (px)

Citation preview

Page 1: Microservices: Architecture to scale Agile

Microservices: Architecture to Scale

AgileEberhard WolffFellow, innoQ

@ewolff

Page 2: Microservices: Architecture to scale Agile

http://continuous-delivery-buch.de/

Page 3: Microservices: Architecture to scale Agile

http://microservices-buch.de/ http://microservices-book.com/

Page 4: Microservices: Architecture to scale Agile

http://microservices-book.com/primer.html

FREE!!!!

Page 5: Microservices: Architecture to scale Agile

> Microservices

> Agility

> Self-contained Systems

> SCS to scale agile

Page 6: Microservices: Architecture to scale Agile

Microservices

Page 7: Microservices: Architecture to scale Agile

Server Server

Microservices: Definition

> Independent deployment units

> E.g. process, VMs, Docker containers

> Any technology

> Any infrastructure

MicroService

MicroService

Page 8: Microservices: Architecture to scale Agile

Components Collaborate

MicroService

MicroService

Link

Data Replication

REST

Messaging

Page 9: Microservices: Architecture to scale Agile

Possible MicroservicesArchitecture

iOS Android Web

Order Search Catalog

BillingCustomer

Backend Backend Backend

Page 10: Microservices: Architecture to scale Agile

Real-World Example

> Team = one person

> Microservices-based system

> Reasons

> Fast and easy deployment

> Clear separation

Page 11: Microservices: Architecture to scale Agile

Microservices can do more than scaling

agile!

Page 12: Microservices: Architecture to scale Agile

Agility

Page 13: Microservices: Architecture to scale Agile

Iterations

> Work in iterations

> Not following a fixed plan

> “Waterfall” paper 1970 (Royce): Do it twice!

> I.e. iterations are a well-known idea for very long

Page 14: Microservices: Architecture to scale Agile

No Iterations

Goal

Goal

Page 15: Microservices: Architecture to scale Agile

Iterations

Goal

Goal

GoalGoal

Page 16: Microservices: Architecture to scale Agile

Cross-functional Team

> Need lots of skill to developfeatures

> Have all skills in the team

> Direct communication isbetter

Page 17: Microservices: Architecture to scale Agile

Self Organization

> Team knows best how tosolve problems

> Let them decide

Page 18: Microservices: Architecture to scale Agile

Scaling

Page 19: Microservices: Architecture to scale Agile

Scaling

> Do more

> Get more storiesimplemented

> ...and running in production

TODO IN PROGRESS DONE

Page 20: Microservices: Architecture to scale Agile

Scaling> Do more

> Add more people

> Let the work in parallel

> Build more teams

Page 21: Microservices: Architecture to scale Agile

OrganizationalApproaches

Scrum ofScrums

Scaled AgileFramework

(SAFe)

Large ScaleScrum( LeSS) Agile Path

Page 22: Microservices: Architecture to scale Agile

OrganizationalApproaches

Scrum ofScrums

Scaled AgileFramework

(SAFe)

Large ScaleScrum( LeSS) Agile Path

Not myexpertise

Page 23: Microservices: Architecture to scale Agile

Communication

> Agile means communication

> Instead of written requirements

> ...story cards

> + direct communication

Page 24: Microservices: Architecture to scale Agile

# Persons vs. Potential Links

Page 25: Microservices: Architecture to scale Agile

# Persons vs. Potential Links

0

100

200

300

0 10 20 30

Page 26: Microservices: Architecture to scale Agile

Communication is great!

Need more persons

Page 27: Microservices: Architecture to scale Agile

Depedencies andCoordination are

Problems!

Page 28: Microservices: Architecture to scale Agile

Dependencies

> Feature across teams

> Team must wait for other teams‘ results

Page 29: Microservices: Architecture to scale Agile

time

Team Sprint

Team Sprint

Team Sprint

3 sprints

Page 30: Microservices: Architecture to scale Agile

Functionalities

Technology andArchitecture

What Do YouCommunicate About?

Releases

Page 31: Microservices: Architecture to scale Agile

Can we limit the needfor communication?

Page 32: Microservices: Architecture to scale Agile

Challenges forScaling Agile

> Dependencies cause delays

> Too much communication aboutfunctionalities...

> ...releasing software,

> ...and technologies

Page 33: Microservices: Architecture to scale Agile

Self-contained System

Page 34: Microservices: Architecture to scale Agile

Deploymentmonolith

Graphics by Roman Stranghöhner, innoQhttp://scs-architecture.org

Page 35: Microservices: Architecture to scale Agile

Cut Deploymentmonolith along domains …

Page 36: Microservices: Architecture to scale Agile

… wrap domain in separate web application …

Page 37: Microservices: Architecture to scale Agile

Self-contained System (SCS) –individuallydeployable

Page 38: Microservices: Architecture to scale Agile

SCS =user interface+business logic+data storage

Page 39: Microservices: Architecture to scale Agile

Web user interface

Page 40: Microservices: Architecture to scale Agile

optional API e.g. formobile

Page 41: Microservices: Architecture to scale Agile

Self-contained Systemsshould be integrated in the web interface

Page 42: Microservices: Architecture to scale Agile

Hyperlinks to navigate between systems.

System 1 System 2

Page 43: Microservices: Architecture to scale Agile

Dynamic inclusion of content served by another application

System 1 System 2

Page 44: Microservices: Architecture to scale Agile

Logic only shared over a well defined interface.

Page 45: Microservices: Architecture to scale Agile

Business logic can consist of microservices

Page 46: Microservices: Architecture to scale Agile

Avoid synchronousremote calls

Page 47: Microservices: Architecture to scale Agile

Remote API calls should be asynchronous

Page 48: Microservices: Architecture to scale Agile

Every SCS brings its own data storagewith its own (potentially redundant) data

Page 49: Microservices: Architecture to scale Agile

Technical decisions can be made independently from other systems(programming language, frameworks, tooling, platform)

Page 50: Microservices: Architecture to scale Agile

Domained scopedSCS enables the development, operation and maintenance of an domain by a single team.

Team 1

Team 2 Team 3

Page 51: Microservices: Architecture to scale Agile

1 SCS

= 1 Domain

= 1 Web App

= 1 Team

= 1-n Microservices

Page 52: Microservices: Architecture to scale Agile

SCS?

iOS Android Web

Order Search Catalog

BillingCustomer

Backend Backend Backend

Page 53: Microservices: Architecture to scale Agile

SCS?

iOS Android Web

Order Search Catalog

BillingCustomer

Backend Backend Backend

Page 54: Microservices: Architecture to scale Agile

SCS to Scale Agile

Page 55: Microservices: Architecture to scale Agile

Challenges forScaling Agile

> Dependencies cause delays

> Too much communication aboutfunctionalities...

> ...releasing software,

> ...and technologies

Page 56: Microservices: Architecture to scale Agile

Challenges forScaling Agile

> Dependencies cause delays

> Too much communication aboutfunctionalities...

> ...releasing software,

> ...and technologies

Page 57: Microservices: Architecture to scale Agile

Conway‘s Law

Architecture

copies

communication structures

of the organization

Page 58: Microservices: Architecture to scale Agile

Conway‘s Law: ImpactArchitecture

and

communication structures

in the organization

are the same thing.

Page 59: Microservices: Architecture to scale Agile

Conway’s Law as a Limit

> Organization drives architecture

> Teams of experts

> i.e. UI, logic & database team

> Three technical artifacts

Page 60: Microservices: Architecture to scale Agile

Logic

UI

Database

Change Order

Process!

Page 61: Microservices: Architecture to scale Agile

time

DBTeam Sprint

LogicTeam Sprint

GUITeam Sprint

3 sprints

Page 62: Microservices: Architecture to scale Agile

Domained scopedSCS enables the development of a domain by a single team

– no coordinationOrder Team =

UI+Logic+Database

Page 63: Microservices: Architecture to scale Agile

Challenges for ScalingAgile

> Dependencies cause delays

> Too much communication aboutfunctionalities...

> ...releasing software,

> ...and technologies

Page 64: Microservices: Architecture to scale Agile

Deployment Monolith

Stories

Technical Coordination

Coordinating Releases

Page 65: Microservices: Architecture to scale Agile

Self-contained System (SCS) –individuallydeployable

Page 66: Microservices: Architecture to scale Agile

Technical decisions can be made independently from other systems(programming language, frameworks, tooling, platform)

Page 67: Microservices: Architecture to scale Agile

SCS

Stories

TechnicalCoordination

Stories

TechnicalCoordination

Stories

TechnicalCoordination

Order Billing Search

Release Release Release

Page 68: Microservices: Architecture to scale Agile

Impact on Teams> More self-organization

> Decide about technologies, releases etc.

> Need to be more cross-functional

> E.g. ops skills become more important

Page 69: Microservices: Architecture to scale Agile

Conclusion

Page 70: Microservices: Architecture to scale Agile

How to scale agile?

Page 71: Microservices: Architecture to scale Agile

Define architecture to

limit communication

needs

Page 72: Microservices: Architecture to scale Agile

Conclusion: SCS & Microservices

> Microservices have many advantages

> SCS are a way to use Microservices

> …for large projects

> …to scale agile

Page 73: Microservices: Architecture to scale Agile

Conclusion: SCS & Agility

> Domain in one SCS

> less dependencies

> less delays

> less communication about functionalities

> Technological freedom

> less communication about technologies

> Independent releases

> no need to coordinate releases

Page 74: Microservices: Architecture to scale Agile

Challenges

Page 75: Microservices: Architecture to scale Agile

Challenges

> UI integration

> ...in particular for mobile / Single Page App

> Architecture more important

> Architecture = organization

Page 76: Microservices: Architecture to scale Agile

Meta-Conclusion

Page 77: Microservices: Architecture to scale Agile

How To Think About Architecture

> Process has an impact on architecture

> Software architecture & organization are the same

Page 78: Microservices: Architecture to scale Agile

Thank You!@ewolff

http://scs-architecture.org(Creative Commons)