LIST

Architecture: The Hard Parts - semantic vs implementation coupling

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 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 not brittle: changing the type of country, does not break the contract for wishlist support all versions forever?...

July 21, 2022

Architecture: The Hard Parts - service granularity

Model_ 5 service disintegrators Model_ 3 granularity integrators

July 21, 2022

Architecture: The Hard Parts - synchronous vs asynchronous communication

What is async? async implies events or messages Distinction_ events vs messages Why async? improves responsiveness (not performance - Distinction_ responsiveness vs performance) async usually works well in happy path, but get’s more complicated in the unhappy path… happy path -> works well unhappy path: eg.“comment uses a word that is not allowed” new user flow: send email? notification to user? automate correction censor that word *****

July 21, 2022

Architecture: The Hard Parts - workflow choreography vs orchestration

orchestration: conductor at musical orchestra choreography: dancers Orchestration single point of failure services depend on orchestrator lots of communication order placement needs to be highly available orchestrator needs to be highly available order placements needs to be highly available smaller orchestrator (vs Enterprise Service Bus) eg. Order Placement Orchestrator, Order Cancellation Orchestrator logic shifts to the orchestrator error handling becomes a design decision in the orchestrator? in the service?...

July 21, 2022

Course: Architecture: The Hard Parts - Neal Ford & Mark Richards

Architecture: The Hard Parts How do I determine the appropriate level of service granularity? service granularity How do I achieve high semantic coupling and low implementation coupling? semantic vs implementation coupling How do I create bounded contexts and access data I don’t own? bounded contexts and access data I don’t own How do I decide between synchronous versus asynchronous communication? synchronous vs asynchronous communication How do I choose between choreography and orchestration for my workflow?...

July 21, 2022