SlideShare ist ein Scribd-Unternehmen logo
1 von 52
Microservices – The Easy Way is the Wrong Way
Microservices – The Easy Way is the Wrong Way
Goal
Show that
Microservice Architecture takes
more consideration than you
may expect
Microservices – The Easy Way is the Wrong Way
Agenda  What are microservices
 Why should I use them
 When should I NOT use them
 Challenges
 Decomposition (high-level)
Microservices – The Easy Way is the Wrong Way
What are microservices
Microservices – The Easy Way is the Wrong Way
What are microservices
 Independent applications
 Communicate over network
 Has single responsibility
 Owned by one team
 Individually deployable
 Architecture style
Microservices – The Easy Way is the Wrong Way
What are microservices
Monolith
Microservices – The Easy Way is the Wrong Way
What are microservices
Monolith Microservices
extract
new
Microservices – The Easy Way is the Wrong Way
What are microservices
Monolith Microservices
• Move functionality
• Add functionality
• Rare total migration
Microservices – The Easy Way is the Wrong Way
The microservice architecture is an implementation of
Distributed Computing
Microservices – The Easy Way is the Wrong Way
Why should I use microservices
To deliver business functionality
 Quicker
 Safer
 Stability
Microservices – The Easy Way is the Wrong Way
Why should I use microservices
Team Autonomy
- Best language for the job
- Focused development
- Agile works well
Team Autonomy
Service Autonomy
Scalability
Fault Isolation
Microservices – The Easy Way is the Wrong Way
Why should I use microservices
Service Autonomy
- Single Responsibility
- Deployable without other services
Team Autonomy
Service Autonomy
Scalability
Fault Isolation
Microservices – The Easy Way is the Wrong Way
Why should I use microservices
Scalability
- Scale independent of others
- Choice of servers
Team Autonomy
Service Autonomy
Scalability
Fault Isolation
Microservices – The Easy Way is the Wrong Way
Why should I use microservices
Fault Isolation
- Your problems aren’t my problems
- “Stay in your lane bro”
Team Autonomy
Service Autonomy
Scalability
Fault Isolation
A B C
D E
X
Microservices – The Easy Way is the Wrong Way
Who uses microservices
Microservices – The Easy Way is the Wrong Way
Why should I NOT use microservices
Microservices – The Easy Way is the Wrong Way
THEY’RE HARD!!!
This Photo by Unknown Author is licensed under CC BY-SA-NC
So is good
programming, but…
Why should I NOTuse microservices
Microservices – The Easy Way is the Wrong Way
Why should I NOTuse microservices
• Monolith is too small
• Too much coupling – need refactoring first
• Team unwilling or not ready
• No support structure
• High cost of time and money
Microservices – The Easy Way is the Wrong Way
Challenges to making microservices
Microservices – The Easy Way is the Wrong Way
Challenges to making microservices
Easy Reality
Cheap Cost time, money, learning, investing
HTTP to IP address Messaging; RPC; sync vs async; pub/sub
Copy files to servers CI / CD pipeline per Microservice
Single Repo Should use Repo per Microservice
Network not my job Need to know about OSI Model; Layer 4 and 7
Security non-issue TLS for service communication layer;
OAuth for application layer
Common Code Sharing code keeps services tightly coupled
Microservices – The Easy Way is the Wrong Way
Challenges to making microservices
• HTTP7. Application
6. Presentation
5. Session
• TCP / UDP4. Transport
• IP / ARP / ICMP / IGMP3. Network
2. Data Link
1. Physical
Microservices – The Easy Way is the Wrong Way
Challenges to making microservices
Service
A
V1.0
Team A Team B
Service
B
V1.0Nuget
Package
Service
A
V2.0
Microservices – The Easy Way is the Wrong Way
Challenges to making microservices
Service
A
V1.0
Team A Team B
Service
B
V1.0Nuget
Package
Service
A
V2.0
Service
B
V2.0
Changes in Package for Service A
kept Service B from working.
Microservices – The Easy Way is the Wrong Way
Challenges to making microservices
Service
A
V1.0
Team A Team B
Service
B
V1.0
Nuget
Package
Foo
Service
A
V2.0
Service
B
V2.0
Nuget
Package
Goo
Nuget
Package
Bar
Microservices – The Easy Way is the Wrong Way
Challenges to making microservices
Nuget
Package
Common
Nuget
Package
Svc B
Nuget
Package
Svc A
Separate code that changes
to their own package
for the service that needs it.
Microservices – The Easy Way is the Wrong Way
Challenges to making microservices
• Distributed monolith
Monolith
Microservice Monolith 2
This Photo by Unknown Author is
licensed under CC BY-SA
Microservices – The Easy Way is the Wrong Way
Challenges to making microservices
• Decentralized Data
Monolith
Accounts
Customers
Orders
Order History
Parts
Parts1
Shipping History
Logging
Microservices – The Easy Way is the Wrong Way
Challenges to making microservices
• Decentralized Data
Orders
-parts
~~
~~~
~~~~~
~~~
Parts
Microservices – The Easy Way is the Wrong Way
Challenges to making microservices
• Decentralized Data
Orders
-parts
Parts
Shipping
- orders
Microservices – The Easy Way is the Wrong Way
Challenges to making microservices Id
Natural Key
Part Number
Part Name
Category
Classification
Description
Size Description
Color
Container
Manufacturer
Mfg Part Number
Mfg Date
Replaces Part Number
Discontinued Date
Parts
Microservices – The Easy Way is the Wrong Way
Challenges to making microservices
Id
Natural Key
Part Number
Part Name
Description
Parts
Orders
-parts
Orders
~~~~~~~
~~~~
~~~~~~~~~~~
~~~~~~~~
~~~~~~~~~~~~~~
~~~~~~~~~~
~~~~~~~OrderedParts
Id
OrderId
Part Id
Part Number
Part Name
Description
Quantity
Price
Microservices – The Easy Way is the Wrong Way
Challenges to making microservices
Message Bus
Messaging
Microservices – The Easy Way is the Wrong Way
Decomposing Monolith to Microservices
Microservices – The Easy Way is the Wrong Way
Monolith Microservices
extract
new
Decomposing Monolith to Microservices
Microservices – The Easy Way is the Wrong Way
Decomposing Monolith to Microservices
Monolith
• Boundaries not clearly defined
• Lacking good Dependency Injection
• Requires refactoring
Microservices – The Easy Way is the Wrong Way
Monolith
Decomposing Monolith to Microservices
Start With Small Piece
Payoff in
• Learning
• Building Infrastructure
Microservices – The Easy Way is the Wrong Way
Decomposing Monolith to Microservices
Using DDD
Company: Wham-Bam
Products: Fidget Widgets
Production
Microservices – The Easy Way is the Wrong Way
Decomposing Monolith to Microservices
Production Shipping
Purchasing
Domain Model
Event Storming
Microservices – The Easy Way is the Wrong Way
Decomposing Monolith to Microservices
Event Storming
Production Shipping
Purchasing
Inventory
Invoicing
Returns
Accounts3rd
Party
Domain Model
Microservices – The Easy Way is the Wrong Way
Decomposing Monolith to Microservices
Using DDD
Bounded Contexts
Production
Parts
Purchasing
Parts
Products
Vendors
Order
Microservices – The Easy Way is the Wrong Way
Decomposing Monolith to Microservices
Using DDD
Bounded Contexts
Production
Parts
Purchasing
Parts
Products
Vendors
Order
Ubiquitous Language
Microservices – The Easy Way is the Wrong Way
Decomposing Monolith to Microservices
Using DDD
Aggregates
Order
Order Line
Product
Part
Both of these are in the Production Bounded Context
Microservices – The Easy Way is the Wrong Way
Decomposing Monolith to Microservices
Identify Possible Services
• Submit Order
• Ship Order
• Cancel Order
• Revise Order
Order
Order Line
Product
Part
Order Microservice
Production Bounded Context
Microservices – The Easy Way is the Wrong Way
Decomposing Monolith to Microservices
Microservice
Bounded ContextBounded Context
Microservice
Bounded Context
Microservices – The Easy Way is the Wrong Way
Decomposing Monolith to Microservices
Microservice
Bounded ContextBounded Context
Microservice
Bounded Context
Microservices – The Easy Way is the Wrong Way
Decomposing Monolith to Microservices
Microservice
Bounded ContextBounded Context
Microservice
Bounded Context
Bounded Context
“Cross-Cutting Concerns”
Microservices – The Easy Way is the Wrong Way
A Quick Review
This Photo by Unknown Author is licensed under CC BY-SA-NC
Microsevices are hard
They require good analysis and teamwork
Team Autonomy
Service Autonomy
Scalability
Fault Isolation
Cost time, money, learning, investing
Messaging; RPC; sync vs async; pub/sub
CI / CD setup per microservice
Sharing code keeps services tightly coupled
Need to know about Layer 4 and 7
TLS for service communication layer; OAuth for application layer
Microservices – The Easy Way is the Wrong Way
A Quick Review
Domain Driven Design
Bounded Contexts
Aggregates
Microservices – The Easy Way is the Wrong Way
Recommendations
Microservices Patterns – Chris Richardson
Domain-Driven Design: Tackling Complexity in the Heart of Software – Eric Evans
Implementing Domain Driven Design – Vernon Vaughn
Microservices – The Easy Way is the Wrong Way
Recommendations
Micro-Frontends – O’Reilly class by Luca Mezzalira
https://learning.oreilly.com/live-training
https://medium.com/@lucamezzalira/micro-frontends-resources-53b1ec7d12a
Microservices – The Easy Way is the Wrong Way
Thank You Sean Whitesell
@seanw122
seanwhitesell.com
President of Tulsa .NET User Group && Cloud Architect @ TokenEx, LLC
Non-Related Resources
https://Presentations.dotnetfoundation.org
https://dotnet.microsoft.com/learn/videos
https://github.com/dotnet-
presentations/dotnetconf2019/tree/master/Technical

