MicroELements (MELs)
“Applications can be viewed as a graph of MicroELements (MELS)” (Carnevale, Celesti, Galletta, Dustdar, & Villari, 2018). In particular a MicroElement, which consists in an software or data abstraction, can be represented by a hierarchical structure:
- MicroService: it implements specific functionalities that can be deployed and migrated among the Cloud and the Edge resources;
- MicroData: it represents information flows in different data formats.

“Each IoT application can be decomposed into cooperating subprograms and services to improve deployability and scalability. In osmotic computing, IoT applications are decomposed into a number of interacting MELs, which are atomic entities providing simple functionalities” (Villari et al., 2019)
Software Defined Membrane
In Osmotic Computing, the concept of Membrane is an abstraction that represents a virtual environment based on the underlying infrastructure (Cloud or Edge resources). MicroELements can migrate within their Membrane, without having any contact and interaction with the outside world.

“The Software Defined Membrane (SDMem) in our OSMOSIS architecture acts as a filter to limit how MELs can be migrated, and under which context” (Villari et al., 2017).
Moreover, the osmotic membrane also plays a key role from a security point of view, as it can be configured to prevent attacks.
Osmotic Flow
A first proposed system-level description of the Osmotic Flow model requires that the application code is provided to the nearest Osmotic Resource Manager, that allocate a new Node Manager which, in turn, determines the application placement, governance and QoS constraints among Cloud DataCenters (CDC) and Edge DataCenters (ECD) (Nardelli, Nastic, Dustdar, Villari, & Ranjan, 2017).

The main components that make up the system are below:
- Osmotic Resource Manager (ORM): in that model, several Osmotic Resource Manager can interact and cooperate. Each ORM has the role to coordinate a pool of resources, that behave as a federation and enables the deployment of applications on the combined Edge and Cloud infrastructure. It is required therefore to ensure communication and coordination between ORMs, in order to dynamically adapt to failures, new connections and detachments of ORMs.
- Node Manager: each machine is managed by a Node Manager, which takes care of launching Workers’ tasks. It also provides information about resource utilization (i.e., CPU, memory, network) and communication delays to the ORM;
- Worker: it is able to execute one or more tasks that encapsulate user-define functions;
- Universal Stream Repository: it enables the sharing of data streams between nodes.
In the Osmosis infrastructure, the key point is the dynamic reconfiguration of MELs based on systems monitoring and QoS requirements. Moreover, to do this, it means also that it is necessary to find solutions to the following challenges (Villari et al., 2019):
- create a way to describe MELs and determine how to specify an execution environment, where they can be deployed;
- setting up an easy-to-use environment in which MELs are intrinsically fully equipped with security and able to evaluate the behavior of MELs during their executions and guarantee security and privacy;
- understanding how MELs behave with external interactions and adjusting them accordingly, releasing new versions and new configurations;
- understanding how to wire virtual networks among MELs, given security constraints.