Skip to content

How to desing a Digital Twin composable architecture

April 15, 2023 | 12:22 AM

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.

digital-twin-building-blocks

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:

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.

digital-twin-building-blocks

Who defines the interface and the interface aggregament?

digital-twin-building-interface-provided

digital-twin-building-interface-required