SlideShare a Scribd company logo
1 of 69
Download to read offline
Micro Services – The New
Architecture Paradigm
Eberhard Wolff
Freelancer
Head Technology Advisory Board
adesso AG
http://ewolff.com
Eberhard Wolff - @ewolff
Leseprobe:
http://bit.ly/CD-Buch
Eberhard Wolff - @ewolff
GUI
Logic
DB
E Commerce
Shop
Change
Order
Process!
Eberhard Wolff - @ewolff
Thou shalt not
organize
teams by
technology!
Eberhard Wolff - @ewolff
Common libraries & technical foundation
Order Billing Search Catalog
E Commerce
Shop
Deployment monolith
Global code integration & coordination needed
Code changes to production takes loooong
Architecture can be non-monolithic but dependencies
might sneak in
How to introduce e.g. Elasticsearch for Search?
Eberhard Wolff - @ewolff
Micro Services: Definition
•  Small
•  Independent deployment units
•  i.e. processes
•  Any technology
•  Any infrastructure
Micro
Service
Server
Micro
Service
Server
Eberhard Wolff - @ewolff
Micro Services
•  Component Model
•  Component…
•  Separate process
•  Individual deployment unit
•  GUI+Logic
Eberhard Wolff - @ewolff
Micro Services vs. SOA
•  Micro Service:
1 service = 1 deployment unit
Service + GUI
•  SOA:
1 deloyment unit = n services
Service / GUI separate
Eberhard Wolff - @ewolff
Components Collaborate
Micro
Service
Micro
Service
Link
Data Replication
REST
Messaging
Eberhard Wolff - @ewolff
Common libraries & technical foundation
Order Billing Search Catalog
Global code integration & coordination needed
Code changes to production takes loooong
Architecture can be non-monolithic but dependencies
might sneak in
How to introduce e.g. Elasticsearch for Search?
E Commerce
Shop
Deployment monolith
Eberhard Wolff - @ewolff
Common libraries & technical foundation
Order Billing Search Catalog
Global code integration & coordination needed
Code changes to production takes loooong
Architecture can be non-monolithic but dependencies
might sneak in
How to introduce e.g. Elasticsearch for Search?
Order CatalogSearchBilling
Micro Services
Team can deploy without integration
Changes can be deployed independently & quickly
Technology stack per Micro Service
One or many Micro Services per Team
Eberhard Wolff - @ewolff
Order Billing Search Catalog
Order CatalogSearchBilling
Micro Services
Team can deploy without integration
Changes can be deployed independently & quickly
Strong & enforced modularization
Technology stack per Micro Service
One or many Micro Services per Team
Eberhard Wolff - @ewolff
Online Shop
Order
Catalog
Search
Billing
Customer
HTML /
HTTP
Eberhard Wolff - @ewolff
Online Shop
Elasticsearch
Spring Batch
Oracle
Spring MVC
MongoDB
Order
Catalog
Search
Billing
Eberhard Wolff - @ewolff
Deploy &
Operate?
Eberhard Wolff - @ewolff
Component Model
•  No restriction on language etc
•  Individual processes
•  + infrastructure (database etc)
•  JARs, WARs, EARs: No good fit
•  Monitoring
•  Logging
Eberhard Wolff - @ewolff
Possible Component Models
•  Virtual machine
•  Docker container
•  Installable software (RPM, deb)
•  + deployment / config scripts
Eberhard Wolff - @ewolff
Why Micro
Services?
Eberhard Wolff - @ewolff
How to scale
agile?
Implement
more feature
Eberhard Wolff - @ewolff
Conway‘s Law
Architecture
copies
communication structures
of the organization
Eberhard Wolff - @ewolff
Conway’s Law as a Limit
•  Won’t be able to create an
architecture different from your
organization
•  I.e. mobile, GUI & database team
•  Three technical artifacts
Eberhard Wolff - @ewolff
Conway’s Law as an Enabler
•  Desired architecture =
project structure
•  Team for each Micro Service
•  Team should be responsible for
meaningful features
•  Ideal: Independent features
Eberhard Wolff - @ewolff
One team can
build and
deploy features
independently!
Eberhard Wolff - @ewolff
Team must be
responsible for
a sensible set
of functionality
Eberhard Wolff - @ewolff
Conway’s Law & Size
•  Upper limit: What a (small) team
can handle
•  …and a meaningful set of features
•  Probably not too small
•  Smaller modules might be better
•  Lower limit: Depends on overhead /
technology
Eberhard Wolff - @ewolff
Legacy Apps
Eberhard Wolff - @ewolff
Eberhard Wolff - @ewolff
Eberhard Wolff - @ewolff
How can I
implement a
new feature???
Eberhard Wolff - @ewolffL
Eberhard Wolff - @ewolff
HTTP
New
Stuff
Links
No legacy code
Any technology
J
Small code base
Little programs are
delightful to write in
isolation,
but the process of
maintaining large-scale
software is always
miserable.
Jaron Lanier
Friedenspreis
des deutschen
Buchhandels
Eberhard Wolff - @ewolff
Sustainable
Development
Eberhard Wolff - @ewolff
Monoliths
•  Architecture rot
•  …not maintainable any more
•  …and can’t be rewritten / replaced
Eberhard Wolff - @ewolff
Micro Services
•  Distributed system of small units
•  Architecture violations harder
•  Small units
•  Easy to replace
Eberhard Wolff - @ewolff
Continuous
Delivery
Eberhard Wolff - @ewolff
Monolith
ECommerce
System
3rd party
systems
Database
Eberhard Wolff - @ewolff
Continuous Delivery:
Build Pipeline
Commit
Stage
Automated
Acceptance
Testing
Automated
Capacity
Testing
Manual
Explorative
Testing
Release
ECommerce
System
Eberhard Wolff - @ewolff
Build Pipeline: Problems
•  Complex infrastructure
•  Huge database
•  3rd party integration
•  Slow feedback
•  Test everything for each commit
•  Huge deployment unit
•  Deployment slow
Eberhard Wolff - @ewolff
Micro Services
ECommerce
System
3rd party
systems
Database
Order
Catalog
Billing
Search
Eberhard Wolff - @ewolff
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
Eberhard Wolff - @ewolff
Build Pipeline for
Micro Services
•  Independent deployment
•  Build pipeline per Micro Service
•  Smaller
•  Easier to set up
•  Less features (3rd party systems)
•  Faster Feedback: Less tests
Eberhard Wolff - @ewolff
Quick Deployments
Time
Size & Risk
Manual
Deployment
Pipeline
Continuous
Delivery
Pipeline
Monolith
Micro Services
Eberhard Wolff - @ewolff
Why Micro Services?
•  Strong modularization
•  Small deployment units
•  Faster & easier deployment
•  Sustainable development speed
•  Continuous Delivery
•  Less risk in deployment
•  Best technology for each service
Eberhard Wolff - @ewolff
Challenges
Eberhard Wolff - @ewolff
Distributed
System
Eberhard Wolff - @ewolff
1st Law of Distributed Objects
•  Don’t Distribute Your Objects!
•  Too much remote communication &
overhead
•  Lesson learned from CORBA etc
•  Micro Service should include a GUI
•  http://martinfowler.com/bliki/
FirstLaw.html
Eberhard Wolff - @ewolff
Request
Response
Processing
Latency Round Trip:
0,2-0,5 ms
= 600.000-1.500.000
instructions@3GHz
Eberhard Wolff - @ewolff
1st Law of Distributed Objects &
Micro Services
•  Small Micro Services mean a lot of
communication
•  Violate the 1st Law
•  Seems to work, though
•  http://martinfowler.com/articles/
distributed-objects-
microservices.html
Eberhard Wolff - @ewolff
Too small =