Weitere ähnliche Inhalte

Ähnlich wie Microservices easywaywrongway

Dismantling the Monolith: Scaling with Microservices
Dismantling the Monolith: Scaling with MicroservicesDismantling the Monolith: Scaling with Microservices
Dismantling the Monolith: Scaling with MicroservicesOKL Engineering
 
Surviving as a Monolith in a Microservices World - by Blair Olynyk, Hyperwallet
Surviving as a Monolith in a Microservices World - by Blair Olynyk, HyperwalletSurviving as a Monolith in a Microservices World - by Blair Olynyk, Hyperwallet
Surviving as a Monolith in a Microservices World - by Blair Olynyk, HyperwalletHyperwallet
 
Microservice intro
Microservice introMicroservice intro
Microservice introramesh_sharma
 
Migrating to Microservices Patterns and Technologies (edition 2023)
 Migrating to Microservices Patterns and Technologies (edition 2023) Migrating to Microservices Patterns and Technologies (edition 2023)
Migrating to Microservices Patterns and Technologies (edition 2023)Ahmed Misbah
 
Discussion About Microservices Architecture
Discussion About Microservices ArchitectureDiscussion About Microservices Architecture
Discussion About Microservices ArchitectureRalph Osmond Rimorin
 
QCon 2015 - Microservices Track Notes
QCon 2015 - Microservices Track Notes QCon 2015 - Microservices Track Notes
QCon 2015 - Microservices Track Notes Abdul Basit Munda
 
