Architecture: The Hard Parts - semantic vs implementation coupling

July 21st, 2022

no description for image available

 

if the semantics of your problem change

then everything else needs to change

 

prevent implementation coupling, that makes your architecture brittle

 


 

contracts: strict vs loose

no description for image available

method calls

"schema"

serialized objects

RPC remote procedure call

graphql (aggregation framework, not a invocation framework)

value-driven contracts

json

KVP key value pairs

 

example: brittleness

no description for image available

not brittle: changing the type of country, does not break the contract for wishlist

 

no description for image available

support all versions forever? => deprecation strategy

 

no description for image available

 

no description for image available

https://martinfowler.com/articles/consumerDrivenContracts.html

 

pact

  • sync: rest

  • async: events (kafka / rabbitmq)

 

no description for image available

 

looser?

  • deployability (delay in updating versions in app store, old versions on customer phones)

  • integration points (app stores)