too much
communication
Eberhard Wolff - @ewolff
Code Reuse
•  Reuse across technology stacks hard
•  Code dependencies are evil!
•  Deployment dependency
•  No more independent deployment
•  Update hell
•  Avoid code reuse!
•  Or make it Open Source projects (Netflix)
•  Service reuse is fine
Eberhard Wolff - @ewolff
Global Refactorings?
•  Move code from service to service
•  Might be a port to a different
language
•  Separate in a new service?
•  More services = more complex
•  Very hard
Eberhard Wolff - @ewolff
Functional Architecture
•  Teams should be independent
•  i.e. one team = one functionality
•  Otherwise: Coordination hard
•  Functional architecture much more
important
Eberhard Wolff - @ewolff
Refactoring &
Code Reuse
Individual
Technology Stacks
Eberhard Wolff - @ewolff
Refactoring hard
Functional
architecture much
more important
Eberhard Wolff - @ewolff
Need to get
architecture
right first time
Architecture
evolves
Eberhard Wolff - @ewolff
Start BIG
•  Won’t have too much code at the
start anyway
•  Refactoring easier
•  Can build architecture as you go
•  Let the functional architecture
grow!
Eberhard Wolff - @ewolff
Handling Interfaces
•  Independent deployments =
backwards compatibility
•  Different versions of the same service
run at the same time
•  Only to allow updates
•  i.e. transient
•  Minor issue
Eberhard Wolff - @ewolff
Managing Dependencies
Between (>100) Services?
•  Monoliths can be easily analyzed
•  Micro Services?
•  With heterogeneous technology
stacks?
•  Need to come up with your own
solution
Eberhard Wolff - @ewolff
Global Architecture?
•  Manages dependencies
•  Which service/team does what?
•  Defines common communication
infrastructure
•  Optional: Common Ops
•  Very different from usual architecture
Eberhard Wolff - @ewolff
Network?
•  Micro Services = Distributed Systems
•  Services & network might fail
•  Need to deal with failure
•  Resilience: System must survive
failure of parts
•  Makes system highly available
Eberhard Wolff - @ewolff
Deployment?
•  One Deployment Pipeline per
services
•  Should be fully automated
•  Too many services for manual steps
•  Infrastructure investment needed
•  Common deployment?
Eberhard Wolff - @ewolff
Infrastructure?
•  >50 server per system
•  Resource consumption probably
high
•  Virtualization must be fully
automated
•  Docker might save ressources
Eberhard Wolff - @ewolff
Conclusion
Eberhard Wolff - @ewolff
Conclusion: Micro Services
•  Micro Services are a new way of
modularization
•  More technological freedom
•  Easier, faster and less risky
deployment
Eberhard Wolff - @ewolff
Use If…
•  Time to market is important
•  Legacy systems must be
modernized
•  Sustained development speed
•  Continuous Delivery should be
implemented
•  Large enough project
Eberhard Wolff - @ewolff
Don’t Use If…
•  Infrastructure complexity cannot be
handled
•  Architectural complexity cannot be
handled
Eberhard Wolff - @ewolff
Thank You!