Microserces Architecture
Microserces ArchitectureMicroserces Architecture
Microserces ArchitectureHadi Rasouli
 
Microservices in Practice
Microservices in PracticeMicroservices in Practice
Microservices in PracticeKasun Indrasiri
 
What is Microservices
What is MicroservicesWhat is Microservices
What is MicroservicesManoj Kamsali
 
Digital Transformation with Kubernetes, Containers, and Microservices
Digital Transformation with Kubernetes, Containers, and MicroservicesDigital Transformation with Kubernetes, Containers, and Microservices
Digital Transformation with Kubernetes, Containers, and MicroservicesLightbend
 
Pros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitecturePros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitectureAshwini Kuntamukkala
 
Iot cloud service v2.0
Iot cloud service v2.0Iot cloud service v2.0
Iot cloud service v2.0Vinod Wilson
 
Software Architectures, Week 3 - Microservice-based Architectures
Software Architectures, Week 3 - Microservice-based ArchitecturesSoftware Architectures, Week 3 - Microservice-based Architectures
Software Architectures, Week 3 - Microservice-based ArchitecturesAngelos Kapsimanis
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices ArchitectureKanushka Gayan
 
Microservices - when, why and how incontrodevops.it
Microservices  - when, why and how incontrodevops.itMicroservices  - when, why and how incontrodevops.it
Microservices - when, why and how incontrodevops.itGiuseppe Lavagetto
 
