There are many definitions of what a Digital Twin is. You can at least 112 definitions in this wonderful compilation by Andreas Wortmann.
Personally I prefer this definition of a Digital Twin from the perspective of a software architect.
From a software architecture point of view, a digital twin is a concept for abstracting a real world asset with all capabilities and aspects, including its digital representation through different services that support the communication and composition of enabling technologies such as IoT, Data processing, Machine Learning, predictive algorithms, 2D/3D visualization, etc… in order to be efficient, flexible, scalable and loosely coupled.
Why is this definition the most appropriate for me? Because it contains something that all the previous ones share. The Digital Twin is a combination of technologies that is usually implemented under a software architecture.
Table of contents
Open Table of contents
A bird’s-eye view of Digital Twin architecture
Digital Twin can be broken down into a set of functionalities that respond to the different capabilities that a twin can offer. From now on, under a Software architecture we will call them Building Blocks.
- Ingestion (IoT,Data Sources, Synthtetic Data Generation…)
- Management (Orchestration, Security, Monitoring…)
- Data (Storage, Processing, Analytics…)
- Integration (Business Rules, Enterprise Integration…)
- Modeling (Digital Ontology, Twinning…)
- Intelligence (Predictions models, Simulations…)
- Visualization (Dashboards, 3D models, AR /VR …)
Composable thinking
Digital Twins architectures should be composable. When you combine the principles of modularity, encapsulation, orchestration and interoperability, it should guide your approach to conceptualizing what to compose, and when. This understanding of software composable architecture include two significant concepts:
Building blocks
and Interfaces
.
We can use this concept to abstract component elements of a software architecture from the multiple of terms used in technology, modeling approaches, development progamming languages and design methods. A building block is the core basic element to represent abstractions of technology, software or implementation artifacts of source code. A building block provides interfaces that it guarantees in the sens of a contract. An interface represents a well-defined access point to the building block.Interfaces are used to connect building blocks. Both building blocks must comply with the interface agreement, regardless of whether they provide or require the interface. This is defined in the interface itself.
Achieve consistency
Conceptual integrity is the most important consideration to define and design software architectures. This means the architectures follows a consistent set of rules or decisions. In our case, all building blocks follow this rules:
- Building Block encapsulation: Use containers
- Interface: Communication with Architecture and other building blocks throw API (services) or events (produce or consume).
How encapsulate building blocks?
Using containers is a nice way to abstract different buildings blocks of the architecture, providing flexibility in terms of choice to use different technology, programming language, etc… This help to avoid a limitation of interoperability of technologies uses in each building block and allow betters scenarios to scaling, maintenance, deployments, and others.
Who defines the interface and the interface aggregament?
- Provided interface. In this case the interface is defined by the building block that provided it. For example, API services
- Required interface. In this case, the interface is defined by the building block that requires it. For example, the management building block manages orchestration through events with a Pub/Sub pattern. Other building blocks can produce events to be consumed by other building blocks. To do this, you can subscribe to topics defined by the Management building by implementing specific methods to produce or consume events in the orchestration services exposed by the Management Building block.