More Related Content

What's hot

Real World Cloud Application Security
Real World Cloud Application SecurityReal World Cloud Application Security
Real World Cloud Application Security
Jason Chan
 

What's hot (20)

Software Architecture for DevOps and Continuous Delivery
Software Architecture for DevOps and Continuous DeliverySoftware Architecture for DevOps and Continuous Delivery
Software Architecture for DevOps and Continuous Delivery
 
Java Architectures - a New Hope
Java Architectures - a New HopeJava Architectures - a New Hope
Java Architectures - a New Hope
 
Java Application Servers Are Dead!
Java Application Servers Are Dead!Java Application Servers Are Dead!
Java Application Servers Are Dead!
 
Developing Resilient Cloud Native Apps with Spring Cloud
Developing Resilient Cloud Native Apps with Spring CloudDeveloping Resilient Cloud Native Apps with Spring Cloud
Developing Resilient Cloud Native Apps with Spring Cloud
 
ELK Stack
ELK StackELK Stack
ELK Stack
 
IaC? VSTS to the rescue! Abbreviations explained
IaC? VSTS to the rescue! Abbreviations explainedIaC? VSTS to the rescue! Abbreviations explained
IaC? VSTS to the rescue! Abbreviations explained
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applications
 
DevOps and AWS - Code PaLOUsa 2017
DevOps and AWS  - Code PaLOUsa 2017DevOps and AWS  - Code PaLOUsa 2017
DevOps and AWS - Code PaLOUsa 2017
 
Spinnaker Microsrvices
Spinnaker MicrosrvicesSpinnaker Microsrvices
Spinnaker Microsrvices
 
Real World Cloud Application Security
Real World Cloud Application SecurityReal World Cloud Application Security
Real World Cloud Application Security
 
Accelerating DevOps Pipelines with AWS
Accelerating DevOps Pipelines with AWSAccelerating DevOps Pipelines with AWS
Accelerating DevOps Pipelines with AWS
 
Micro Services Architecture
Micro Services ArchitectureMicro Services Architecture
Micro Services Architecture
 
Splitting the Check on Compliance and Security
Splitting the Check on Compliance and SecuritySplitting the Check on Compliance and Security
Splitting the Check on Compliance and Security
 
Anatomy of an APS 2 appication
Anatomy of an APS 2 appicationAnatomy of an APS 2 appication
Anatomy of an APS 2 appication
 
DevOps, Common use cases, Architectures, Best Practices
DevOps, Common use cases, Architectures, Best PracticesDevOps, Common use cases, Architectures, Best Practices
DevOps, Common use cases, Architectures, Best Practices
 