Microservices - The good, The bad, The does and The don'ts
Microservices - The good, The bad, The does and The don'tsMicroservices - The good, The bad, The does and The don'ts
Microservices - The good, The bad, The does and The don'tsFrederik Mogensen
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMiki Lombardi
 
Microservices: an introduction
Microservices: an introductionMicroservices: an introduction
Microservices: an introductionDaniel Baptista Dias
 
Isn't the Monolith Just Enough?
Isn't the Monolith Just Enough?Isn't the Monolith Just Enough?
Isn't the Monolith Just Enough?pflueras
 

Ähnlich wie Microservices easywaywrongway (20)

Dismantling the Monolith: Scaling with Microservices
Dismantling the Monolith: Scaling with MicroservicesDismantling the Monolith: Scaling with Microservices
Dismantling the Monolith: Scaling with Microservices
 
Surviving as a Monolith in a Microservices World - by Blair Olynyk, Hyperwallet
Surviving as a Monolith in a Microservices World - by Blair Olynyk, HyperwalletSurviving as a Monolith in a Microservices World - by Blair Olynyk, Hyperwallet
Surviving as a Monolith in a Microservices World - by Blair Olynyk, Hyperwallet
 
Microservice intro
Microservice introMicroservice intro
Microservice intro
 
Migrating to Microservices Patterns and Technologies (edition 2023)
 Migrating to Microservices Patterns and Technologies (edition 2023) Migrating to Microservices Patterns and Technologies (edition 2023)
Migrating to Microservices Patterns and Technologies (edition 2023)
 
Discussion About Microservices Architecture
Discussion About Microservices ArchitectureDiscussion About Microservices Architecture
Discussion About Microservices Architecture
 
QCon 2015 - Microservices Track Notes
QCon 2015 - Microservices Track Notes QCon 2015 - Microservices Track Notes
QCon 2015 - Microservices Track Notes
 
Microserces Architecture
Microserces ArchitectureMicroserces Architecture
Microserces Architecture
 
Microservices in Practice
Microservices in PracticeMicroservices in Practice
Microservices in Practice
 
What is Microservices
What is MicroservicesWhat is Microservices
What is Microservices
 
Digital Transformation with Kubernetes, Containers, and Microservices
Digital Transformation with Kubernetes, Containers, and MicroservicesDigital Transformation with Kubernetes, Containers, and Microservices
Digital Transformation with Kubernetes, Containers, and Microservices
 
Pros & Cons of Microservices Architecture
Pros & Cons of Microservices ArchitecturePros & Cons of Microservices Architecture
Pros & Cons of Microservices Architecture
 
