Over the last few years, Internet of Things (IoT) has emerged as a cutting-edge technology aiming to solve the problems of a growing number of devices connected to the Internet and their requirements for simple services like authentication, data transmission/reception, communication with other devices, and so on.
These services can be implemented as single-function software applications (microservices), which are scalable, relatively independent though they can collaborate, and can be deployed in the Cloud. These software components are subject to permanent updates and require a fast and continuous delivery and integration, thus they can be developed as small and medium-sized projects, using DevOps (Development and Operations) project management methodology.
Frequent and concurrent access to microservices slows down the performance of Cloud-based applications, which led to the idea of deploying them in another Cloud intermediate structure, called Fog/Edge computing.
In this context, microservices are placed at this level, accessible through the Application Programming Interfaces (APIs), and are grouped into functional packages, called Containers.
In the following section, Literature Review, we focus on several of the current IoT approaches, technologies and models. The Methodology section will detail the above-mentioned concepts, focusing on the functions and ways of cooperating and integrating them into a three-layer IoT architecture. In the experimental part, we define a model for the business environment and we propose software implementations launched by IT companies, which can be used for deployment. The Conclusions section contains the final remarks regarding the significance of this new world of interconnected “things” and about the development pace, which will be at least as fast as the global Internet coverage.
2. Literature Review
The IoT research field is one which has not yet been clearly delimited, as it has many directions of impact (technology, living environment, social acceptance), and is in its early infancy, with rapid evolving trends and surprising day-to-day applications. The future will bring to attention many innovative solutions in this area.
The concept involves a wide range of possibilities in the business environment and means of improving the client usage experience. Smart cities, smart universities, smart devices, smart grids and energy management are several of the potential applications and services of the IoT. We don't currently have a generally accepted definition for the IoT concept, but there are a few available definitions of IoT as follows.
The Internet-of-Things has been defined in Recommendation ITU-T Y.2060 as a “global infrastructure for the information society, enabling advanced services by interconnecting (physical and virtual) things based on existing and evolving interoperable information and communication technologies” .
In the special report Internet of Things, 2014, IEEE referred to the Internet of Things as: “A network of items—each embedded with sensors—which are connected to the Internet” .
IoT is expected to adopt major improvements especially at the core level in the near future, being able to manage more end-points such as mobile, sensors, actuators etc. that will require an increased level of integration between “things” and applications.
As we have shown in a previous paper, microservices are essential to the development of IoT because they allow the development of modular applications, easy to modify and test, independently deployable and loosely-coupled services, intended to perform a single function . A tightly-coupled architecture, having too many dependencies, would require more time and technological efforts to implement and change applications, in comparison with the microservice-based architecture that should be independent and not be constrained to deliver updates in cascade .
These microservices can be built using the support of DevOps methodology, which is characterized by continuous deployment, integration, testing, and delivery of the product .
Both the microservice architecture and the DevOps project management methodology are accepted as philosophies for software development, and their implementation is not related to specific tools or languages. Each microservice is targeted at a distinct, specific function, and it is developed, tested, and deployed independently, having autonomy from other services, but communicating with them as processes through API gateways .
Microservices work better in containers that encapsulate a running environment, playing the role of host for development, testing and deployment in the same time, and offering scalability and portability. Containers running on the same host are isolated from each other and changing a service will not influence other services, given that the APIs are kept the same .
Although containers are not a new technology and have been used before by Unix and Linux, currently Docker is the best known open container management framework which offers all the features necessary for development and deployment of microservices. Docker containers are usually transient and disposable, but they are suitable for long-running operations, such as web servers or application servers.
Rafael Benevides from RedHat company points out the benefits of using containers :
• They run processes in any environment because they encapsulate the application with all its necessary components (operating system, libraries, configurations and folders);
• They are lightweight since they allocate the memory only for the main process.
• They have a fast start up (as fast as a typical Linux process).
According to Petacchi, the use of microservices architectures with containers has also drawbacks to consider :
• Software creators are required to build a complex distributed system;
• Testing process becomes more complicated;
• Application architects must develop the communication between services;
• The lack of distributed transactions makes the service management difficult;
• The coordination between team members must be tight, as multiple services form a challenging working environment.
This paper is based on the idea that IoT can empower the business environment and introduces a hierarchical model that combines a series of modern technologies, free and open software that can be leveraged by enterprises with minimum costs and optimum efficiency.
Research methodology should define the problem statement and answer a few questions which will lead to a viable IoT model. Many major software producers have already implemented this concept into their commercial offers for different industries, though the question is whether the business environment is ready for mass IoT adoption. In this regard, the implementation level depends on several factors, such as:
• Managers do not have an IT development strategy or enough knowledge about the Internet-of-Things;
• When the top management supports the deployment of this concept, the lack of financial support issue arises,
• Is there a way to fulfill the requirements of small and medium-sized enterprises (SMEs), or even big companies, with free software solutions?
Our paper aims to find answers to several research questions:
• which technologies can be used for supporting IoT?
• what are the benefits of IoT implementation?
• which are the steps that a company should go through to in order to join the IoT world?
Therefore, the objectives of this study are:
• Highlighting the advantages of microservice-based IoT implementations, and their development with DevOps methodology, for the business environment;
• Defining the above-mentioned concepts and identifying the existing technologies corresponding to their implementation,
• Offering some examples of successful software products available on the IT market in this area.
Microservices and containers in Fog/Edge computing
Microservices can be developed and best deployed in container-defined operating environments, as they offer hardware memory, storage, connectivity and security capabilities and portability across different environments. Also, containers allow the application of DevOps methodology for software development.
Because containers include all packages required to make available a service requested by smart devices, it is recommended to use them for any IoT device. The fact that a container is isolated from the OS and from other software applications offers increased security, including to DDoS (distributed denial-of-service) attacks on the infrastructure.
Unlike hypervisor virtualization, which allows for many operating systems running simultaneously on a hardware platform, containers share the same operating system and create an environment for running the application, isolated from other applications.
According to RedHat organization, a Linux container is “a set of processes that are isolated from the rest of the system, running from a distinct image that provides all files necessary to support the processes” .
The platform on which Linux containers (LXC) are deployed can be a server, located in the Cloud or in the Fog/Edge layer, while maintaining the structure and operating conditions.
There are two ways to implement Linux containers:
• the original Linux container technology – LXC, offering an OS-level virtualization technology that allows multiple isolated virtual environments on a single control host;
• Docker system, an extension and an improvement of LXC's capabilities, acting as a container engine, packaging the application and its dependencies in a virtual container running on a Linux server; Docker is recommended for microservices-based architectures.
Docker is a container system oriented for fast deployment of application environments. In order to leverage its power, one has to install it first – it comes already packaged for major Linux distributions. After installation (the command is specific to each distribution), the service must be started manually before use.
At the core of the Docker design philosophy there are two main concepts: the Containers and the Images. The image is built by manually defining the properties/commands required for the current running environment, including the download and configuration of specific apps. The next step is to actually build the container, and then generate the running script. Docker will execute this code and expose the application to the outside world on the indicated port. Containers can be started or stopped independently at any given time [10,11].
Docker engine can be a viable platform for Fog computing, an intermediate level of infrastructure that enables decentralizing Cloud computing services and reduces the response time by moving processing power closer to the “things”.
Figure 1 shows the Fog/Edge layer of an IoT model, based on microservices running in Docker containers, and on the paradigm of solution decentralization:
The Fog/Edge layer is the first line of processing data generated by the devices and is based on containerized applications (microservices) that are supported by Docker.
The Fog/Edge layer does not intend to be a replacement for the Cloud, as the requirements of the market involve also the processing of large quantities of data that calls for powerful Big Data platforms .
As the need for a common interface that distributed elements can access became obvious, the fog/edge layer was implemented in order to support their lifecycle. This way, devices communicate directly with the microservices that are deployed closer to them, and use API requests via standard HTTP channels, the advanced features like SSL communication, authentication and load balancing can be easily supported .
Applying DevOps for IoT development solutions
Developing an IoT project for a business involves modularity and focus on granular software solutions that implement device-required functions, integrated into a microservice-based architecture .
These software modules can be implemented in any language (C ++, Java, Python etc.), though they require quick and easy updating, testing, deployment and monitoring that do not impact on the activity of other components, leading to the idea of Agile design / redesign by using the DevOps paradigm.
According to Lewis and Fowler, microservices represent the method for “designing software applications as suites of independently deployable services” .
The development of microservices by applying DevOps methodology ensures the continuous integration and the rapid delivery of “things” functionalities whenever it is necessary.
There are several factors specific to testing and deployment of microservices using DevOps:
• IoT data impact in the management solution;
• operating conditions complexity;
• functionality of the new and older devices of the platform;
• ensuring the latest updates for all devices.
The key element of the testing process is the simulation of the device behaviour and creating the virtual environment that can be used for software testing. Simulation refers to interfaces, API accessibility and creating training and test datasets .
Internet of Things deployments, based on microservices, containers and DevOps are currently some of the most popular topics in the IT world.
The division of IoT applications into tens and hundreds of microservices that are communicating with each other and the need to update devices according to technological evolutions of the market lead to a great importance level offered to automate the process of building / rebuilding, testing and deploying software by using DevOps.
Adopting continuous integration and delivery for microservices development cycle (the DevOps features) increases implementation speed and brings these changes in production as quickly as possible. Also, by working in DevOps, design teams can add new microservices without affecting the entire application .
As a continuous integration tool, it is recommended to use Jenkins, an open source application written in Java, for testing and troubleshooting when using a larger, real-time code base. Jenkins is an automation server that can use pre-defined scenarios for building, testing and deploying software applications. It can be installed via the native OS packages, Docker containers or can be run independently on any machine that has a Java Runtime Environment installed. Jenkins can be run as a standalone application or as a standard web application from a Java servlet container such as Apache Tomcat or JBoss.
Jenkins applications can be downloaded as Docker images, each of them being deployed in Docker as a container. A Docker image for any given application (like Jenkins application), can be deployed on any supported operating system (MacOS, Linux and Windows) or cloud service (AWS and Azure) which is also running Docker .
4. Managing an IoT Application for Business
According to a Gartner report from 2015 , there will be 21 billion connected IoT devices by 2020, but the effect of this increase will be seen in the transformation of the digital market, if the business environment will know how to manage this technological challenge.
A company that intents to deploy and integrate IoT into its operations, needs to tackle two important issues:
• The internal communication between enterprise devices across the entire supply chain;
• The access of customers and collaborators to devices, in accordance with the company's connectivity and security policies.
The dynamics and the interest for IoT are present especially in the distribution and retail divisions, supported by production, warehousing and transport sectors within the same globalized company .
From the perspective of a company that carries out production, warehousing, transportation and retail activities, we consider that the suitable architecture implements the specific functions required by devices at the Fog / Edge level, and performs the analytical, forecasting and simulation processes in the Cloud.
An IoT model in a retail and distribution company
Figure 2 presents the three-level architecture proposed by the authors for developing and implementing an IoT model in a retail and distribution company that involves a multi-stores and multi-warehouses structure.
• At the first layer – Physical and Communication – are the physical objects connected in company stores, warehouses, transportation, that solve requests for connection/disconnection, authentication, sending/receiving information to/from the next level; the connectivity refers to the communicating with and between devices, reliable delivery of information across the network, implementation and translation of various protocols, security at the network level;
• The nodes based on Docker container engine are placed at the Fog/Edge level, providing the functions attached to “things” from the entire company network by using microservices;
• The third level - Cloud-based IoT platform - includes IoT's Big Data intelligent processing, consisting of analysis, filtering, and forecasting operations with business intelligence tools that lead to new information which underpin future decisions and management strategies.
Detailing the Fog/Edge level, we mention the several main directions for tracking IoT devices:
• Within the Company's smart stores, the entire shopping trips of customers will be analyzed and stored, so the merchants understand their future behavior. In addition, successive monitoring of the customer traffic will create the digital marketing based inside or outside the stores.
• Sensors and devices placed at warehouse level allow full-time monitoring of product stocks in real-time, and implicitly collaborate with stores to meet customers' shopping requests and online sales opportunities. The next level will be to directly check the stocks by the mobile devices of customers.
Transporting goods from delivery locations to warehouses and shops in an efficient way is one of the goals of intelligent transport applications in retail and distribution. IoT will optimize the transport by tracking the route in advance and avoiding possible impediments (weather, accidents, maintenance).
5. Results and Discussions
Big software companies offer a whole range of IoT solutions on the IT market, but we consider that the business environment is not yet ready to implement such platforms .
In order to evaluate the benefits of this type of application, a suitable alternative is the use of simulation software tools  such as:
• Azure IoT Device Simulation is a virtual environment aimed at testing the IoT elements and communication ways in complex scenarios, by avoiding the costly investment in dedicated hardware for rapid prototyping ;
• IoTify allows the users to deploy large installations of IoT, thus having lots of devices simulated with all their traffic, and this empowers the users to efficiently debug the projects before the project hits the market ;
• NetSim is another way to create various testing patterns, by defining large pools of nodes that interact in a convincing way over the virtual network ;
• IBM's Bluemix offers the IoT enthusiasts a sandbox to test their ideas and manage the infrastructure via a web-based interface and offers developers useful insight on how the apps behave in different use cases. There are functions for data processing and storage, and even social sites interaction ;
• iFogSim from CloudBus is aimed at the Fog layer devices behaviour simulation. These are the host for self-contained apps that concentrate data from child nodes and process it briefly .
Concerning the interest of Romanian and Greek companies in IoT, our studies revealed an increase of participation in European research projects on the Internet of Things and the development of partnerships and networking between the academic and business community through the development of IoT models.
Greece participates in 4 of the 7-approved research and development projects at pan-European level, drawing a total of € 3.36 million of Community co-financing, while total Community co-funding for research and development is € 51.5 million . In the past years, Greek companies have made some digital investments in their software and hardware stock but have not yet extensively adopted leading technologies like the Internet of Things, cloud computing and big data analytics .
In Romania an important project called “Ecosystem for Research, Innovation and Development of IoT Based Products and Services to Sustain an Interconnected Society”, started in 2017, project co-financed by the European Fond for Regional Development in the framework of the Operational Programme for Competitiveness 2014-2020, having the University Politehnica of Bucharest as a main contractor and subcontractors representing the business community interested in the development of innovative products and services in the IoT sphere and intelligent cities . The total project value is 15.901.500 lei (approximately € 3.4 million).
Another initiative that will foster the development of the IoT-centric society is the European Commission's project called Wifi4EU, which will offer more than 120 million euros for deployment of free WiFi hotspots in public places. These are intended to support future IT services like smart parking, inter-vehicle communication, smart grids and public utility management. This project is currently in the voucher-request phase, which will end on May 15, 2018 .
This paper aims to answer some questions related to the implementation of IoT in the business environment.
We have mentioned in the previous section how IoT devices placed at physical layer are to be integrated, the fact that they exchange information and take intelligent decisions through simple functions, implemented as microservices. We also demonstrated the need to insert a Fog/Edge layer, consisting of nodes placed closer to the “things” and accessed through API calls. In these nodes, we recommend installing the Docker container engine, in order to isolate the microservices running in containers from each other and to include all required components that allow them to function independently from the operating system.
Frequent service upgrades and the need for continuous development and integration have led to the utilization of the DevOps methodology for software applications, from physical level and evolving toward gateways and Fog devices as a unique method of developing and managing IoT systems.
Our proposal involves a 3-tier IoT model that integrates and creates a close relationship between all these new technologies in a retail and distribution company.
Even if not all managers are ready to step up to the Internet of Things, it is beneficial to their businesses and this can be proven with IoT simulators made available by software companies, some of them being free software tools.
By analyzing the state of IoT implementation in Greece and Romania, we noticed that the academic environment initiated collaboration with the business world through structural funds projects (financed by the EU), aiming to prove the viability and the advantages of this opportunity. This paper described briefly the emerging technologies of IoT, proposed the generic structure for an IoT model, and described possible future simulation applications and some projects in the domain. Our future work will focus on a comparative analysis of several simulation platforms; will select such a lab application and run tests and evaluate metrics to establish the advantages or drawbacks of its implementation in the business environment.