Skip to content
Michi Gysel edited this page Dec 16, 2015 · 3 revisions

Nanoentity

Sam Newman writes in his book "Building Microservices":

When you start to think about the bounded contexts that exist in your organization, you should be thinking not in terms of data that is shared, but about the capabilities those contexts provide the rest of the domain.

S. Newman. Building Microservices. "O’Reilly Media, Inc.", 2015, p. 34

In order to provide capabilities, a service needs resources. We identified three types of resources which are the building blocks of services:

  • Data A service has ownership over some of the system’s data. It is the only instance responsible for changes on that data and optionally informs other services about changes. The data is often, but not necessarily, stored in a database. Data which is published to other services belongs to the published language of the system.
  • Operations A service has ownership over business rules and calculation logic. These operations are often but not necessarily based on the data the service owns.
  • Artifacts A service has ownership over artifacts. An artifact is a collection of data or operation results transformed into a specific format. An example is a business report which has been built using operations and data.

In order to enable a structured approach to service decomposition, we generalize these resources with the concept of a nanoentity. Examples for possible nanoentities are illustrated in the following figure.

Nanoentities

System

A system refers to a software application whose architecture needs to be decomposed into services.

Candidate Service Cut

Based on the input provided by user representations and the defined criteria priorities, the Service Cutter produces a set of candidate service cuts for a system.