I Don't Test Often ...
I Don't Test Often ...I Don't Test Often ...
I Don't Test Often ...
 
Security as Code: DOES15
Security as Code: DOES15Security as Code: DOES15
Security as Code: DOES15
 
Enterprise Beacon Object Hive - Siebel Version Control
Enterprise Beacon Object Hive - Siebel Version ControlEnterprise Beacon Object Hive - Siebel Version Control
Enterprise Beacon Object Hive - Siebel Version Control
 
DevCon 2018 - 5 ways to use AWS with Alfresco
DevCon 2018 - 5 ways to use AWS with AlfrescoDevCon 2018 - 5 ways to use AWS with Alfresco
DevCon 2018 - 5 ways to use AWS with Alfresco
 

Viewers also liked

Micro Service Architecture
Micro Service ArchitectureMicro Service Architecture
Micro Service Architecture
Eduards Sizovs
 
Developing Applications with a Micro Service Architecture - Chris Richardson
Developing Applications with a Micro Service Architecture - Chris RichardsonDeveloping Applications with a Micro Service Architecture - Chris Richardson
Developing Applications with a Micro Service Architecture - Chris Richardson
JAXLondon2014
 

Viewers also liked (20)

Micro Service Architecture
Micro Service ArchitectureMicro Service Architecture
Micro Service Architecture
 
MicroService Architecture
MicroService ArchitectureMicroService Architecture
MicroService Architecture
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Mule esb soap web services
Mule esb soap web servicesMule esb soap web services
Mule esb soap web services
 
Microservices based application development with Docker (French)
Microservices based application development with Docker (French)Microservices based application development with Docker (French)
Microservices based application development with Docker (French)
 
마이크로 서비스 아키텍쳐 소개 및 구현 방법
마이크로 서비스 아키텍쳐 소개 및 구현 방법마이크로 서비스 아키텍쳐 소개 및 구현 방법
마이크로 서비스 아키텍쳐 소개 및 구현 방법
 
Developing Applications with a Micro Service Architecture - Chris Richardson
Developing Applications with a Micro Service Architecture - Chris RichardsonDeveloping Applications with a Micro Service Architecture - Chris Richardson
Developing Applications with a Micro Service Architecture - Chris Richardson
 
Improving Running Components at Twitter
Improving Running Components at TwitterImproving Running Components at Twitter
Improving Running Components at Twitter
 
Enterprise Integration Patterns
Enterprise Integration PatternsEnterprise Integration Patterns
Enterprise Integration Patterns
 
ESB What it is?
ESB What it is?ESB What it is?
ESB What it is?
 
Micro services architecture and service fabric
Micro services architecture and service fabricMicro services architecture and service fabric
Micro services architecture and service fabric
 
ATAGTR2017 Test Approach for Re-engineering Legacy Applications based on Micr...
ATAGTR2017 Test Approach for Re-engineering Legacy Applications based on Micr...ATAGTR2017 Test Approach for Re-engineering Legacy Applications based on Micr...
ATAGTR2017 Test Approach for Re-engineering Legacy Applications based on Micr...
 
Microservices architecture pitfalls
Microservices architecture pitfallsMicroservices architecture pitfalls
Microservices architecture pitfalls
 
Java micro-services
Java micro-servicesJava micro-services
Java micro-services
 
Eduards Sizovs - Micro Service Architecture
Eduards Sizovs - Micro Service Architecture Eduards Sizovs - Micro Service Architecture
Eduards Sizovs - Micro Service Architecture
 
Designing and building a micro-services architecture. Stairway to heaven or a...
Designing and building a micro-services architecture. Stairway to heaven or a...Designing and building a micro-services architecture. Stairway to heaven or a...
Designing and building a micro-services architecture. Stairway to heaven or a...
 
Microservices: Architecture to Support Agile
Microservices: Architecture to Support AgileMicroservices: Architecture to Support Agile
Microservices: Architecture to Support Agile
 
A Microservices Reference Architecture
A Microservices Reference ArchitectureA Microservices Reference Architecture
A Microservices Reference Architecture
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
 
Microservices: Architecture for Agile Software Development
Microservices: Architecture for Agile Software DevelopmentMicroservices: Architecture for Agile Software Development
Microservices: Architecture for Agile Software Development
 

Similar to Micro Service – The New Architecture Paradigm

Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
Hannes Lowette
 

Similar to Micro Service – The New Architecture Paradigm (20)

Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring Cloud
 
