Upload
eberhard-wolff
View
2.608
Download
2
Embed Size (px)
Citation preview
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/