Clarifying architecture with Service Blueprints: system operations + entities
service blueprint architecture architecting assemblagePreviously, I described how to use service blueprints to visualize the system operations that implement a customer journey. In this article, I want show an enhanced version of the service blueprint that also shows the entities/aggregates that the system operations act upon.
System operations read and write business entities
A system operation reads and writes one or more business entities (a.k.a. DDD aggregates).
A system command creates, updates, deletes, and reads entities, whereas a system query simply reads entities.
For example, the following table shows the entities that are read and written by each of the system operations that support the Create Order
customer journey.
updateDeliveryAddress(address, time)
is a command that updates the ShoppingCart
with the delivery address and time; findAvailableRestaurant()
is a query that searches the Restaurants
; and createOrder()
is a command that creates an Order
, clears the ShoppingCart
and reads various entities including the Consumer
, PaymentMethod
and Restaurant
.
Displaying entities on a service blueprint
Let’s imagine that you are working your way through step 1 of the Assemblage process and discovering system operation. One approach is to first brainstorm the operations for a particular scenario and create the service blueprint shown previously. Next, you could analyze each of operation, and update the service blueprint with the entities that it acts upon:
This service blueprint visualizes the connection between each user action, the system operations that it triggers and the entities that each operation acts upon. A more elaborate service blueprint could show additional information, such as the key attributes of each entity. A blueprint could even have a collaboration diagram for each operation. There are no rigid rules about what to show: the goal is for a service blueprint to include whatever information is relevant.
What’s next
In later articles, I’ll describe other example of how service blueprints clarify software architecture by connecting architectural elements to user actions.
Need help with accelerating software delivery?
I’m available to help your organization improve agility and competitiveness through better software architecture: training workshops, architecture reviews, etc.