SlideShare a Scribd company logo
1 of 18
Download to read offline
Dennis van der Stelt
monoliths are bad; therefor microservices are good
Dennis van der Stelt
http://dennis.bloggingabout.net/
dennis@bloggingabout.net
Solution Architect at Particular Software
MICROSERVICES
@dvdstelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
“Failure is simply
the opportunity
to begin again,
this time more
intelligently.”
HENRY FORD
Dennis van der Stelt
CONWAY’S LAW (1967)
organizations which design systems ... are constrained to produce designs which
are copies of the communication structures of these organizations
“
”
Dennis van der Stelt
domain experts
Dennis van der Stelt
Use grammatical inspection technique of highlighting all the nouns in the text.
You will find that :
- Nouns become classes & attributes
- Verbs become methods and relations
NOUN/VERB ANALYSIS
Thought at school when we were young and naïve…
- Nouns become things (objects, services, bounded contexts, etc)
- Verbs are how they talk to each other
Dennis van der Stelt
Use grammatical inspection technique of highlighting all the nouns in the text.
You will find that :
- Nouns become things (objects, services, bounded contexts, etc)
- Verbs are how they talk to each other
NOUN/VERB ANALYSIS
Thought at school when we were young and naïve…
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Dennis van der Stelt
Sales
Lists requests made by
customer
Customer
Displays customer
information such as
name and current
location
Taxi
Shows where taxi drivers
are and at what time they
arrive at your location
Finance
COMPOSITE UI
Micro views
Dennis van der Stelt
Handle business events through
Inversion of communication
by supplementing SOA with
EDA
“
”
SOA is business agility
Dennis van der Stelt
find me.
http://dennis.bloggingabout.net
dvdstelt@bloggingabout.net

More Related Content

More from Dennis van der Stelt

More from Dennis van der Stelt (14)

Change your architecture during deployment
Change your architecture during deploymentChange your architecture during deployment
Change your architecture during deployment
 
Dealing with eventual consistency
Dealing with eventual consistencyDealing with eventual consistency
Dealing with eventual consistency
 
Dealing with eventual consistency
Dealing with eventual consistencyDealing with eventual consistency
Dealing with eventual consistency
 
Death of the batch job - NServiceBus Sagas
Death of the batch job - NServiceBus SagasDeath of the batch job - NServiceBus Sagas
Death of the batch job - NServiceBus Sagas
 
Distributed Systems Principles
Distributed Systems PrinciplesDistributed Systems Principles
Distributed Systems Principles
 
Distributed Systems principles
Distributed Systems principlesDistributed Systems principles
Distributed Systems principles
 
Een andere kijk op Microservices
Een andere kijk op MicroservicesEen andere kijk op Microservices
Een andere kijk op Microservices
 
Distributed Systems Design
Distributed Systems DesignDistributed Systems Design
Distributed Systems Design
 
Silverlight & WCF RIA
Silverlight & WCF RIASilverlight & WCF RIA
Silverlight & WCF RIA
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
AppFabric Velocity
AppFabric VelocityAppFabric Velocity
AppFabric Velocity
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
App fabric introduction
App fabric introductionApp fabric introduction
App fabric introduction
 
SOLID Principles part 1
SOLID Principles part 1SOLID Principles part 1
SOLID Principles part 1
 

Recently uploaded

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 

How to build microservices

  • 1. Dennis van der Stelt monoliths are bad; therefor microservices are good Dennis van der Stelt http://dennis.bloggingabout.net/ dennis@bloggingabout.net Solution Architect at Particular Software MICROSERVICES @dvdstelt
  • 7. Dennis van der Stelt “Failure is simply the opportunity to begin again, this time more intelligently.” HENRY FORD
  • 8. Dennis van der Stelt CONWAY’S LAW (1967) organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations “ ”
  • 9. Dennis van der Stelt domain experts
  • 10. Dennis van der Stelt Use grammatical inspection technique of highlighting all the nouns in the text. You will find that : - Nouns become classes & attributes - Verbs become methods and relations NOUN/VERB ANALYSIS Thought at school when we were young and naïve… - Nouns become things (objects, services, bounded contexts, etc) - Verbs are how they talk to each other
  • 11. Dennis van der Stelt Use grammatical inspection technique of highlighting all the nouns in the text. You will find that : - Nouns become things (objects, services, bounded contexts, etc) - Verbs are how they talk to each other NOUN/VERB ANALYSIS Thought at school when we were young and naïve…
  • 12. Dennis van der Stelt
  • 13. Dennis van der Stelt
  • 14. Dennis van der Stelt
  • 15. Dennis van der Stelt Sales Lists requests made by customer Customer Displays customer information such as name and current location Taxi Shows where taxi drivers are and at what time they arrive at your location Finance COMPOSITE UI Micro views
  • 16. Dennis van der Stelt Handle business events through Inversion of communication by supplementing SOA with EDA “ ”
  • 17. SOA is business agility
  • 18. Dennis van der Stelt find me. http://dennis.bloggingabout.net dvdstelt@bloggingabout.net

