## 5 The IoTwins Platform: A Software Prototype
### IoTwins Platform's Implementation Details
The INDIGO Orchestrator is a TOSCA-compliant [30] cloud orchestrator in charge of accepting application deployment requests, scheduling virtual computing resources, and enforcing provisioning workflows that serve the requests. Beside fulfilling the application deployment task, INDIGO is capable of enforcing actions that guarantee the scalability and fault-tolerance of the deployed applications. In the next section, a sample provisioning workflow enforced by the INDIGO orchestrator is described. The platform provides services to help the developer implement the data backbone of their DTs. On the left-end of the figure, the RabbitMQ message broker and a set of streaming data adapters are depicted in yellow, signifying their belonging to the RAMI's Communication layer. These components are responsible for the gathering of data from the Edge and their adaptation to the application's required format. On the right-end of the picture, some DBMS tools (MinIO ([[https://min.io](https://min.io)]([https://min.io](https://min.io)), last accessed on 9 February 2024) as object-storage, InfluxDB ([[https://www.influxdata.com](https://www.influxdata.com)]([https://www.influxdata.com](https://www.influxdata.com)), last accessed on 9 February 2024) as time-series, MongoDB ([[https://www.mongodb.com](https://www.mongodb.com)]([https://www.mongodb.com](https://www.mongodb.com)), last accessed on 9 February 2024) as NoSQL) are depicted along with the adapters that developers can craft with the support of the telegraf ([[https://www.influxdata.com/time-series-platform/telegraf/](https://www.influxdata.com/time-series-platform/telegraf/)]([https://www.influxdata.com/time-series-platform/telegraf/](https://www.influxdata.com/time-series-platform/telegraf/)), last accessed on 9 February 2024) tool. The support for data management is then enriched with two open repositories that store Docker-based modules that can be re-used for DT development purpose. Finally, in the figure a sample of potential industrial applications is depicted: _Control logic_ is a software application that implements the business logic of an industrial control loop; _Data pre-processor_ is a component that filters/adapts streamed data before feeding them to the control logic; and _ML training_ is a neural network that needs to be trained both on locally-stored historical data and on real-time data streamed from the Edge. In Figure 4, the software components implementing the Edge side of the IoTwins platform are depicted. In the bottom, the virtualization tools Apache Mesos ([[https://mesos.apache.org/](https://mesos.apache.org/)]([https://mesos.apache.org/](https://mesos.apache.org/)), last accessed on 9 February 2024), Marathon ([[https://github.com/mesosphere/marathon](https://github.com/mesosphere/marathon)]([https://github.com/mesosphere/marathon](https://github.com/mesosphere/marathon)), last accessed on 9 February 2024), and Docker implement the integration layer prescribed by the RAMI architecture. Despite that the Mesos tool is designed to virtualize and manage a cluster of computing nodes, it perfectly accomplishes the management duties of just one node. Furthermore, in future developments it will cope well with scenarios where multiple Edge nodes need to be managed. Tools such as Marathon and Chronos, in their turn, will offer the developer the opportunity of running long-running and job-like computing instances, respectively. The reader may have noticed that there is no orchestrator component deployed in the Edge. The reason is that, at design time, we decided to centralize the orchestration functionality in the Cloud, so there is just one component (the INDIGO orchestrator, indeed) responsible for orchestrating the computing resources belonging to the Cloud/Edge continuum. On the Edge side, orchestration instructions are remotely triggered by the INDIGO orchestrator to the Mesos tool via the REST interface. Similarly to the Cloud deployment, software adapters are provided to meet both data stream and data storage adaptation needs.