In Software Catalog, an entity represents the smallest building block of modern microservice-based architecture. As of schema definition v3.0+, an entity can be an instrumented APM service, a datastore, a system, an API, a queue, or even a custom-defined entity.
In APM, a service (kind:service) is a group of related endpoints, queries, or jobs that perform a piece of work for your application. For example, a service could be a group of endpoints, a group of DB queries, or a group of periodic jobs.
Through custom instrumentation in APM, you can create an arbitrary service. In practice, microservice-based architecture includes multiple APM services, each measuring the performance of sub-components of the application through Trace Metrics.
In Software Catalog, you can collect non-instrumented services by declaring them through metadata or importing through external sources like Backstage or ServiceNow.
In Software Catalog, a system (kind:system) is a group of entities that cooperate to perform a broader function. For example, you can group multiple instrumented APM services into a system because they are operated by the same team. You can also use system to represent a full microservice-based architecture, and include components like APIs, datastores, queues, and other common building blocks.
Note: System in Datadog has the same meaning as in Backstage’s System Model.
To define components within a system, you can specify values for the components key in the spec field of the entity’s v3 definition.
Example YAML for kind:system:
entity.datadog.yaml
apiVersion:v3kind:systemmetadata:name:product-recommendationdescription:Surfaces personalized product suggestions in ShopistdisplayName:"Product Recommendation"tags:- product:recommendations- business-line:shared-componentsowner:shopistadditionalOwners:- name:Shopist Support Teamtype:Operatorspec:lifecycle:productiontier:"0"components:- service:product-recommendation- service:orders-app- api:products- system:shopist-user-trends
This user-defined system appears in Software Catalog as shown:
This page holds relationship data of components between the system and upstream/downstream dependencies as well as scorecards, logs, and events aggregated across all system components.
Note: If a single component is part of multiple systems, you must specify that component in the YAML for each system.
In Software Catalog, an API (kind:API) refers to a collection of endpoints that belong together logically. APIs offer an alternative way to group endpoints beyond APM services (the mapping between endpoints and services are not modifiable).
To define components within an API, you can specify values for the components key in the spec field of the entity’s v3 definition.
The user-defined API appears in Software Catalog as shown:
This page holds relationship data of how the API interacts with dependencies, the API components, an OpenAPI preview, and logs and events aggregated across all endpoints.
Note: Software Catalog contains HTTP endpoints that are automatically discovered by APM. The concept of endpoints correspond to APM resources for an APM web service.
You can define custom entity types beyond service, system, datastore, queue, and API. Custom entities allow you to represent any component or resource that is important to your organization but does not fit into the standard categories.