Editor's Notes

  1. - Veel bedrijven, veelal gezien wat niet werkt. Wat werkt wel? - Vooral populaire onderwerpen zijn moeilijk. Buzzwords. - Klanten die zeggen, we gaan dit oplossen met SOA. - Hoe dan? Webservices die webservices aanroepen, die webservices aanroepen. Maar dat gaat niet werken. - Nee, maar dit keer zijn het REST server, die REST services aanroepen, etc. - Dit keer wordt het echt anders, micro services calling micro services
  2. Wie heeft er ooit gewerkt met … ASP.NET WebServices (asmx) -> SOA WCF WebServices (svc) -> Don Box met 4 tenets of SOA WebAPI REST Services WAAROM IS WCF DOOD? WebAPI draaide origineel op WCF! Maar WCF was niet cool meer. WCF moest dood. SOAP moest dood. XML moest dood. JSON!!! Zelfs xml config in Visual Studio moest om! Microservices op REST & JSON Serverless??? Applicaties die volledig draaien op 3rd party apps/services _of_ draaien in containers die héél kort leven
  3. HOE KAN DAT? Netflix doet het toch ook!!! Netflix doet iets met microservices, maar ze leggen niet uit hoe ze dat doen. Kan werken in hun geval, maar onduidelijk is wat & hoe. Ik zie het nooit werken. Probleem is altijd tightly coupled designs. Wie heeft dat ook, tightly coupled designs die niet werken? Hoe je het ook noemt, tightly coupled werkt niet. Webservices, REST services, micro services, etc. Probleem hier : tightly coupled orchestration
  4. Dat is 90% van wat je moet weten als developer, de rest is marketing. Tight coupling werkt niet. De overige 10% is wat wel werkt : encapsulation Bouw software die highly cohesive (samenwerken) & well encapsulated is, en dan heb je vanzelf loose coupling. Verhaal portemonee Dit komt terug op zaken die al heel oud zijn. Elke 10 jaar komt er echter iets nieuws wat een hoop buzz creeërt en waar veel mensen aan mee willen doen. High cohesion, low coupling That’s all SOA is : High cohesion, low coupling That’s all Object Orientation is : High cohesion, low coupling That’s all micro services is : High cohesion, low coupling
  5. De rest is marketing! Maar wie zou er naar een conferentie over OO design gaan? SOA & Microservices is interessant! Vertel meer! Waarom moeten die services zo klein zijn?! Allemaal marketing. Hoe je het ook vorm geeft, dit is waar het om gaat : High cohesion, low coupling Maar dit is MOEILIJK !!! High encapsulation betekent verantwoordelijkheden vinden Daar hoor je niemand over! Allemaal techniek, allemaal oplossingen, maar wat is het probleem? Dat we nu een Docker containerized runtime wat-het-ook-is hebben, maakt het niet minder eenvoudig om verantwoordelijkheden te vinden.
  6. Dit doen we jaar na jaar na jaar… OO, Componetized, SOA, REST, Microservices, Serverless…
  7. Praat met domein experts!!!
  8. noun = zelfstandig naamwoord verb = werkwoord The word service is too overloaded Probeer met Monopoly. En pak dan niet het board, de pionnen, het geld. Maar begin met de spelregels!
  9. Every verb creates coupling between two ‘things’ “Een ding doet een werkwoord met een ander ding” Vul dit in met webservices, rest services, micro services. Die gaan deze koppeling niet voor je oplossen! Je eindigt met iets dat tightly coupled is, en dat is het probleem. Hoe dan wel???
  10. Opnieuw, stel vragen aan de business! Hoe werkt dit allemaal? Zelfstandig naamwoord zoals klant en naam en locatie en meer data. Allemaal attributen. Architecten laten attributen over aan developers, dat is te diep techniek in. Maar er zit veel waarde in ze!!!
  11. Vraag jezelf af, zitten deze attributen in dezelfde transactie? Voorbeeld : klantnaam en korting. Behoren die in dezelfde transactie? Maak er een requirement van. Als een klantnaam meer dan 7 karakters is, dan kan hij niet meer dan 7% korting hebben. Dat is gek. De business zal vragen wat er mis met je is. Dat is goed! Klantnaam en korting horen niet bij elkaar! Geen consistency requirements. We maken iets highly consistent waar de business totaal geen waarde aan hecht!!!
  12. Je kunt het ook van andere kant bekijken. Als er een product in de aanbieding is, mag een klant geen korting op dat product. Die zijn attributen van verschillende entiteiten, die dus blijkbaar wel heel dicht bij elkaar horen te zijn. Er zijn consistency requirements! Onderzoek dit soort regels en controleer of er een consistency requirement is. Dan horen ze bij elkaar. Je krijgt zo een heleboel attributen die bij elkaar horen! Geïndexeerd door één identifier. Klanten-korting met een klanten id, ergens anders klantnaam met klanten id. Werkt hetzelfde als foreign keys in relationele database!
  13. Zo krijg je ‘dingen’ waarvan business je vertelt dat ze tightly coupled zijn. Als we die bij elkaar stoppen in één object, is het encapsulated, en highly cohesive!!!
  14. Als we een project starten, luisteren we naar business, lopen naar whiteboard, tekenen vierkantjes en geven ze een naam. Naamgeving is een van moeilijkste zaken in development. En we doen het als we nog bijna niets weten van het domein! Doe het andersom. Begin met wat je weet, maar zet het niet in een vierkantje, totdat je weet wat er echt in moet en bij elkaar hoort. Eerst de verantwoordelijkheden onderkennen!
  15. Als je dit doet, kunnen ontwikkelaars zeggen : “Dit duurt lang, wanneer gaan we nou eens code schrijven?” Zie een project als een reis die begint met een enkele stap. Als je eerste stap de verkeerde kant op is, sla je een flater aan het einde van de reis. Deze exercitie is je orienteren welke kant je op moet.
  16. Layering is voor separation of concerns. Maar scheidt UI van de rest en dan weet je voldoende en hoef je niet meer layering toe te passen. We lossen complexe problemen vaak op door meer layers toe te voegen. Niet doen! En als we iets in UI hebben wat tightly coupled is aan product of prijs, waarom stoppen we dat niet samen? UI deel & data persistence deel gaan goed samen! Als het in onze analyse niet samen ging, kan het wel samen op het scherm, maar praten die delen niet met elkaar. Vertical slicing ipv horizontal layering