chapter five

5 Domain ownership

 

This chapter covers

  • Designing domain-oriented Data Products
  • Understanding what a domain is and how it can be decomposed
  • Establishing Data Product boundaries
  • Defining ownership of Data Products

In this chapter, we will focus on Data Mesh’s Domain Ownership principle. Domain ownership is about decentralizing responsibility for data and shifting it to business domains. It is a stark contrast to the popular model of centralizing data responsibility within the Central Data Team.

What does decentralizing responsibility mean for an individual development team? If you take a team that builds a software component allowing users to register, this component creates data—user data. In the old world, a data team would probably query the team’s database to get the user data for creating user registration dashboards. This is “data as a by-product”. If the responsibility is with the team, however, the data team should ask the team to provide the data in a way that is suitable for the task, and the team owning data should expose it in the expected way.

The logic behind decentralization is that the people closest to a business area know the most about its generated data and are best suited for tasks related to that business area. 

To learn how to apply decentralization in a domain-oriented way, we will consider how business activities influence the design and ownership of Data Products.

5.1 Capturing and analyzing domains

5.1.1 Domain-Driven Design 101

5.1.2 Invite the right people

5.1.3 Choose the correct workshop technique

5.2 Apply ownership using domain decomposition

5.2.1 Domain, subdomain, and business capability

5.2.2 Decompose domain using business capability modeling

5.2.3 How are domains and business capabilities related to data?

5.2.4 Assign responsibilities to the Data Product-owning team

5.2.5 Choose the right team to own data

5.3 Apply ownership using data use cases

5.3.1   Data use cases

5.3.2 Model and bounded context

5.3.3 Set up boundaries of use case-driven Data Products

5.3.4 Choose the right team to own data

5.4 Apply ownership using design heuristics

5.4.1 What is heuristic?

5.4.2 Using design heuristics

5.4.3 Designing heuristics and possible boundaries

5.5 Final landscape: The mesh of interconnected Data Products

5.5.1 A Messflix mesh - Meshflix?

5.5.2 Every Data Product exposes ports that can be used to build derived data products

5.5.3 Data Products form a mesh

5.5.4 Is it already a Data Mesh?

5.6 Summary