Iot cloud service v2.0
Iot cloud service v2.0Iot cloud service v2.0
Iot cloud service v2.0
 
Microevent
MicroeventMicroevent
Microevent
 
Software Architectures, Week 3 - Microservice-based Architectures
Software Architectures, Week 3 - Microservice-based ArchitecturesSoftware Architectures, Week 3 - Microservice-based Architectures
Software Architectures, Week 3 - Microservice-based Architectures
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
 
Microservices - when, why and how incontrodevops.it
Microservices  - when, why and how incontrodevops.itMicroservices  - when, why and how incontrodevops.it
Microservices - when, why and how incontrodevops.it
 
Microservices - The good, The bad, The does and The don'ts
Microservices - The good, The bad, The does and The don'tsMicroservices - The good, The bad, The does and The don'ts
Microservices - The good, The bad, The does and The don'ts
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - Plansoft
 
Microservices: an introduction
Microservices: an introductionMicroservices: an introduction
Microservices: an introduction
 
Isn't the Monolith Just Enough?
Isn't the Monolith Just Enough?Isn't the Monolith Just Enough?
Isn't the Monolith Just Enough?
 

KĂźrzlich hochgeladen

BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfLivetecs LLC
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy LĂłpez
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
2.pdf Ejercicios de programaciĂłn competitiva
2.pdf Ejercicios de programaciĂłn competitiva2.pdf Ejercicios de programaciĂłn competitiva
2.pdf Ejercicios de programaciĂłn competitivaDiego IvĂĄn Oliveros Acosta
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 

KĂźrzlich hochgeladen (20)

BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
How to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdfHow to Track Employee Performance A Comprehensive Guide.pdf
How to Track Employee Performance A Comprehensive Guide.pdf
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
2.pdf Ejercicios de programaciĂłn competitiva
2.pdf Ejercicios de programaciĂłn competitiva2.pdf Ejercicios de programaciĂłn competitiva
2.pdf Ejercicios de programaciĂłn competitiva
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 