Java Application Servers Are Dead! - Short Version
Java Application Servers Are Dead! - Short VersionJava Application Servers Are Dead! - Short Version
Java Application Servers Are Dead! - Short Version
 
Continuous Delivery & DevOps in the Enterprise
Continuous Delivery & DevOps in the EnterpriseContinuous Delivery & DevOps in the Enterprise
Continuous Delivery & DevOps in the Enterprise
 
High Availability and Scalability: Too Expensive! Architectures for Future E...
High Availability and Scalability: Too Expensive! Architectures for Future E...High Availability and Scalability: Too Expensive! Architectures for Future E...
High Availability and Scalability: Too Expensive! Architectures for Future E...
 
NoSQL Riak MongoDB Elasticsearch - All The Same?
NoSQL Riak MongoDB Elasticsearch - All The Same?NoSQL Riak MongoDB Elasticsearch - All The Same?
NoSQL Riak MongoDB Elasticsearch - All The Same?
 
Moving to microservices – a technology and organisation transformational journey
Moving to microservices – a technology and organisation transformational journeyMoving to microservices – a technology and organisation transformational journey
Moving to microservices – a technology and organisation transformational journey
 
Versioning for Developers
Versioning for DevelopersVersioning for Developers
Versioning for Developers
 
WebLogic Event Server - Alexandre Alves, BEA
WebLogic Event Server - Alexandre Alves, BEAWebLogic Event Server - Alexandre Alves, BEA
WebLogic Event Server - Alexandre Alves, BEA
 
Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)
Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)
Deep Dive into the Microsoft OpenStack CI Infrastructure (Alessandro Pilotti)
 
AppSec DC 2019 ASVS 4.0 Final.pptx
AppSec DC 2019 ASVS 4.0 Final.pptxAppSec DC 2019 ASVS 4.0 Final.pptx
AppSec DC 2019 ASVS 4.0 Final.pptx
 
AppSec DC 2019 ASVS 4.0 Final.pptx
AppSec DC 2019 ASVS 4.0 Final.pptxAppSec DC 2019 ASVS 4.0 Final.pptx
AppSec DC 2019 ASVS 4.0 Final.pptx
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
NoSQL and Architectures
NoSQL and ArchitecturesNoSQL and Architectures
NoSQL and Architectures
 
What's New in WCF 4.5
What's New in WCF 4.5What's New in WCF 4.5
What's New in WCF 4.5
 
Elixir Programming Language 101
Elixir Programming Language 101Elixir Programming Language 101
Elixir Programming Language 101
 
Oleksandr Khotemskyi - Serverless architecture and how to apply it in Automa...
Oleksandr Khotemskyi  - Serverless architecture and how to apply it in Automa...Oleksandr Khotemskyi  - Serverless architecture and how to apply it in Automa...
Oleksandr Khotemskyi - Serverless architecture and how to apply it in Automa...
 
Олександр Хотемський:”Serverless архітектура та її застосування в автоматизац...
Олександр Хотемський:”Serverless архітектура та її застосування в автоматизац...Олександр Хотемський:”Serverless архітектура та її застосування в автоматизац...
Олександр Хотемський:”Serverless архітектура та її застосування в автоматизац...
 
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceCOMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
 
London DevOps Meetup - PaaS as a platform for devops
London DevOps Meetup - PaaS as a platform for devopsLondon DevOps Meetup - PaaS as a platform for devops
London DevOps Meetup - PaaS as a platform for devops
 
Will ServerLess kill containers and Operations
Will ServerLess kill containers and OperationsWill ServerLess kill containers and Operations
Will ServerLess kill containers and Operations
 

More from Eberhard Wolff

More from Eberhard Wolff (20)

Architectures and Alternatives
Architectures and AlternativesArchitectures and Alternatives
Architectures and Alternatives
 
Beyond Microservices
Beyond MicroservicesBeyond Microservices
Beyond Microservices
 
The Frontiers of Continuous Delivery
The Frontiers of Continuous DeliveryThe Frontiers of Continuous Delivery
The Frontiers of Continuous Delivery
 
Four Times Microservices - REST, Kubernetes, UI Integration, Async
Four Times Microservices - REST, Kubernetes, UI Integration, AsyncFour Times Microservices - REST, Kubernetes, UI Integration, Async
Four Times Microservices - REST, Kubernetes, UI Integration, Async
 
Microservices - not just with Java
Microservices - not just with JavaMicroservices - not just with Java
Microservices - not just with Java
 
