microservices: redundancy=maintainability
TRANSCRIPT
![Page 1: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/1.jpg)
Microservices:Redundancy =
Maintainability!Eberhard Wolff
@ewolffFellowinnoQ
![Page 2: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/2.jpg)
http://continuous-delivery-buch.de/
![Page 3: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/3.jpg)
http://microservices-buch.de/ http://microservices-book.com/
![Page 4: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/4.jpg)
http://microservices-book.com/primer.html
FREE!!!!
![Page 5: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/5.jpg)
Maintainablity
Redundant data
Redudant code
![Page 6: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/6.jpg)
Legacy System
![Page 7: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/7.jpg)
![Page 8: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/8.jpg)
Too many dependencies
Cyclic dependencies(dotted lines)
![Page 9: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/9.jpg)
> COBOL, Assembler
> Not maintainable
> Not replaceable
![Page 10: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/10.jpg)
L
![Page 11: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/11.jpg)
> We will replace it!
> We will make it maintainable!
> It will be beautiful!
![Page 12: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/12.jpg)
We will take good care of the code!
![Page 13: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/13.jpg)
CleanLikeSpring
![Page 14: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/14.jpg)
Clean Architecture
![Page 15: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/15.jpg)
Developer
![Page 16: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/16.jpg)
Developer
![Page 17: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/17.jpg)
Result?
![Page 18: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/18.jpg)
![Page 19: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/19.jpg)
> Legacy System
> Java
> Not maintainable
> Not replaceable
![Page 20: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/20.jpg)
L
![Page 21: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/21.jpg)
> We didn’t try hard enough!
> We will replace it!
> We will make it maintainable!
> It will be beautiful!
![Page 22: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/22.jpg)
LI need a new job.
![Page 23: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/23.jpg)
While there are still developers:
Replace the legacy system.
Repeat
![Page 24: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/24.jpg)
Insanity:Doing the same thingover and over againand expecting different results.
Albert Einstein
![Page 25: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/25.jpg)
We can achievemaintainability withclean architecture +clean code.
![Page 26: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/26.jpg)
We can achievemaintainability withclean architecture +clean code.
![Page 27: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/27.jpg)
Clean approach tried often.
Results?
![Page 28: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/28.jpg)
Lots of Legacy Code
…and secure jobs.
![Page 29: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/29.jpg)
We need a different approach!
![Page 30: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/30.jpg)
Parnas 1972
Modules
![Page 31: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/31.jpg)
ECommerceSystem
Order
Catalog
BillingSearch
![Page 32: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/32.jpg)
Modules by Domain
> Each domain problem solved in one module.
> New features easy to add
![Page 33: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/33.jpg)
Modules
> Programming language feature
> Class, package, library …
> Rather weak modules
![Page 34: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/34.jpg)
Developer
![Page 35: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/35.jpg)
Microservices
> Modules
> Separate deployment units
> Separate VM / process
![Page 36: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/36.jpg)
Server Server
MicroService
MicroService
![Page 37: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/37.jpg)
ECommerceSystem
Order
Catalog
BillingSearch
Module = separatedeployment units!
![Page 38: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/38.jpg)
ECommerceSystem
Order
Catalog
BillingSearch
Module = separatedeployment units!
Communication e.g. REST
![Page 39: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/39.jpg)
REST REST
![Page 40: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/40.jpg)
ECommerceSystem
Order
Catalog
BillingSearch
Dependencies betweensystems cannot sneak in
![Page 41: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/41.jpg)
ECommerceSystem
Order
Catalog
BillingSearch
Dependencies betweensystems cannot sneak in
![Page 42: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/42.jpg)
ECommerceSystem
Order
Catalog
BillingSearch
Dependencies betweensystems cannot sneak in
“Architecture Firewalls”
![Page 43: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/43.jpg)
“Architecture Firewall”like RESTenforce the architecture
![Page 44: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/44.jpg)
ECommerceSystem
Order
Catalog
BillingSearch
Components small
![Page 45: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/45.jpg)
ECommerceSystem
Order
Catalog
BillingSearch
Components small
Hard to mess up
![Page 46: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/46.jpg)
ECommerceSystem
Order
Catalog
BillingSearch
Components small
Hard to mess up
![Page 47: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/47.jpg)
ECommerceSystem
Catalog
BillingSearch
Components small
Hard to mess up
![Page 48: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/48.jpg)
ECommerceSystem
Order
Catalog
BillingSearch
Components small
Hard to mess upReplace if messed up.
![Page 49: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/49.jpg)
Small,independent deployablemodulesare recyclable.
![Page 50: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/50.jpg)
Recycle your software!!
![Page 51: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/51.jpg)
How many peopleare tryingto replace legacy systems?
![Page 52: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/52.jpg)
Replaceabilityis usually no goalfor a software project.
Why??
![Page 53: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/53.jpg)
We can achievemaintainability withclean architecture +clean code
![Page 54: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/54.jpg)
We can achievemaintainability witharchitecture firewalls +recyclable modules
![Page 55: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/55.jpg)
Maintainability�
![Page 56: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/56.jpg)
Redundancy
![Page 57: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/57.jpg)
RedundancyRedundant data
![Page 58: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/58.jpg)
Every information should be stored and updated in one place.
![Page 59: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/59.jpg)
No redundancy forour product data!
![Page 60: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/60.jpg)
ECommerceSystem
Productsdatabase
![Page 61: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/61.jpg)
ECommerceSystem
InvoicingSystem
Productsdatabase
![Page 62: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/62.jpg)
ECommerceSystem
InvoicingSystem
Productsdatabase
Productsdatabase
![Page 63: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/63.jpg)
ECommerceSystem
Productsdatabase
InvoicingSystem
![Page 64: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/64.jpg)
ECommerceSystem
Productsdatabase
InvoicingSystem
PurchaseSystem
![Page 65: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/65.jpg)
ECommerceSystem
Productsdatabase
InvoicingSystem
PurchaseSystem
MarketingSystem
![Page 66: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/66.jpg)
Productsdata model?
![Page 67: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/67.jpg)
![Page 68: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/68.jpg)
No redundancies
High complexity
Hard to change
![Page 69: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/69.jpg)
A central,redundancy-free data modelis the optimum.
![Page 70: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/70.jpg)
A central,redundancy-free data modelis the optimum.
![Page 71: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/71.jpg)
UBIQUITOUSLANGUAGE
VALUEOBJECT
ENTITY
![Page 72: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/72.jpg)
Address
VALUEOBJECT
ENTITYor
![Page 73: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/73.jpg)
529 pagesPart IVChapter 14
![Page 74: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/74.jpg)
A domain modelis only usefulin a Bounded Context.
![Page 75: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/75.jpg)
There is nouniversal data modelin a large system.
![Page 76: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/76.jpg)
Let me repeat:
![Page 77: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/77.jpg)
There is nouniversal data modelin a large system.
![Page 78: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/78.jpg)
Addressfor a customer
VALUEOBJECT
ENTITYor
![Page 79: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/79.jpg)
Addressfor calculating the
drones’ routes
VALUEOBJECT
ENTITYor
![Page 80: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/80.jpg)
ECommerceSystem
Products
InvoicingSystem
PurchaseSystem
MarketingSystem
![Page 81: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/81.jpg)
ECommerceSystem
InvoicingSystem
PurchaseSystem
MarketingSystem
BOUNDED
CONTEXT
BOUNDED
CONTEXT
BOUNDED
CONTEXT
BOUNDED
CONTEXT
![Page 82: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/82.jpg)
Create a modelfor each BOUNDED CONTEXT.
![Page 83: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/83.jpg)
Each BOUNDED CONTEXTcan be a Microservicewith its own database schema
![Page 84: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/84.jpg)
Low complexity
Easy to change
i.e. easy to maintain
![Page 85: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/85.jpg)
![Page 86: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/86.jpg)
Few redundancies
Separate facets
![Page 87: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/87.jpg)
ECommerceSystem
InvoicingSystem
PurchaseSystem
MarketingSystem
Product:Image
Product:Price
Product:Supplier
Product:Brochure
![Page 88: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/88.jpg)
A central,redundancy-free data modelis the optimum.
![Page 89: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/89.jpg)
A central,“redundancy-free”data modelis often hard to maintainand wrong.
![Page 90: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/90.jpg)
RedundancyRedundant data �
![Page 91: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/91.jpg)
RedundancyRedundant code
![Page 92: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/92.jpg)
Redundant code:The ultimate sin> Fix bug in many different place
> Decisions implemented in many places
> ...and hard to change
![Page 93: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/93.jpg)
DRYDon’t
RepeatYourself
![Page 94: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/94.jpg)
DRY Systems?Great!
DRY between systems?DRY is a trade-off
![Page 95: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/95.jpg)
System System System System
common common common common
![Page 96: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/96.jpg)
System System System System
common abstraction
![Page 97: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/97.jpg)
Reuse:The Holy Grailof the nineties
So where are all the reusable internal frameworks?
![Page 98: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/98.jpg)
Premature optimization,that’s like a sneeze.Premature abstractionis like Ebola;it makes my eyes bleed.
Christer Ericson
![Page 99: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/99.jpg)
The entire history ofsoftware engineeringis that of therise in levels of abstraction.
Grady Booch
![Page 100: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/100.jpg)
Using code is hard.
Reusing code is almost impossible.
But we are reusing Open Source all the time!
![Page 101: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/101.jpg)
Create an Open Source project!
![Page 102: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/102.jpg)
Open Source
> Good code quality
> Documentation
> Model to accept contributions
![Page 103: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/103.jpg)
“But high quality Open Source is hard.
We just share code!”
“You only provide high quality as Open Source…
...but for colleagues low quality is OK?”
![Page 104: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/104.jpg)
Let’s assume it’s possible to reuse code.
Reuse is still a tradeoff.
![Page 105: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/105.jpg)
System System System System
common common common common
![Page 106: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/106.jpg)
System System System System
abstraction
![Page 107: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/107.jpg)
System System System System
abstraction
Change!
![Page 108: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/108.jpg)
System System System System
abstractionChange!
![Page 109: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/109.jpg)
System System System System
abstractionChange!
Impact Impact Impact
![Page 110: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/110.jpg)
System System System System
abstractionChange!
Impact Impact Impact
![Page 111: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/111.jpg)
Now we have reuse
…and a dependency.
![Page 112: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/112.jpg)
Dependency not just in software!
![Page 113: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/113.jpg)
System System System System
common abstractionChange!
Impact Impact Impact
![Page 114: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/114.jpg)
Dependency between teams
Coordination
Meetings
Getting no real work done
![Page 115: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/115.jpg)
L
![Page 116: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/116.jpg)
Reuse is a tradeoff:
Reuse vs.Independence
Independence=Easy to change=Maintainability
![Page 117: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/117.jpg)
Independence is importantfor self-organization.
Self-organization =deciding yourself
Not meetings upon meetings
![Page 118: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/118.jpg)
Deciding yourselfis only possible,if teams and modulesare independent.
![Page 119: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/119.jpg)
Redundancies betweensystems must be avoided.
![Page 120: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/120.jpg)
Redundancies betweensystems must be avoided.
![Page 121: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/121.jpg)
Reuse is a tradeoff:
Reuse vs.Independence
![Page 122: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/122.jpg)
Microservices focus
on independence
![Page 123: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/123.jpg)
The MicroservicesManifesto ;-)
![Page 124: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/124.jpg)
MicroservicesManifesto ;-)
We value:Replaceability overmaintainability
![Page 125: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/125.jpg)
MicroservicesManifesto ;-)
We value:BOUNDED CONTEXT overredundancy-free data
![Page 126: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/126.jpg)
MicroservicesManifesto ;-)
We value:Independence over“Don’t Repeat Yourself!”
![Page 127: Microservices: Redundancy=Maintainability](https://reader033.vdocument.in/reader033/viewer/2022042605/5871d6871a28ab423c8b6b0f/html5/thumbnails/127.jpg)
Replaceability over maintainability
BOUNDED CONTEXT over redundant-free data
Independence over DRY