Microservices easywaywrongway

  • 1. Microservices – The Easy Way is the Wrong Way
  • 2. Microservices – The Easy Way is the Wrong Way Goal Show that Microservice Architecture takes more consideration than you may expect
  • 3. Microservices – The Easy Way is the Wrong Way Agenda  What are microservices  Why should I use them  When should I NOT use them  Challenges  Decomposition (high-level)
  • 4. Microservices – The Easy Way is the Wrong Way What are microservices
  • 5. Microservices – The Easy Way is the Wrong Way What are microservices  Independent applications  Communicate over network  Has single responsibility  Owned by one team  Individually deployable  Architecture style
  • 6. Microservices – The Easy Way is the Wrong Way What are microservices Monolith
  • 7. Microservices – The Easy Way is the Wrong Way What are microservices Monolith Microservices extract new
  • 8. Microservices – The Easy Way is the Wrong Way What are microservices Monolith Microservices • Move functionality • Add functionality • Rare total migration
  • 9. Microservices – The Easy Way is the Wrong Way The microservice architecture is an implementation of Distributed Computing
  • 10. Microservices – The Easy Way is the Wrong Way Why should I use microservices To deliver business functionality  Quicker  Safer  Stability
  • 11. Microservices – The Easy Way is the Wrong Way Why should I use microservices Team Autonomy - Best language for the job - Focused development - Agile works well Team Autonomy Service Autonomy Scalability Fault Isolation
  • 12. Microservices – The Easy Way is the Wrong Way Why should I use microservices Service Autonomy - Single Responsibility - Deployable without other services Team Autonomy Service Autonomy Scalability Fault Isolation
  • 13. Microservices – The Easy Way is the Wrong Way Why should I use microservices Scalability - Scale independent of others - Choice of servers Team Autonomy Service Autonomy Scalability Fault Isolation
  • 14. Microservices – The Easy Way is the Wrong Way Why should I use microservices Fault Isolation - Your problems aren’t my problems - “Stay in your lane bro” Team Autonomy Service Autonomy Scalability Fault Isolation A B C D E X
  • 15. Microservices – The Easy Way is the Wrong Way Who uses microservices
  • 16. Microservices – The Easy Way is the Wrong Way Why should I NOT use microservices
  • 17. Microservices – The Easy Way is the Wrong Way THEY’RE HARD!!! This Photo by Unknown Author is licensed under CC BY-SA-NC So is good programming, but… Why should I NOTuse microservices
  • 18. Microservices – The Easy Way is the Wrong Way Why should I NOTuse microservices • Monolith is too small • Too much coupling – need refactoring first • Team unwilling or not ready • No support structure • High cost of time and money
  • 19. Microservices – The Easy Way is the Wrong Way Challenges to making microservices
  • 20. Microservices – The Easy Way is the Wrong Way Challenges to making microservices Easy Reality Cheap Cost time, money, learning, investing HTTP to IP address Messaging; RPC; sync vs async; pub/sub Copy files to servers CI / CD pipeline per Microservice Single Repo Should use Repo per Microservice Network not my job Need to know about OSI Model; Layer 4 and 7 Security non-issue TLS for service communication layer; OAuth for application layer Common Code Sharing code keeps services tightly coupled
  • 21. Microservices – The Easy Way is the Wrong Way Challenges to making microservices • HTTP7. Application 6. Presentation 5. Session • TCP / UDP4. Transport • IP / ARP / ICMP / IGMP3. Network 2. Data Link 1. Physical
  • 22. Microservices – The Easy Way is the Wrong Way Challenges to making microservices Service A V1.0 Team A Team B Service B V1.0Nuget Package Service A V2.0
  • 23. Microservices – The Easy Way is the Wrong Way Challenges to making microservices Service A V1.0 Team A Team B Service B V1.0Nuget Package Service A V2.0 Service B V2.0 Changes in Package for Service A kept Service B from working.
  • 24. Microservices – The Easy Way is the Wrong Way Challenges to making microservices Service A V1.0 Team A Team B Service B V1.0 Nuget Package Foo Service A V2.0 Service B V2.0 Nuget Package Goo Nuget Package Bar
  • 25. Microservices – The Easy Way is the Wrong Way Challenges to making microservices Nuget Package Common Nuget Package Svc B Nuget Package Svc A Separate code that changes to their own package for the service that needs it.
  • 26. Microservices – The Easy Way is the Wrong Way Challenges to making microservices • Distributed monolith Monolith Microservice Monolith 2 This Photo by Unknown Author is licensed under CC BY-SA
  • 27. Microservices – The Easy Way is the Wrong Way Challenges to making microservices • Decentralized Data Monolith Accounts Customers Orders Order History Parts Parts1 Shipping History Logging
  • 28. Microservices – The Easy Way is the Wrong Way Challenges to making microservices • Decentralized Data Orders -parts ~~ ~~~ ~~~~~ ~~~ Parts
  • 29. Microservices – The Easy Way is the Wrong Way Challenges to making microservices • Decentralized Data Orders -parts Parts Shipping - orders
  • 30. Microservices – The Easy Way is the Wrong Way Challenges to making microservices Id Natural Key Part Number Part Name Category Classification Description Size Description Color Container Manufacturer Mfg Part Number Mfg Date Replaces Part Number Discontinued Date Parts
  • 31. Microservices – The Easy Way is the Wrong Way Challenges to making microservices Id Natural Key Part Number Part Name Description Parts Orders -parts Orders ~~~~~~~ ~~~~ ~~~~~~~~~~~ ~~~~~~~~ ~~~~~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~OrderedParts Id OrderId Part Id Part Number Part Name Description Quantity Price
  • 32. Microservices – The Easy Way is the Wrong Way Challenges to making microservices Message Bus Messaging
  • 33. Microservices – The Easy Way is the Wrong Way Decomposing Monolith to Microservices
  • 34. Microservices – The Easy Way is the Wrong Way Monolith Microservices extract new Decomposing Monolith to Microservices
  • 35. Microservices – The Easy Way is the Wrong Way Decomposing Monolith to Microservices Monolith • Boundaries not clearly defined • Lacking good Dependency Injection • Requires refactoring
  • 36. Microservices – The Easy Way is the Wrong Way Monolith Decomposing Monolith to Microservices Start With Small Piece Payoff in • Learning • Building Infrastructure
  • 37. Microservices – The Easy Way is the Wrong Way Decomposing Monolith to Microservices Using DDD Company: Wham-Bam Products: Fidget Widgets Production
  • 38. Microservices – The Easy Way is the Wrong Way Decomposing Monolith to Microservices Production Shipping Purchasing Domain Model Event Storming
  • 39. Microservices – The Easy Way is the Wrong Way Decomposing Monolith to Microservices Event Storming Production Shipping Purchasing Inventory Invoicing Returns Accounts3rd Party Domain Model
  • 40. Microservices – The Easy Way is the Wrong Way Decomposing Monolith to Microservices Using DDD Bounded Contexts Production Parts Purchasing Parts Products Vendors Order
  • 41. Microservices – The Easy Way is the Wrong Way Decomposing Monolith to Microservices Using DDD Bounded Contexts Production Parts Purchasing Parts Products Vendors Order Ubiquitous Language
  • 42. Microservices – The Easy Way is the Wrong Way Decomposing Monolith to Microservices Using DDD Aggregates Order Order Line Product Part Both of these are in the Production Bounded Context
  • 43. Microservices – The Easy Way is the Wrong Way Decomposing Monolith to Microservices Identify Possible Services • Submit Order • Ship Order • Cancel Order • Revise Order Order Order Line Product Part Order Microservice Production Bounded Context
  • 44. Microservices – The Easy Way is the Wrong Way Decomposing Monolith to Microservices Microservice Bounded ContextBounded Context Microservice Bounded Context
  • 45. Microservices – The Easy Way is the Wrong Way Decomposing Monolith to Microservices Microservice Bounded ContextBounded Context Microservice Bounded Context
  • 46. Microservices – The Easy Way is the Wrong Way Decomposing Monolith to Microservices Microservice Bounded ContextBounded Context Microservice Bounded Context Bounded Context “Cross-Cutting Concerns”
  • 47. Microservices – The Easy Way is the Wrong Way A Quick Review This Photo by Unknown Author is licensed under CC BY-SA-NC Microsevices are hard They require good analysis and teamwork Team Autonomy Service Autonomy Scalability Fault Isolation Cost time, money, learning, investing Messaging; RPC; sync vs async; pub/sub CI / CD setup per microservice Sharing code keeps services tightly coupled Need to know about Layer 4 and 7 TLS for service communication layer; OAuth for application layer
  • 48. Microservices – The Easy Way is the Wrong Way A Quick Review Domain Driven Design Bounded Contexts Aggregates
  • 49. Microservices – The Easy Way is the Wrong Way Recommendations Microservices Patterns – Chris Richardson Domain-Driven Design: Tackling Complexity in the Heart of Software – Eric Evans Implementing Domain Driven Design – Vernon Vaughn
  • 50. Microservices – The Easy Way is the Wrong Way Recommendations Micro-Frontends – O’Reilly class by Luca Mezzalira https://learning.oreilly.com/live-training https://medium.com/@lucamezzalira/micro-frontends-resources-53b1ec7d12a
  • 51. Microservices – The Easy Way is the Wrong Way Thank You Sean Whitesell @seanw122 seanwhitesell.com President of Tulsa .NET User Group && Cloud Architect @ TokenEx, LLC