Deployment - Done Right!
Deployment - Done Right!Deployment - Done Right!
Deployment - Done Right!
 
Data Architecture not Just for Microservices
Data Architecture not Just for MicroservicesData Architecture not Just for Microservices
Data Architecture not Just for Microservices
 
How to Split Your System into Microservices
How to Split Your System into MicroservicesHow to Split Your System into Microservices
How to Split Your System into Microservices
 
Microservices and Self-contained System to Scale Agile
Microservices and Self-contained System to Scale AgileMicroservices and Self-contained System to Scale Agile
Microservices and Self-contained System to Scale Agile
 
How Small Can Java Microservices Be?
How Small Can Java Microservices Be?How Small Can Java Microservices Be?
How Small Can Java Microservices Be?
 
Data Architecturen Not Just for Microservices
Data Architecturen Not Just for MicroservicesData Architecturen Not Just for Microservices
Data Architecturen Not Just for Microservices
 
Microservices: Redundancy=Maintainability
Microservices: Redundancy=MaintainabilityMicroservices: Redundancy=Maintainability
Microservices: Redundancy=Maintainability
 
Self-contained Systems: A Different Approach to Microservices
Self-contained Systems: A Different Approach to MicroservicesSelf-contained Systems: A Different Approach to Microservices
Self-contained Systems: A Different Approach to Microservices
 
Microservices Technology Stack
Microservices Technology StackMicroservices Technology Stack
Microservices Technology Stack
 
Software Architecture for Innovation
Software Architecture for InnovationSoftware Architecture for Innovation
Software Architecture for Innovation
 
Five (easy?) Steps Towards Continuous Delivery
Five (easy?) Steps Towards Continuous DeliveryFive (easy?) Steps Towards Continuous Delivery
Five (easy?) Steps Towards Continuous Delivery
 
Nanoservices and Microservices with Java
Nanoservices and Microservices with JavaNanoservices and Microservices with Java
Nanoservices and Microservices with Java
 
Microservices: Architecture to scale Agile
Microservices: Architecture to scale AgileMicroservices: Architecture to scale Agile
Microservices: Architecture to scale Agile
 
Microservices, DevOps, Continuous Delivery – More Than Three Buzzwords
Microservices, DevOps, Continuous Delivery – More Than Three BuzzwordsMicroservices, DevOps, Continuous Delivery – More Than Three Buzzwords
Microservices, DevOps, Continuous Delivery – More Than Three Buzzwords
 
Infrastructure for Continuous Delivery & Microservices: PaaS or Docker?
Infrastructure for Continuous Delivery & Microservices: PaaS or Docker?Infrastructure for Continuous Delivery & Microservices: PaaS or Docker?
Infrastructure for Continuous Delivery & Microservices: PaaS or Docker?
 

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Recently uploaded (20)

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 

Micro Service – The New Architecture Paradigm

  • 1. Micro Services – The New Architecture Paradigm Eberhard Wolff Freelancer Head Technology Advisory Board adesso AG http://ewolff.com
  • 2. Eberhard Wolff - @ewolff Leseprobe: http://bit.ly/CD-Buch
  • 3. Eberhard Wolff - @ewolff GUI Logic DB E Commerce Shop Change Order Process!
  • 4. Eberhard Wolff - @ewolff Thou shalt not organize teams by technology!
  • 5. Eberhard Wolff - @ewolff Common libraries & technical foundation Order Billing Search Catalog E Commerce Shop Deployment monolith Global code integration & coordination needed Code changes to production takes loooong Architecture can be non-monolithic but dependencies might sneak in How to introduce e.g. Elasticsearch for Search?
  • 6. Eberhard Wolff - @ewolff Micro Services: Definition •  Small •  Independent deployment units •  i.e. processes •  Any technology •  Any infrastructure Micro Service Server Micro Service Server
  • 7. Eberhard Wolff - @ewolff Micro Services •  Component Model •  Component… •  Separate process •  Individual deployment unit •  GUI+Logic
  • 8. Eberhard Wolff - @ewolff Micro Services vs. SOA •  Micro Service: 1 service = 1 deployment unit Service + GUI •  SOA: 1 deloyment unit = n services Service / GUI separate
  • 9. Eberhard Wolff - @ewolff Components Collaborate Micro Service Micro Service Link Data Replication REST Messaging
  • 10. Eberhard Wolff - @ewolff Common libraries & technical foundation Order Billing Search Catalog Global code integration & coordination needed Code changes to production takes loooong Architecture can be non-monolithic but dependencies might sneak in How to introduce e.g. Elasticsearch for Search? E Commerce Shop Deployment monolith
  • 11. Eberhard Wolff - @ewolff Common libraries & technical foundation Order Billing Search Catalog Global code integration & coordination needed Code changes to production takes loooong Architecture can be non-monolithic but dependencies might sneak in How to introduce e.g. Elasticsearch for Search? Order CatalogSearchBilling Micro Services Team can deploy without integration Changes can be deployed independently & quickly Technology stack per Micro Service One or many Micro Services per Team
  • 12. Eberhard Wolff - @ewolff Order Billing Search Catalog Order CatalogSearchBilling Micro Services Team can deploy without integration Changes can be deployed independently & quickly Strong & enforced modularization Technology stack per Micro Service One or many Micro Services per Team
  • 13. Eberhard Wolff - @ewolff Online Shop Order Catalog Search Billing Customer HTML / HTTP
  • 14. Eberhard Wolff - @ewolff Online Shop Elasticsearch Spring Batch Oracle Spring MVC MongoDB Order Catalog Search Billing
  • 15. Eberhard Wolff - @ewolff Deploy & Operate?
  • 16. Eberhard Wolff - @ewolff Component Model •  No restriction on language etc •  Individual processes •  + infrastructure (database etc) •  JARs, WARs, EARs: No good fit •  Monitoring •  Logging
  • 17. Eberhard Wolff - @ewolff Possible Component Models •  Virtual machine •  Docker container •  Installable software (RPM, deb) •  + deployment / config scripts
  • 18. Eberhard Wolff - @ewolff Why Micro Services?
  • 19. Eberhard Wolff - @ewolff How to scale agile? Implement more feature
  • 20. Eberhard Wolff - @ewolff Conway‘s Law Architecture copies communication structures of the organization
  • 21. Eberhard Wolff - @ewolff Conway’s Law as a Limit •  Won’t be able to create an architecture different from your organization •  I.e. mobile, GUI & database team •  Three technical artifacts
  • 22. Eberhard Wolff - @ewolff Conway’s Law as an Enabler •  Desired architecture = project structure •  Team for each Micro Service •  Team should be responsible for meaningful features •  Ideal: Independent features
  • 23. Eberhard Wolff - @ewolff One team can build and deploy features independently!
  • 24. Eberhard Wolff - @ewolff Team must be responsible for a sensible set of functionality
  • 25. Eberhard Wolff - @ewolff Conway’s Law & Size •  Upper limit: What a (small) team can handle •  …and a meaningful set of features •  Probably not too small •  Smaller modules might be better •  Lower limit: Depends on overhead / technology
  • 26. Eberhard Wolff - @ewolff Legacy Apps
  • 27. Eberhard Wolff - @ewolff
  • 28. Eberhard Wolff - @ewolff
  • 29. Eberhard Wolff - @ewolff How can I implement a new feature???
  • 30. Eberhard Wolff - @ewolffL
  • 31. Eberhard Wolff - @ewolff HTTP New Stuff Links No legacy code Any technology J Small code base
  • 32. Little programs are delightful to write in isolation, but the process of maintaining large-scale software is always miserable. Jaron Lanier
  • 34. Eberhard Wolff - @ewolff Sustainable Development
  • 35. Eberhard Wolff - @ewolff Monoliths •  Architecture rot •  …not maintainable any more •  …and can’t be rewritten / replaced
  • 36. Eberhard Wolff - @ewolff Micro Services •  Distributed system of small units •  Architecture violations harder •  Small units •  Easy to replace
  • 37. Eberhard Wolff - @ewolff Continuous Delivery
  • 38. Eberhard Wolff - @ewolff Monolith ECommerce System 3rd party systems Database
  • 39. Eberhard Wolff - @ewolff Continuous Delivery: Build Pipeline Commit Stage Automated Acceptance Testing Automated Capacity Testing Manual Explorative Testing Release ECommerce System
  • 40. Eberhard Wolff - @ewolff Build Pipeline: Problems •  Complex infrastructure •  Huge database •  3rd party integration •  Slow feedback •  Test everything for each commit •  Huge deployment unit •  Deployment slow
  • 41. Eberhard Wolff - @ewolff Micro Services ECommerce System 3rd party systems Database Order Catalog Billing Search
  • 42. Eberhard Wolff - @ewolff 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
  • 43. Eberhard Wolff - @ewolff Build Pipeline for Micro Services •  Independent deployment •  Build pipeline per Micro Service •  Smaller •  Easier to set up •  Less features (3rd party systems) •  Faster Feedback: Less tests
  • 44. Eberhard Wolff - @ewolff Quick Deployments Time Size & Risk Manual Deployment Pipeline Continuous Delivery Pipeline Monolith Micro Services
  • 45. Eberhard Wolff - @ewolff Why Micro Services? •  Strong modularization •  Small deployment units •  Faster & easier deployment •  Sustainable development speed •  Continuous Delivery •  Less risk in deployment •  Best technology for each service
  • 46. Eberhard Wolff - @ewolff Challenges
  • 47. Eberhard Wolff - @ewolff Distributed System
  • 48. Eberhard Wolff - @ewolff 1st Law of Distributed Objects •  Don’t Distribute Your Objects! •  Too much remote communication & overhead •  Lesson learned from CORBA etc •  Micro Service should include a GUI •  http://martinfowler.com/bliki/ FirstLaw.html
  • 49. Eberhard Wolff - @ewolff Request Response Processing Latency Round Trip: 0,2-0,5 ms = 600.000-1.500.000 instructions@3GHz
  • 50. Eberhard Wolff - @ewolff 1st Law of Distributed Objects & Micro Services •  Small Micro Services mean a lot of communication •  Violate the 1st Law •  Seems to work, though •  http://martinfowler.com/articles/ distributed-objects- microservices.html
  • 51. Eberhard Wolff - @ewolff Too small =
 too much communication
  • 52. Eberhard Wolff - @ewolff Code Reuse •  Reuse across technology stacks hard •  Code dependencies are evil! •  Deployment dependency •  No more independent deployment •  Update hell •  Avoid code reuse! •  Or make it Open Source projects (Netflix) •  Service reuse is fine
  • 53. Eberhard Wolff - @ewolff Global Refactorings? •  Move code from service to service •  Might be a port to a different language •  Separate in a new service? •  More services = more complex •  Very hard
  • 54. Eberhard Wolff - @ewolff Functional Architecture •  Teams should be independent •  i.e. one team = one functionality •  Otherwise: Coordination hard •  Functional architecture much more important
  • 55. Eberhard Wolff - @ewolff Refactoring & Code Reuse Individual Technology Stacks
  • 56. Eberhard Wolff - @ewolff Refactoring hard Functional architecture much more important
  • 57. Eberhard Wolff - @ewolff Need to get architecture right first time Architecture evolves
  • 58. Eberhard Wolff - @ewolff Start BIG •  Won’t have too much code at the start anyway •  Refactoring easier •  Can build architecture as you go •  Let the functional architecture grow!
  • 59. Eberhard Wolff - @ewolff Handling Interfaces •  Independent deployments = backwards compatibility •  Different versions of the same service run at the same time •  Only to allow updates •  i.e. transient •  Minor issue
  • 60. Eberhard Wolff - @ewolff Managing Dependencies Between (>100) Services? •  Monoliths can be easily analyzed •  Micro Services? •  With heterogeneous technology stacks? •  Need to come up with your own solution
  • 61. Eberhard Wolff - @ewolff Global Architecture? •  Manages dependencies •  Which service/team does what? •  Defines common communication infrastructure •  Optional: Common Ops •  Very different from usual architecture
  • 62. Eberhard Wolff - @ewolff Network? •  Micro Services = Distributed Systems •  Services & network might fail •  Need to deal with failure •  Resilience: System must survive failure of parts •  Makes system highly available
  • 63. Eberhard Wolff - @ewolff Deployment? •  One Deployment Pipeline per services •  Should be fully automated •  Too many services for manual steps •  Infrastructure investment needed •  Common deployment?
  • 64. Eberhard Wolff - @ewolff Infrastructure? •  >50 server per system •  Resource consumption probably high •  Virtualization must be fully automated •  Docker might save ressources
  • 65. Eberhard Wolff - @ewolff Conclusion
  • 66. Eberhard Wolff - @ewolff Conclusion: Micro Services •  Micro Services are a new way of modularization •  More technological freedom •  Easier, faster and less risky deployment
  • 67. Eberhard Wolff - @ewolff Use If… •  Time to market is important •  Legacy systems must be modernized •  Sustained development speed •  Continuous Delivery should be implemented •  Large enough project
  • 68. Eberhard Wolff - @ewolff Don’t Use If… •  Infrastructure complexity cannot be handled •  Architectural complexity cannot be handled
  • 69. Eberhard Wolff - @ewolff Thank You!