Professional Documents
Culture Documents
Nuwan - FYP
Nuwan - FYP
In Collaboration with
UNIVERSITY OF WESTMINSTER, UK
A dissertation by
Nuwan Jayawardene
Supervised by
Pumudu Fernando
May 2019
© The copyright for this project and all its associated products resides with
Informatics Institute of Technology
Declaration
Declaration
I hereby certify that this project report and all the artifacts associated with it is my own work and it has not
been submitted before nor is currently being submitted for any degree program.
Abstract
More and more "Smart Devices" are coming online every year. These Smart Devices have the ability to
communicate with other Smart Devices across the web, exchange information and make intelligent
decisions. This influx of new devices and connections has caused the central servers that manage those
Smart Devices to come under heavy load. Measures to combat this have inadvertently resulted in increased
network complexity.
This research considers a use-case where such complexity might arise, especially complexity derived from
networks with hierarchical device arrangements. It then points out why addressing that complexity is
necessary. The research thereafter considers several existing IoT products and how network complexity is
handled in them. Those existing products are studied in-depth after a selection based on pre-defined criteria
and their construction analyzed.
Based on the lessons learnt from those findings an approach is formalized to address how the complexity
can be handled in one component within a device network; the central cloud server. After considering the
all the necessary requirements, an architecture is proposed which is derived from the pre-defined approach.
An implementation is created using this architecture with some added functionality that is provided by it.
Supplementary implementations are also developed to complement this architecture and prove its
versatility.
The research concludes by testing and evaluating various aspects of the architectural implementation and
getting feedback on what can be improved. Finally, conclusions are drawn regarding the success of the
project and future development pathways are defined.
Acknowledgement
The journey made prior to arriving at the conclusion of this project was a long and arduous one. One that I
wouldn’t have been able to complete without the involvement of several key individuals.
First and foremost, I’d like to thank my project supervisor Mr. Pumudu Fernando. His guidance and
feedback were instrumental in helping me overcome many obstacles. I would also like to thank Mr. Cassim
Farook for providing valuable advice during various stages of the research.
My gratitude also goes to Mr. Sumedha Rubasinghe, for providing invaluable insight into various aspects
of this domain and motivating me when the challenges seemed insurmountable.
None of this would have been possible if it wasn’t for my parents. Their strength was what kept me going
during the most difficult times. It would be true to say that this is as much their achievement as it is mine.
Last but not least, a special mention of someone who shall not be named.
Not for gratitude, acclaim or approval; but for the acknowledgment of what was shared for the briefest of
periods.
I hope the simple truth of it shall not be lost to time, like tears in the rain.
Table of Contents
Declaration ............................................................................................................................................. ii
Abstract ................................................................................................................................................. iii
Acknowledgement ................................................................................................................................. iv
Table of Contents .................................................................................................................................... v
Table of Snippets .................................................................................................................................... x
Table of Figures ...................................................................................................................................... x
List of Tables ......................................................................................................................................... xi
Table of Abbreviations .......................................................................................................................... xii
1 Introduction .................................................................................................................................... 1
1.1 Chapter Overview .................................................................................................................... 1
1.2 Background ............................................................................................................................. 1
1.2.1 Edge Computing and the central Cloud Server ................................................................. 2
1.3 Problem and Motivation .......................................................................................................... 3
1.3.1 Problem ........................................................................................................................... 3
1.3.2 Motivation ....................................................................................................................... 3
1.4 Aim and Objectives ................................................................................................................. 4
1.4.1 Aim ................................................................................................................................. 4
1.4.2 Research Objectives ......................................................................................................... 4
1.5 Features of Prototype ............................................................................................................... 4
1.6 Outline of Thesis ..................................................................................................................... 5
1.7 Resource Requirements ........................................................................................................... 6
1.8 Chapter Summary .................................................................................................................... 7
2 Project Management ........................................................................................................................ 8
2.1 Chapter Overview .................................................................................................................... 8
2.2 Software Development Methodology ....................................................................................... 8
2.2.1 Waterfall Development Model ......................................................................................... 8
2.2.2 Rapid Application Development Model............................................................................ 8
2.2.3 Iterative Model ................................................................................................................ 9
2.2.4 Selection of a methodology .............................................................................................. 9
2.3 Work Breakdown Structure.....................................................................................................11
2.4 Gantt Chart .............................................................................................................................11
2.5 Project Risks...........................................................................................................................11
Table of Snippets
Snippet 6.1 - Enrollment Response is defined in the interface .................................................................62
Snippet 6.2 - Bean class including EnrollmentInfo metadata and Hierarchical metadata..........................63
Snippet 6.3 - DAO enrollment method declaration from interface...........................................................63
Snippet 6.4 - DAO enrollment method implementation ..........................................................................64
Snippet 6.5 - H2 SQL script used to create DB table for EnrollmentInfo ................................................65
Snippet 6.6 - JavaScript function used to gather user credentials .............................................................70
Snippet 6.7 - JavaScript function used to pass enrollment payload to server ............................................71
Table of Figures
List of Tables
Table 7.5 - Performance metrics of product with proposed Architecture on localhost ..............................78
Table 7.6 - Performance metrics of default product on remote server ......................................................80
Table 7.7 - Performance metrics of product with proposed Architecture on remote server .......................80
Table 7.8 - Performance metrics for running operations on 5000 devices ................................................82
Table 7.9 - Performance metrics for running operations on 15000 devices ..............................................82
Table 7.10 - Performance metrics for testing 10 concurrent users ...........................................................84
Table 7.11 - Performance metrics for testing 30 concurrent users ...........................................................85
Table 7.12 - Performance metrics for testing 60 concurrent users ...........................................................85
Table 8.1 - Average response times for phase 1 performance tests on localhost.......................................91
Table 8.2 - Average response times for phase 1 performance tests on remote server ...............................92
Table 8.3 - Average TPS for phase 2 performance tests on remote server ...............................................93
Table 8.4 - Average response time (ms) for reliability tests performed in remote server .........................94
Table of Abbreviations
1 Introduction
1.2 Background
More and more "Smart devices" are coming online every year. These Smart Devices have the ability to
communicate with other Smart Devices across the web, exchange information and make intelligent
decisions. More connected Smart devices mean larger streams of incoming data. This influx of new
connections has caused the services that manage those Smart devices to come under heavy load. To combat
this, measures have been taken to process the data as close to its origin as possible. Some of those measures
involve addition of certain "supervisor" devices to the network, in turn causing the networks to increase in
complexity. While advancements are being made in that front, the central servers (the cloud) managing the
entire fleet of devices has not been adequately updated to reflect those advancements. This document
describes the authors' proposal for an Architecture that would enable the cloud to understand complex
networks of devices connected to it.
Before the advent of the Technological Revolution, household items simply performed the tasks they were
built for. They were known as "dumb" things. Then a concept known as the "Internet of Things" (IoT) came
along which made it possible for any end user device to have Internet connectivity. This allowed devices
to connect to other devices and services for extended functionality (Rouse, 2016). Ever since the first
internet accessible Smartphones appeared in the mid-90s, connected devices have increased in complexity
and grown in intelligence (Allaire, 2009). This in turn has caused the networks they were connected to, to
grow in complexity as well.
In traditional IoT architectures, all data generated from connected devices are sent to the central server for
storage and further analysis. The added complexity from new devices that are connecting to the network
has caused additional load to be applied on the central servers orchestrating the communication between
those devices. A new concept known as "Edge Computing" aims to combat this. It refers to the
computational logic that is done close to or at the source of the generated data (Miller, 2018). Edge
Computing proposes that a certain amount of preprocessing be done at the edge without delegating
everything to the central server (Butler, 2017). Fog Computing (via Fog Networks) is one way in which
Edge Computing can be implemented.
The best way to understand how Edge Computing and the central cloud servers work in tandem is to study
a Smart City scenario (Zanella, et al., 2014). When taken in the urban context there are several instances
where authorities have decided to use connected devices to observe the state of public services. Some of
the notable situations among those being; Building Monitoring, Waste Management, Smart Parking and
Autonomous Driving (Hammi, et al., 2015). In the case of Building Monitoring, Smart Parking and
Autonomous Driving there can be instances where these services function simultaneously to provide better
value to residents. For example; an autonomous car can be instructed to travel to an apartment complex
with a building monitoring service. Upon arrival the car would connect to the apartment building’s central
monitoring service wirelessly. This monitoring service could be paired with others as in the case of several
apartment complexes in close vicinity, each with their own monitoring system. Finally, all the apartment
complexes can be monitored and maintained through a central server located offsite.
This Smart City example shows that there can be real-world instances where multiple layers of devices
(arranged in a sort of hierarchy) come together to form a complex Fog enabled IoT Network (Aazam &
Huh, 2014). Typically, Fog enabled IoT Networks are formed by Fog Nodes, small pockets of “mini-
networks” comprising of a main Edge Gateway to which child Edge Devices would be connected (Bonomi,
et al., 2012). In this instance, a Fog Node would be formed between a single apartment building’s central
monitoring service and the connected series of autonomous cars.
Good governance within a complex system is maintained by trust among its participants (Tragos, et al.,
2016). If not for this, participants would refrain from participating in the system, making the system a
failure. This applies for IoT Networks as well (Tragos, et al., 2016). In any IoT Network this governance is
upheld by several fundamental characteristics (Patel & Patel, 2016). Those characteristics include; Dynamic
nature, Heterogeneity, Safety, Connectivity etc. These characteristics combine together to create several
crucial umbrella factors such as;
• Security – The security risk of a network goes up significantly with the increase in the number of
devices and in turn, the network complexity (Jing, et al., 2014).
• Analytics – Knowledge of the devices within a network gives context to the type of data being
transferred. This further aids in functions such as Edge analytics (Alturki, et al., 2017).
• Diagnostics – Device actions within a network provide insight into what each of their functions
are. Device Management services are used in such instances (Perumal, et al., 2015).
It is by adhering to these factors that good governance within an IoT Network and by extension, its longevity
is maintained. In a complex IoT Network (such as in a Smart City) the weight of these factors is
compounded due to the sheer scale of the network as well as the larger number of participants. Therefore,
adhering to them becomes even more of a priority. The only way in which these factors can be adhered to
is by accounting for each and every Edge device and Edge Gateway within a particular network. Accounting
of devices within an IoT Network can be done by having the main supervisory service (i.e.; the central
cloud server) keep constant track of what devices under its influence are doing.
In order to do so, it is imperative that the central cloud server have a thorough understanding as to how the
devices under its influence are arranged.
1.3.1 Problem
Based on the Background exploration (section 1.2), it has been established that Edge Computing
(implemented through Fog Networks) aims to reduce the load on the central cloud. But on the flip-side as
more Fog Networks with different devices get added and network structures get more modularized, the
central cloud is left uninformed. Thus, more attention should be given to relationship between the Network
Edge and the cloud than each of those components individually.
As it stands right now, the problem with the current state of IoT is the lack of a method enabling the central
cloud to understand hierarchical Fog Networks/Devices connected to it.
As underlined above, the key point in the problem definition is “hierarchical Fog Networks/Devices”.
Multi-level Fog Networks are born when Edge Gateways are nested one under another while other devices
are also connected to them. This creates pockets of Fog Networks (also known as Cloudlets) that inevitably
increase network complexity.
1.3.2 Motivation
During the Degree required industrial placement the author was given the opportunity to work on an IoT
middleware product. It was during this placement where it was noted that in many industrial IoT use cases,
the customers requested some form of autonomy of its' Fog Networks. At the same time, they also wanted
the ability to view and manipulate the network from the central cloud.
Through this the author realized the importance of the cloud to always maintain an understanding of the
Fog Networks connected to it. This idea was further reinforced when a certain Smart City contractor had to
give up on a deployment as they couldn't find any product which gave them the needed feature.
With Fog Networks moving from Industrial IoT to more consumer-oriented areas such as Smart Home and
Home Automation via smart speakers/hubs such as Amazon Alexa, the need for a generalized solution was
increasing. Since such developments were taking place it was understood that a proper solution will aid the
entire IoT industry.
1.4.1 Aim
The authors' aim is to research, design and develop a generalized solution that would provide the central
cloud/server with an understanding of the hierarchies of Fog Networks/Devices connected to it.
1. To propose a generalized solution that satisfies identified properties – The solution should
be generalized so as to not contradict existing standards in IoT networks.
2. To research and develop the proposed architecture – This is done in order to check how
feasible different approaches are to implement the Architecture.
3. To perform additional implementations to simulate the Network Edge and platform
relationship. – Developments on other aspects (such as Edge Devices) of the network would
be required to show the full breadth of the Architecture.
4. To write a documented specification about the proposed Architecture. – The Architecture
is conceptual and product agnostic. Therefore, it should be well documented so that others can
understand it properly and if needed, integrate it into their own products
1. A deployable server: The author plans for the architecture to be implemented on a deployable
server. This would mean that the final prototype would be able to function similar to a web server
and run either locally and localhost or
2. Device enrollment capability: An Edge Device should be able “connect” with a server and
establish a relationship.
3. Ability to view enrolments: The server should display the list of enrolled devices along with the
associated device information.
4. Ability to show network related information: The final prototype should include some
functionality to aid the user in providing an easy-to-use way to understand the state of the network.
Accordingly, a very basic Rich Picture diagram shown below in Figure 1.1 has been created to showcase
the preliminary arrangement of the authors implementation.
It should be noted that the above rich picture diagram is supposed to be very basic and a more descriptive
diagram will be discussed in the forthcoming chapters (refer section 5.5). It should also be noted as
suggested from the above figure that the author hopes to maintain the scope of this project on changes made
and suggested to the central cloud server.
Chapter 2: Project Management This chapter elaborates on how different methodologies were
followed for various aspects of the project such as research
methodologies, software engineering etc.
Chapter 3: Literature Review A complete analysis of the research related to the domain that
is being studied by the author as well as an in-depth look into
existing solutions.
Chapter 4: System Requirement This chapter will focus on how the different requirements
Specification were gathered for the project and how the stakeholder were
identified. In addition, required UML diagrams will be used
to clarify aspects of the project.
Chapter 5: Design Specification Will focus on the using the information about gathered
requirements to design an Implementation
Chapter 6: Implementation Will solely focus on implementing the design elements
therefore it will be more technical oriented. Output would be
a functioning prototype
Chapter 7: Testing The prototype that has been thus developed would be tested
on different environment using a variety of testing strategies
Chapter 8: Evaluation The results obtained from the tests performed would be
analyzed and scrutinized qualitatively and quantitatively
Chapter 9: Conclusion The project will be concluded with the mentioning of lessons
learnt and future works
Git
To safely preserve the source code in a version control
system
Web Browser
To access and view the GUI components of the deployed
server
2 Project Management
Firstly, the development methodologies will be individually considered briefly relative to how their features
relate to the authors’ project. Thereafter the methodologies will be compared, and a suitable selection
performed based on the on with more merit.
When considering the author’s project something that stands out is the limited time frame. The waterfall
development model is best suited for projects that aren’t as constrained in this regard. Additionally, given
the its’ sequential nature of development, the requirements of the project should be set in stone prior to
starting actual development. This is not ideal for research-based projects as requirements are subjected to
change based on new findings.
means that the requirements are malleable as the client can request changes that can then be integrated into
the prototype. This is also more suited for projects were the initial requirements are very minimal.
In research-based projects such as the one the author is engaged in; the prototype is meant to complement
the project and prove that the proposed solution is functional and practical. In short; the project is not
centered around the prototype, but rather the prototype implementation is formed based on the discoveries
made during the research process. In such a scenario it seems that the Rapid Application Development
methodology falls short. Conversely, RAD encourages quick development cycles which is very valuable in
situations with limited time frames.
The Iterative model seems to take the best of both worlds or RAD and Waterfall methodologies. This means
that the prototype remains ready to a certain extent at any point during the project and that space is given
to new discoveries made during the research phase as well the learning curve required by new technologies.
For this authors project this would prove to be invaluable as there’s a high risk involved when working with
new technologies and the ideal methodology should be able to accommodate it. However, the Iterative
model also demands that the progress made with the implementation have a clear vision and path as
retconning can be costly and time consuming.
Pros Cons
• The Waterfall methodology was proven to be inefficient due to long development cycles and the
generally favoring projects with extended development periods. However, the Waterfall
methodology did receive attention for its clear-cut development flow.
• The Waterfall model does not place much attention on user feedback until the latter parts of the
flow. This can become prove to be difficult to for a research project as new suggestions from
stakeholders could come in at any point during the process.
• The RAD model was abandoned due to the fact that it relied too much on stakeholder feedback and
was more prototype centric than what was required.
• The Iterative model provided the right mix of Waterfall and RAD such that it enables quick
development cycles and a faster path to an MVP as well a clear-cut flow to the development work.
• The Iterative model also caters well to established requirements being updated to accommodate
new discoveries in the research.
Accordingly, it was realized that the Iterative model was most suitable for the authors’ project.
A Gantt chart for the authors’ project was created as well due to the same reasons. It can be found at
Appendix – Gantt Chart.
3 Literature Review
The literature review will further explore and investigate existing research on these topics as well as IoT
architectures that combine all of them together.
Prior to discussing research of existing architectures, the various components terminology associated with
an IoT network and the different software stacks of the three IoT tiers will be explored. This will allow for
additional understanding of what those layers are comprised of as well as deconstructing what needs to be
adjusted in them to accommodate a proposed architecture. Those stacks will be understood using the scope
of a generic IoT architecture.
Similar to a regular Client-Server network, traditional IoT architectures have many devices connected to a
central server. In IoT nomenclature those client devices are known as "edge devices". The basic structure
is pretty straight forward and easily understandable. Due to the similarities with CSAs (Client-Server
Architectures), traditional IoT architectures do not require heavy customizations. Hence the reason why
they are easier to implement.
As indicated by Figure 3.2, the Fog enabled network contains significantly more devices. As discussed
previously; when the number of devices in a network increases, so does the network complexity (Milito, et
al., 2014).
This generic high-level architecture has been proposed as a radical rethinking of the age-old TCP/IP
technology. While at its' roots it is the same as the old system, it has been arranged at a high level to bridge
the new and the old to create a better foundation overall (Khan, et al., 2012).
Since this research is on Architectures based on Fog networks, that is where the main focus will be on. The
basic deconstruction of a Fog enabled network is indicated in the figure located in Appendix – Layers of a
Fog enabled IoT Network.
Individual layers can now be broken down starting from the bottom layer and making way to the top.
While a traditional IoT networks contains only three layers; the Perception layer, Network layer and
Application layer, a Fog enabled network contains an extra two. Those are the Business and Network layers
(Aazam & Huh, 2014). The reasons for the addition of the two new layers will be explored as the chapter
progresses.
1. Perception Layer - This is the layer closest to the network Edge. For this reason, it can also be
called the Device layer. As suggested by the name; its' primary purpose is to perceive the
environment via Edge Devices (Aazam & Huh, 2014).
As indicated by Figure 3.3 it could be said that this layer is the one with the most diverse
components. The devices inhabiting the Perception layer could range from mere sensors to ultra-
powerful Smartphones. In most cases the data sourced from devices in the Perception layer is raw
and un-processed. This layer also includes the various discoverability options for the devices. These
include location-based discovery using methods like geo-fencing and other forms such as RFID
sensors and QR codes (Khan, et al., 2012).
This collected data is then forwarded to the Network layer for further transmission.
2. Network Layer - The data sourced from the Perception layer is received by the Network layer.
This layer could also be referred to as the Transmission layer as well since it acts as the glue
between the lower level and the higher middleware level. The functionality of the Network layer is
equivalent to that of the Network and Transport layers in the OSI model (Aazam & Huh, 2014).
This layer is composed of two main components; Transmission Media and Network Devices.
Transmission Media can be further subdivided into wired and wireless(3G, Wi-Fi, Bluetooth,
ZigBee etc.) as indicated in Figure 3.4. The actual transmission medium depends mainly on the
kinds of devices the specific Network layer is interacting with in the Perception layer, as sensors
and other Edge devices have varying technologies (Khan, et al., 2012).
Network Devices are the actual devices facilitating the function of the Network layer. The feature
that makes the Network layer unique to Fog enabled architectures lies here. Edge Gateways are the
supervisory devices that act as middlemen in Fog enabled networks. They directly interface with
both the Network layer as well as Middleware layer, policing and monitoring the data being passed
between the two. Sometimes Edge Gateways come with integrated network management and
information processing features.
It should be noted that similar to traditional IoT architectures in some instances, Fog enabled
networks also ignore the Network layer and connects the Perception layer directly to the
Middleware layer.
3. Middleware Layer - The Middleware layer is the ultimate governor of the entire network. It
receives the partially processed or raw data pushed forward by the lower Network or Perception
layers. As indicated by Figure 3.5; the functions of the Middleware layer include (Aazam & Huh,
2014);
a. Service Management
b. Storage of data
c. Information Processing
Service Management includes the entire suite of subsystems used for managing Devices as well
users in the network. This function is responsible for upholding the required permission levels and
restricting or allowing access to certain operations.
Storage includes having databases for any and all user allowed data that passes through the network
and storing them safely. This stored data can be exposed for internal or external use via the Service
Management function.
Information Processing is the most important function performed by Middleware Layer. As the
central hub where the majority of information passes through, it is the task of the Middleware layer
to decipher and understand that flow. Doing so allows higher level decisions to be taken by the
system administrators upon viewing analytics.
4. Application Layer - Once the data has been retrieved, stored, deciphered and processed it needs
to be presented in a meaningful manner. That is the function of the Application Layer.
The actual human interaction with the central server takes place via this layer. The Application
layer obtains the information from the Middleware layer and presents it using GUI or other means
for ease of understanding. In more generic terms, the Applications layer mainly consists of UI
components such as dashboards for displaying all the data generated within the network.
As indicated by Figure 3.6, the Application layer could also be further expanded to broader “Use
Case” scenarios such as Smart City, Intelligent Transportation infrastructure, Smart Home etc.
(Aazam & Huh, 2014)
5. Business Layer - Unlike the other layers, the Business layer does not directly deal with any data
generated from the network. It in fact does not deal with data at all. The Business layer is a recent
introduction to the field of IoT
It is an indisputable fact that in the modern world "Data is the fuel we use to make decisions"
(Olson, 2003). Organizations who have gathered vast amounts of data have identified this and are
working to monetize the information generated from that data. The Business layers further enables
to intercept information generated from the Application layer and create additional services which
can directly impact the business model of an organization (Khan, et al., 2012). In summary, the job
of the Business layer is to make money for the organization by using its existing IoT infrastructure
and the data gathered via that infrastructure.
While the Business Layer is a valuable addition to the field of IoT, for the purposes of this research it will
be ignored as it is of no relevance to the topic.
In Summation; the Edge Device and Edge Gateway tiers are maintained by the Perception and Network
layers respectively, while the central cloud is the combination of the Middleware and Application layers.
As the Fog enabled architecture has now been explored functionality-wise for each tier, the author will now
attempt to deconstruct the Software stacks of each tier individually.
Typically, in Computer Science and Software Engineering, a "stack" refers to a group of programs that
work together to achieve a common goal. More often than not, each layer in a stack has a designated
function. Upon completion of this function the handled data is passed onto the next layer of the stack for
further operations. Stacks are found in many diverse areas within the field including but not limited to Web
Development, Operating Systems and Networking. A notable example is the OSI model that functions as
the backbone of the entire internet infrastructure.
The reason that stacking architectures are more common is because of the benefits it provides. Those
include;
• Leanness - Ability to achieve the required goal with minimum software overhead. This results in
high performant systems.
• Modularity - With jobs designated according to stacks it is very easy to mix and match based on
needs.
• Configurability - Along with modularity comes the ability to easily configure the system to run
on any environment.
The above benefits indicate that software stacks would be ideal when it comes to performance heavy
environments. This is especially true for distributed systems running on middleware platforms. By having
software stacks in scenarios where aspects like Atomicity, Synchronicity and Availability are crucial;
highly responsive systems that require low maintenance can be created (Astley, et al., 2001).
In IoT, software stacks are implemented in the three architectural tiers. As discussed in the generic
architecture, each tier can be deconstructed into layers that have its own unique set of duties that need to
be fulfilled. Each stack is specialized in achieving those assigned duties. Exploring the nature of these
stacks will aid in understanding how each participant in the network contributes to the whole and how each
duty is achieved in a practical manner.
The stacks will be discussed starting from the lower level of the architecture with Edge Devices followed
by Edge Gateways and finally the central cloud.
Some can be extremely powerful capable devices while others can be very constrained in terms of resources.
Some can be mobile while others are geographically fixed.
The most common Edge Device that almost everyone interacts with on a daily basis is the Smartphone.
Despite the wide variety in devices, the general software stack remains the same. But there are certain
details that are often taken into consideration when developing software stacks for Edge Devices. Those
include;
1. Constrained Resources - When developing software for many devices the rule-of-thumb is to
consider the lowest common denominator. In the case of Edge Devices those happen to be Sensors
and other embedded MCUs. Since these types of hardware have very limited resources(processing
power, memory) the software has to be fine-tuned to be as lenient as possible.
2. Limited Power - While there are devices that have a continuous source of energy many Edge
Devices happen to be mobile. Which means they rely on battery power. Hence it is of utmost
importance for the software not to abuse this limited energy.
By looking at the above conditions it can be understood that software stacks in Edge Devices should be as
efficient and lightweight as possible. They are also designed from the beginning to be specialized for a
specific task and be easy to mass produce at low cost (Eclipse Foundation, 2017).
Figure 3.7 - Software stack for Edge Devices (Eclipse Foundation, 2017)
As depicted in Figure 3.7; the layers in the Edge Device stack are as follows;
1. Operating System - Often this is an extremely bare bones system. These OSs are most suited for
small constrained devices with a very limited number of functions (Eclipse Foundation, 2017).
Linux is often an OS of choice on such hardware. At the same time, Edge Devices like Smartphones
have fully-fledged OSs like Android since they have more powerful hardware. In recent years,
manufacturers have taken an interest in retrofitting Smartphone OSs to work on constrained
devices. Such examples are Google's Android Things and Microsoft's Azure Sphere.
2. Hardware Abstraction - While the Operating System takes care of lower level functions such as
memory management and services, a HAL (Hardware Abstraction Layer) exists to manage I/O
related functions. Ports such as GPIO ports and serial interfaces are managed by the Hardware
Abstraction layer (Eclipse Foundation, 2017).
3. Communication Support - Edge Devices have many forms of communication. Multiple drivers,
protocols and technologies coexist in each device. Among the many forms of communication are
Bluetooth, Z-wave, Wi-Fi, HTTP, MQTT etc. (Eclipse Foundation, 2017). There may even be
wired media such as Ethernet. All those modes are managed by this stack.
4. Remote Management - Alongside all the other stacks lies a Remote Management agent monitoring
and manipulating the behaviors of the device. It can lookup factors such as the firmware version or
even the battery level if needed (Eclipse Foundation, 2017). In some devices this is built into the
OS itself.
Recalling back to the Perception layer in the high-level architecture, its' the author's belief that this aspect
could be integrated into the HAL stack(as all sensory accessories are I/O to the device). It could even be
delegated to a separate sub-stack, but that would go against the "lean" ethos when developing software for
constrained devices.
Edge Gateways bring the power of the cloud closer to the Edge of the network. While not having the entire
feature set of the central cloud, they perform an integral role in coordinating the connectivity of lower level
devices and with the central cloud. Even though these devices have more supervisory role in the network,
from the perspective of the server they are also an Edge Device albeit one with more privileges. Edge
Gateways also share many similarities with typical Edge Devices.
An Edge Gateway can take many forms. Some can be implemented strictly using software(such as a proxy
server) while others can be hardware-based devices. These hardware-based devices are often referred to as
Field Gateways as they are deployed in the actual geographic location. It is these Field Gateway type that
will be used in this research.
Much like Edge Devices, Edge Gateways can also be mobile or stationary. Stationary Gateways are used
in Industrial IoT use cases. They sometimes even mesh together with each other to perform elaborately
choreographed actions using the Edge Devices connected to them (Eclipse Foundation, 2017). Edge
Gateways can also be mobile.
Smart cars that have been extremely popular among consumers nowadays are essentially Edge Gateways
on wheels. They have a plethora of sensors constantly taking in its' environment which is ever changing. In
situations like Autonomous driving, high response time is crucial. Therefore, the built in ECU (which is
vastly more powerful than a regular car) takes real-time decisions regarding the cars' performance while
simultaneously updating the central cloud.
Where Edge Gateways and Edge Devices differ drastically is from their software. Edge Gateway stacks are
much denser and more complicated than Edge Devices. Edge Gateway software stacks are designed to
support localized storage, fast networking and some rudimentary Edge analytics.
Figure 3.8 - Software stack for Edge Gateways (Eclipse Foundation, 2017)
As depicted in Figure 3.8; the layers in the Edge Gateway stack are as follows;
1. Operating System - Similar to Edge Devices, this is often a very stripped-down OS running on
Edge Gateways. Linux is the system of choice mainly due to the stability it offers (Eclipse
Foundation, 2017). Some OEMs provide their own custom Gateway OS that works seamlessly with
their own cloud offering. There are even instances when OEMs open source their gateway code to
further accelerate adoption.
2. Application Runtime - Unlike regular Edge Devices, Edge Gateways have more resources to
spare. They also don't have the same constraints such as Power usage either. Hence user made
applications can be run on them. Normally, lightweight runtimes such as JVMs or Node are
perfectly suited for such environments (Eclipse Foundation, 2017). Depending whether the
Gateway itself is intended to be run headless, the applications along with the OS itself can be
designed with or without a GUI. By enabling applications to run on Edge Gateways, functionality
that is not natively present could be implemented. Examples for such functionality include Edge
Analytics via embedded stream processors.
3. Communication and Connectivity - Since the primary role of Edge Gateways is to interface with
Edge Devices, it should have the necessary tools to accomplish that task. One of those tools is
protocols. In order to effectively communicate with each of its' child devices, Edge Gateways need
to support a variety of different protocols such as Bluetooth, Bluetooth LE, Wi-Fi, Wi-Fi Direct,
ZigBee etc. (Eclipse Foundation, 2017). They also should support a variety of different networking
options such as Ethernet or Cellular.
4. Data Management and Messaging – By design, Edge Gateways must have some form of
autonomy from the central cloud. To achieve this, Gateways often have localized storage and
caching mechanisms to persist a certain amount of data. Having data stored locally allows for
reduce network latency as well as real-time Edge Analytics (Eclipse Foundation, 2017).
5. Remote Management - Similar to regular Edge Devices, Edge Gateways also include a Remote
Management agent to keep tabs on aspects of the device. This agent can be used to update firmware,
add new features, provision new roles to the Gateway and sometimes even to activate/deactivate
entire Fogs in the network altogether.
If the closest biological analogy to an IoT network was the central nervous system, then the central cloud
would indefinitely be the brain. This would mean that the central cloud remains aware of every single
operation taking place within the network.
Recalling what was previously discussed, the Middleware and Application layers in the High-level IoT
architecture perform many functions related to network governance. The central cloud is the real-world,
practical implementation of those layers. Therefore, the software stack in the central cloud is required to
perform all the theoretical functions dictated by the Middleware and Application layers of the High-level
architecture.
As such, the central cloud includes the complete infrastructure required to maintain a complex IoT device
network. Aspects of such an infrastructure are;
• Device Management
• User Management
• Application Management
• Service Management
Cloud Platforms can be developed atop a variety of different runtimes like JVM and Node. In such cases
the majority of the core logic would be written in the respective languages but given the complexity and
the large number of components in the central cloud, in reality many other technologies come into play.
An IoT Cloud Platform is intended to be run on specialized cloud infrastructure (Eclipse Foundation, 2017).
This can either be done on premise or deployed remotely. Some companies (OpenShift, AWS, Microsoft
Azure, Cloud Foundry etc.) provide PaaS features by hosting their proprietary cloud products on their own
servers and giving access to consumers for a fee. This makes certain aspects such as resiliency and fault
tolerance come in as standard, so consumers won't have to worry about it.
In this manner it could be seen that central cloud platforms could be deployed in a multitude of different
ways depending on different use cases and requirements.
Figure 3.9 - Software stack for Central Cloud (Eclipse Foundation, 2017)
As depicted in Figure 3.9; the layers in the Central Cloud stack are as follows;
1. Connectivity and Message Routing - IoT Cloud platforms should be able to communicate with a
large number of Edge Devices and Edge Gateways using different data formats and multiple
protocols (Eclipse Foundation, 2017). Additionally, cross stack communication should also be
possible. While the Connectivity stack will be in charge of the handling communications with
external devices, the Message Routing stack will be managing cross stack data exchanges. In most
cases a Messaging Bus will be used in such an instance.
2. Device Management and Device Registry - With so many devices getting connected to the central
cloud there should be a means by which all those connections can be tabulated. This is where the
Device Management and Registry stacks come into play. The Device Management stack is in
charge of maintaining the enrolled devices while the Device Registry stack maintains a central
registry of the exchanges between devices as well as exchanges with the server (Eclipse
Foundation, 2017). The Device Management stack often taps the resources from the Device
Registry to perform its' tasks.
3. Data Management and Storage - In any Cloud platform there's a vast amount of auxiliary data
accompanying the Device data. This data includes User data, Session data, Tenancy related data
and more. While the Device Management and Registry stacks are specialized to deal with Device
related data, the Data Management and Storage stacks deal with all other auxiliary data.
While in this Cloud platform stacked layout the Device Management stack exists below the Data
Management and Storage stacks, it is the authors' belief that it should be in reverse. That is; the
Data Management and Storage stacks should exist below the Device Management stack. The
Device Registry's location is unchanged. By arranging the layout in this manner, the functions can
be further modularized. So, for any persistent data retrieval or storage jobs the Device Management
stack will first communicate with the Data Management stack which will then perform the required
function on the Device Registry.
4. Event Management, Analytics and UI - Even with Edge Analytics running on Edge Gateways
almost all of data from the entire IoT network eventually makes it way to the central cloud. With
so much of data passing through the central cloud, steps should be taken to perform "data mining"
to better understand what that data represents. This is where the Event Management and Analytics
stack comes in. It is used for scalable event processing as well as to consolidate and analyze data
(Eclipse Foundation, 2017). Often in cases such as this, a stream processor is used for real time
data analysis. Furthermore, the best way for users to understand that analysis is through pictorial
representations. The Application layer that was discussed in the High-level architecture achieves
this in a theoretical sense. It is implemented using a UI sub-stack. The UI could also be delegated
to a separate stack if the need arises.
5. Application Enablement - In today's connected world, SOAs (Service Oriented Architectures) are
proliferating in almost every field imaginable. Organizations are working hard to expose their
services and their infrastructure for external consumption. Some are even undergoing massive
cultural changes to accommodate this shift. A popular example is Amazon with their AWS
platform. The Application Enablement stack helps in this aspect. It enables services and data within
the architecture to be exposed in a safe and scalable manner to external and internal consumers.
Furthermore, as discussed in the Business layer in the High-level architecture, once these services
have been exposed the organization can monetize them. Not only would this aid in the adoption of
the services more widely, it would also bring in more revenue and additional value to the services
provided.
The High-level architecture provided a theoretical view of the functions of each tier in the IoT network.
The IoT architectural stacks in the succeeding chapter deconstructed those functionalities further and
implemented them in a practical form. This deconstruction and understanding of functionalities at their
basic levels provided an in-depth view of how an IoT architecture is organized. Creating a product
combining the IoT layers and stacks in different configurations could be termed as an "IoT implementation".
With the current knowledge in hand, it is possible to now look at existing IoT implementations and review
them. As this research focuses primarily on the IoT Cloud platforms(central cloud) and its' association with
Edge Gateways, that is the area of these IoT implementations that will be studied in depth.
The author has identified three notable factors to consider when choosing current implementations for
reviewing purposes. Those factors and the reason for taking them into account are as follows;
1. Edge Gateway support - This is a crucial requirement when choosing an IoT implementation for
this research. The reason for this being that the author's research is based on proposing changes to
the existing cloud infrastructures that support Fog Networks. As discussed in the previous sections,
Edge Gateways are what makes Fog Networks possible.
2. Open Source - In order to effectively review the makeup of the IoT cloud platform and it's devices
peering into the code is needed. This is only made possible if the project is Open Source.
3. Transparent IoT Architecture - In keeping with the primary purpose of this research, the Cloud
platform architecture should be clear. Only then can its' structure be reviewed in an effective
manner.
As with most distributed systems, there are several products which have varying degrees of the above
factors. To further diversify the research the author has picked implementations with a mix out of those
different factors. The factor distribution and the respective implementation/product is as follows.
Edge Gateway support Open Source Transparent IoT Architecture Selected product
Eclipse Kapua
Each implementation can now be considered individually and reviewed briefly by considering the pros and
cons of each. The central cloud architecture and the Edge Gateway relationship with the cloud is what will
be put under the spotlight.
• Security - Having security and privacy measures across all tiers of the IoT architecture.
• Heterogeneity - The architecture must accommodate a variety of different use cases with a vast
number of environments, devices and standards.
• Scalability - Services that scale; starting with a small number of device situations like POCs and
then expanding as the demand increases.
• Flexibility - Services being built as easily composable blocks that can be mixed and matched
according to the situation
Furthermore, communication across subsystems take place over REST/HTTP using human readable data
formats such as JSON. The architecture is built to support Edge Compute strategies with some processing
expected to happen on the cloud itself. (Microsoft Corporation, 2018).
A high-level view of how the different IoT network tiers are arranged in Azure IoT is shown in Figure 3.10;
Figure 3.10 - How IoT architectural tiers are arranged in Azure IoT (Microsoft Corporation, 2018)
According to Azure IoT documentation, there are three different types of Field Gateways that connect other
Edge Devices to the central cloud (Gremban, et al., 2017). Those are namely;
• Transparent - The Gateway simply passes communications between the devices and the Azure
IoT cloud. That is, downstream Edge Devices have no awareness that they are interacting with an
intermediary Edge Gateway (Gremban, et al., 2017).
• Protocol translation - Sometimes, devices do not support the commonly used protocols such as
MQTT and HTTP. In those cases, a gateway is used to interpret and understand what those
downstream devices are communicating. In situations like this, the Azure IoT cloud only sees the
data as coming directly from the Edge Gateway device (Gremban, et al., 2017). It is not made aware
of the downstream devices.
• Identity translation - Devices that are unable to create and maintain a consistent connections with
Azure IoT cloud connect to Edge Gateways on its behalf. Downstream devices are seen by the
Azure IoT cloud as first-class devices with twins and methods (Gremban, et al., 2017). The
downstream Edge Devices and their users are unaware of the Edge Gateway acting as an
intermediary as all the features of the cloud are available to them.
Of these three types of Edge Gateway configurations, the Protocol translation configuration is the only one
that hides the identities of the downstream devices to the Azure IoT hub. In the other two(Transparent and
Identity translation) the Azure cloud has total awareness of the Edge Gateway as well as the downstream
devices connected to it, albeit in both instances the downstream devices themselves are unaware of the
intermediary Edge Gateway.
As only some partial parts of Azure IoTs' Edge Device and Edge Gateway agents are open source it is not
possible to get a complete view as to how interactions between devices take place beyond what is dictated
in the documentation.
In relation to the authors' research, the Azure IoT Cloud has device models that include the following;
• A schema to maintain device metadata (Microsoft Corporation, 2018). Metadata is data regarding
a certain component in a network that is not essential to the devices primary functions but crucial
in understanding the devices' identity in the network.
Such metadata include; device type, make, model, serial number etc.
• Device topology data, such as relationships between devices and other services. Often these
topologies follow a domain model.
As such, in a building management system the domain model includes entities such as building
complex, building, floor, room etc.
To combat the complexity that comes with such a domain model either a hierarchical structure or graph
topology is used (Microsoft Corporation, 2018). In most cases such a topology is maintained within the
Device Management stack. The schema will be maintained within the Device Registry stack.
This allows other authorized stacks to securely access this data and while data is kept safe from tampering.
Since the entire Azure IoT cloud architecture is closed source it is not possible to get a full view as to how
the data is arranged within it beyond what is explained in the documentation. This can be cited as a research
limitation.
The different Edge Gateway configuration is one notable point that is unique to this IoT implementation. It
not only addresses different types of requirements but also the wide variety of devices that could be
encountered in an IoT network. Although this could lead to some confusion when implementing the
network in real life. As in, there exists some redundancy with each type of configuration. For example; the
Identity translation configuration also supports protocol translation similar to Transparent configuration
while at the same time having additional features such as Identity to downstream devices. In the authors'
eyes, this might cause conflict in some instances. The context-based domain model in the central cloud is
also a noteworthy feature.
Based on the initial impressions it can be seen that the Azure IoT stack is very feature packed. While for
most use-cases it could prove to be enough, for the purposes of this research there are some significant
drawbacks that should be mentioned.
• The black-boxed nature of the Azure IoT architecture is a major drawback. Given Microsoft’s
history as mainly a proprietary and closed source software developer it has followed the same
philosophy into its cloud offering. While it does indeed have open source components such as the
Azure IoT Edge (Ramel, 2018), it is very tightly bound with their own cloud services to such an
extent where the open source nature feels more like an afterthought. This leads to the next
drawback…
• Vendor lock-in is legitimate concern when it comes to closed source vendors like Microsoft. They
maintain quite stringent limitations on which technologies are used and how the products operate.
Due to the above reasons the author has concluded that Azure IoT is not a viable implementation to use in
this research.
Mozilla describes their mission as "…to ensure the Internet is a global public resource, open and accessible
to all. An Internet that truly puts people first, where individuals can shape their own experience and are
empowered, safe and independent." In keeping with this philosophy, they have made the decision to use
existing web technologies such as REST, HTTP, JSON and Web Sockets to build their architecture
(Francis, 2017).
Mozilla has identified three integration patterns when it comes to current IoT networks. They are;
1. Direct Integration - This is the simplest form of integration that allows an Edge Device to directly
connect with Mozilla's Web of Things API. Mozilla acknowledges that this type of integration is
not suited for a home network as it could expose Edge Devices to direct threats from the Internet.
2. Gateway Integration - The Edge Gateway itself runs an HTTP server that bridges Edge Devices
connected to it to the web.
3. Cloud Integration - This is similar to an Edge Gateway, only the Edge Gateway is not existing as
physical hardware. Here, the Web of Things API is exposed by a separate Cloud Server which acts
as
By studying these three integration patterns Mozilla has come up with their own framework titled "Project
Things" to help developers connect Edge Devices.
Mozilla has taken inspiration from the Gateway Integration pattern and developed their own Edge Gateway
solution. The entire Project Things endeavor has three components. Those are;
• Things Gateway
• Things Cloud
• Things Framework
As Project Things is still under development, a majority of documentation as well as the implementation is
still a work in progress and being continuously iterated by the developer community.
Despite this some aspects can be assumed. One such detail is how gateways get registered with the Things
Cloud. This can be obtained via a REST API specification included in one of the Mozilla IoT GitHub
repositories.
By studying it, the following information can be gained;
Since the server has no front-end interface, nor an active development community it has become
challenging to gather more information regarding it. This can be cited as a research limitation.
• Custom Capabilities for Edge Gateways - This allows unrestricted access to custom Web Thing
Types (Francis, 2018). Through this, developers have the freedom and flexibility to add support for
a variety of different devices beyond the pre-defined set.
• Actions and Events with logs
• Powerful Rule engine - A GUI based rule engine that allows users to compose complex sequences
of conditional operations based on inputs from downstream devices.
• Smart Assistant integration - An interactive "Assistant" that consumes basic voice or textual
commands to manipulate downstream devices.
By studying the above, it becomes apparent that Mozilla's Things Gateway stands out among other
implementations.
What makes Things Gateway even more intriguing is how it has been designed from an architectural
standpoint. When discussing the Edge Gateway stack, it was understood that the system included a remote
management agent that allowed the gateway's functions to be manipulated externally. It was also understood
in the High-level architecture that the gateway associated Network Layer has its role designed specifically
to transfer data from the lower Perception Layer to the higher Middleware Layer. What makes Things
Gateway unique in this regard is that in Mozilla's implementation acts as an Edge Gateway and a server.
This becomes apparent when the Open Source Things Gateway code is studied as shown in the code snippet
located in Appendix – Server deployment code in Mozilla Web of Things Gateway.
Things Gateway consists of an image that can be flashed onto a development board such as Raspberry Pi.
Upon activation the device deploys a NodeJS server with that can be accessed through the local network.
The newly activated Things Gateway can thus be configured and even assigned a custom sub domain under
mozilla-iot.org (Francis, 2018).
Mozilla has also paid special attention to how Edge Devices in its' IoT implementation are created. Unlike
other vendors who have their own Agents for different platforms, Mozilla's "Things" (as its' Edge Devices
are known) rely on libraries supporting a variety of different languages. Most of these languages have been
proven popular in IoT use cases and include JavaScript (on NodeJS runtime), Python, Java and Rust. By
having libraries instead of straight forward agents increases the likelihood that developers will take up the
platform and start experimenting with it.
The Things Gateway is a main point of interest. Mozilla's implementation considers Edge Gateways as
primary participants in the whole infrastructure and not an auxiliary device. By effectively bringing the
functionality of an entire server to the Edge Gateway they have effectively combined the Network Layer
and the Middleware Layer in the earlier discussed High-level architecture. This has both its pros as well as
its cons.
On the upside this makes setting up and maintaining Edge Gateways a lot easier. Since the network structure
is very straight forward, hackers can easily go about porting and extending the Gateways functionalities
and platform presence/support. This further aids Mozilla's goals of standardizing the IoT field into a more
interoperable and open space. Plus, since Things Gateways does not rely on a complex server stack on the
cloud end to function, in the rare(but quite possible) case of a cloud outage it could easily maintain
autonomy.
On the downside lies the hardware constraints. Even though Edge Gateways have more resources than Edge
Devices, they still are severely under powered when compared to a cloud server. If unaddressed, this could
become a massive bottleneck that would impact performance intensive tasks such as Edge Analytics. Since
Edge Analytics is one of the primary objectives of an Edge Gateway, in Mozilla's implementation this could
prove to be a problem.
Additionally, scalability can also be affected. Regardless of the number of protocols and technologies, there
are only so many devices that a single Edge Gateway can maintain. This combined with the already
constrained resources can have a drastic impact of overall network performance.
The approach to have Edge Devices be implemented using libraries is also very noteworthy. These re-
usable components make it easier for developers to write clients on all forms of devices that can connect
with Mozilla's "Web Thing API". This kind of implementation meshes well with the entire ethos of Project
Things being an effort to standardize IoT to be more open and community based.
Given the amount of capability given to the Things Gateway component already in the Author's view it
could be very precarious to identify and address what functionality should be delegated to the Things Cloud.
Given the vagueness and lack of documentation of the latter, it could be said that Mozilla is focusing more
on creating an Edge Gateway based IoT network than a cloud centric one. The same sentiment is reflected
from the developers of the project as well.
Mozilla Web Things was one of the more interesting IoT implementations that was studied during this
research. While quite novel in nature, it did have drawbacks that didn’t allow it from being eligible for
further development.
• The unique Gateway centric nature of the implementation is both a positive as well as a negative.
Since the author’s research is based primarily on changes associated with central cloud this is a
major drawback.
• The current state of the project is also another cause of concern. Given the novel nature of the
existing product along with rapidly changing features (with old ones being deprecated and new
ones being added constantly) it is extremely difficult to gauge what kind of path the implementation
will go in. This changing of features can be noticed especially in areas such as exposed APIs. With
each new software version release the API formats as well as exposed functionality changes. In a
more mature implementation while updates would be unavoidable, drastic changes would not take
place in such close release proximities.
• Device Registry
• Device Management Services
• Data Management
• Application Management
• Messaging
To achieve the above, Kapua exposes three basic services. These are the interfaces through which the
functionality of the implementation gets exposed. Those services are as follows (Eclipse Foundation, 2017):
• Messaging service
• RESTful APIs
• Web Administration Console
Similar to Mozilla’s implementation Kapua does not require Edge Devices to have any custom clients to
be able to communicate with the central cloud. It has a series of APIs that expose almost all required
functionality.
Kapua does not natively support Edge Gateways. Rather it uses another Eclipse project titled Kura for this
purpose. Eclipse Kura is another standalone project of the Eclipse Foundation that has been built to be a
cloud agnostic gateway solution (Eurotech, 2013).
Kura is not intended to be run headless and has a user accessible web console that provides several important
features. Features included out-of-the-box include the ability to configure the gateway, connect to a remote
cloud and even a visual data flow programming tool to dictate the data collection and processing pipelines
of devices connected to it (Eclipse Foundation, n.d.). Kura even has its own central repository with plugins
that add more functionality. Kura is perfectly capable of being run in isolation. But if ever the need arises
that a Kura gateway needs to be accessed remotely, it needs to be paired with a cloud connection. Thus, it
can be understood that Kura and Kapua are two different products that can work separately, but provide
additional functionality when combined together.
Since both Kapua and Kura are open source projects, much can be gained through developer documentation
and sources such as mailing lists and forums. While certainly quite capable as noticeable from the plethora
of features that each offer, it should be noted that neither seem to include any support (in its current state)
enabling nested gateways or hierarchical networks.
Eclipse Kapua is one of the more traditional implementations that was encountered in this research. It
checks all the required boxes needed for this research (as depicted in
Table 3.1) and is also very straightforward in its approach. Despite this, the author identified several
drawbacks that made it ineligible for further usage in this research.
• The barebones nature of the implementation is significant downside. As mentioned earlier, Kapua
is more of a lean framework than a full-fledged IoT implementation. This means the product is
intended to be built upon depending on a use case than used straightaway as it is. Aspects where
this is noticeable is in user management and multi-tenancy, which apparently it does not support.
While this is extremely useful in making it bloat free, for the requirements of this research it is not
ideal.
• The non-native support of the Edge Gateways is also a problem. As discussed, Kapua makes use
of another Eclipse project to achieve its Edge Gateway requirements; Eclipse Kura. That in itself
would have been fine but the problem lies in that Kura also has significant feature overlap with
Kapua. This would prove to be problematic as sometimes it can be difficult to locate where the
ideal place would be implement a certain component of an ideal solution.
From the authors’ perspective using a barebones implementation is problematic for this research as it
hinders the amount of changes that could have been executed otherwise. Given the time constraints on this
project as well as the features of the architecture, the more control that can be obtained and more features
that are available the better. Additionally, having a non-native Edge Gateway brings forth several issues.
Since the main scope of this research is changes done to a central cloud solution, having a, Edge Gateway
that also doubles on certain features of the central cloud is confusing. Hence the author decided to pass on
this product for implementing a solution of this research
For one, it was initially named the WSO2 IoT Server and belonged to a different vendor completely. This
vendor; WSO2, is an open source middleware company that already serves four other products (WSO2,
2018) focusing on different aspects of enterprise middleware. Those products along with their intended
functions are as follows;
WSO2 refers to this as their “Integration Agile Platform”. All of these products are extremely well focused
and very specialized in the functions allocated to them. What makes the IoT Server interesting is that it is
a collective amalgamation of all those four products. Therefore, it is highly modular and built as components
which according to companies own material “can be used individually, or as a cohesive integration-agile
platform.”
The IoT Server takes the functionalities brought on by all the components and distinguishes them into three
distinct sections (WSO2, 2018). Those are;
1. The Core – The main device management center which includes all related functionality.
2. IoT Analytics – Analytics on the data and devices is done via this section
3. Extended Platform – Non-crucial functionality depending on use case and domain is handled by
this section.
While serving the purpose of providing device monitoring functionality, the Entgra IoT Server is also
designed to serve strictly as an EMM (Enterprise Mobile Manager). An EMM refers to a purpose-built
central cloud server that’s designed to manage fleets of Enterprise grade devices (ideally organization issue
smartphones etc.) remotely and monitor them.
As discussed, prior, the Entgra IoT Server has been built by mixing and matching several components
provided by other WSO2 middleware products. While those components aren’t IoT centric they have been
combined together like LEGO bricks in a way that’s more ideal for an IoT central cloud environment.
Figure 2.14 indicates what those connections are like at a high level.
If we recall the IoT stacks discussed earlier, the component structure of the IoT Platform shown in Figure
3.11 is quite reminiscent of the stacks of the central cloud. More specifically, the Device Management Core
component is in charge of several duties such as;
• Device Management
• Operation Management
• User Management
• Application Management
• Certificate Management
that were all pointed out as crucial factors in the Central Cloud stack.
As reviewed earlier, Eclipse Kapua was more of a barebones IoT implementation that needed much of the
setup to be done by the user depending their use case. In stark contrast to this, the Entgra IoT Server product
is packed from the get-go. This also has bit of a downside as in, it is somewhat bloated and heavy in
comparison. That’s not to say that it is not extensible. There’s a very robust plugin system that enables
additional user specific functionality to be added post deployment if ever the need arises
Another notable factor is that Entgra IoT is designed to be run with Enterprise grade standards. Hence it
has a majority of very important features relevant in an Enterprise environment backed-in. Those include;
• Multi tenancy
• GDPR compliance
• Multi process friendly
When focusing on the network Edge there are significant differences from the other IoT implementations.
While all the other implementations included libraries (Web Things) or integrated procedures (Azure) for
Edge devices to communicate with the cloud, Entgra IoT Server relies on device specific agents to get this
done. This is somewhat in keeping with the EMM sensibilities of the product which relies on full device
access (as in the case of Android or iOS devices) via agents to achieve its Enterprise management functions.
This has both upsides and downsides to it.
As an upside it is very easy to monitor devices and get real time information when an agent is running
within it, whereas a downside would be that in order to gain very detailed information and deep access on
a device, platform specific agents would need to be written. This would prove to be somewhat cumbersome
in the long run. That is not to say agents are the only way in which Edge devices are accessible. The Entgra
IoT Server also includes a very flexible “Custom device” creation tool that enables easy creation of device
types on the server end which enables Edge devices to access the server through REST endpoints. While
not as effective as agents, it gets the job done for the most part. What offsets the agent implementation
somewhat is that all agents (other than the iOS version) is open source and freely available.
While the central cloud component has been well documented, what the Entgra IoT Server seemingly lacks
is a proper Edge Gateway solution. While there is an Android based Edge Gateway, which uses a Gateway
agent, it is not as extensive or feature rich as expected.
Entgra IoT Server has a lot of things to be interested about. It is built with Enterprise grade environments
in mind therefore is rock solid and has a component-based model which is very easy to customize and
maintain. Yet, despite this, there are several downsides as well that cannot be ignored when discussing this
implementation.
• The lackluster support for Edge Gateways is a point of concern that needs to be addressed. As
discussed earlier the Edge Gateway solution in Entgra IoT is not up to par with other solutions of
a similar grade. This is not to say that the available solution is bad, it does have several features
such as edge analytics built in. But it is not on par with the rest of the Enterprise grade sensibilities
of the project.
• The need for agents to gain maximum access over Edge Devices is another point of concern. While
in other implementations that have been studied in this research the main method through which
devices accessed the central cloud server was through API endpoints or some proprietary means.
Having platform specific agents can be somewhat cumbersome both for implementation and
research.
• With regards to Azure IoT, because of the black boxed nature, it is extremely difficult to gauge
how the architecture is arranged. This would in turn prove to be very cumbersome as a possible
architectural change would require knowledge of the entire stack. Additionally, due to the concerns
of vendor lock in it is not advisable to test out platform agnostic architectures in such a limiting
environment.
• As mentioned earlier, the author’s research goal is to create an architecture which is platform
agnostic. This would imply that whatever platform is being used to demonstrate this architecture is
both well understood, accepted and with a concrete design. Mozilla Web Things fails to meet both
these requirements due its unfortunate drawbacks.
• The author has stressed in the in-scope of this research that the focus will mostly be on changes
made to the central cloud. In that case the downsides of the Entgra IoT Server product (lack of a
proper Edge Gateway solution) are mostly mitigated as they won’t be causing that much of trouble.
Additionally, the presence of a custom way to create endpoints for device types that enable Edge
Devices to access the central server without an agent is also very promising.
First the author went through the conceptual high level of how an implementation is organized. Within that
the different layers that make up the implementation along with what roles each of those layers play was
discussed. This gave a framework for potential IoT implementations to follow when coming up their
products. Then the author provided a way in which the high-level view that was discussed prior could be
created in a practical sense. For this, “software stacks” were used for each of the different tiers in an IoT
Network implementation.
Afterwards the author picked several reference implementations that already exist based on a set of pre-
defined criteria. The selected reference implementations were thereafter studied in-depth and reviewed
based on what each of them offered. The different benefits and drawbacks of each were pointed out which
would either support or inhibit the progress of this research.
Finally, the author compared and contrasted three of the most suitable reference architectures and pointed
out an ideal one that would best fit the requirements of this research.
4.2 Stakeholders
A project of this scale requires stakeholders to be targeted towards. First and foremost, the stakeholders
need to be identified. This is done via methods such as Onion models and Stakeholder descriptions.
The immediate layer following the center is the Business System. It includes the stakeholders who have
direct interaction with the product/service. In the case of the author’s product (the Hierarchical Fog Network
architecture) that would include the System Administrators.
Following the Business System layer is the Organization. Stakeholders in this layer are not directly involved
with the product yet have control over the final output. They are called “Functional Beneficiaries”. In the
case of the author’s project it includes the Management, Tech Leads and System Architects.
The last and outermost layer in the Onion diagram is the Environment. It includes stakeholders that reside
outside the organization but are still invested in the progress and final outcome of the product. They are
neither functional beneficiaries nor have any operational involvement in the organization. As per the
author’s project it includes Clients and End-Users who would be using the product.
Direct Engagers
Stakeholders Description
• Interviews
• Document Analysis
• Prototyping
• Questionnaires
• Brainstorming
Out of the above the Document Analysis method has been covered significantly in the Literature Survey
section of this research. Therefore, the author intends to focus on the Questionnaire, Interview and
Brainstorming methods moving forward. The author would be considering the strengths and weaknesses of
each method and deliberate which is most suitable.
As identified via the Onion diagram, the target audience of the author’s solution are System Administrators.
Other auxiliary stakeholders such as System Architects and Tech Leads exist in the immediate vicinity.
Accordingly, when discussing the requirement gathering methods the author will base them around those
stakeholders specifically.
1. Brainstorming involves gathering a group of individuals specializing in the domain so that ideas
can be generated and refined in a community environment (Young, 2002). This type of requirement
gathering technique is especially important when deliberating about concepts and ideas since its
more likely that someone is bound to find a fault or gap in the logic that you or others might have
missed. A notable downside to this technique can be the unnecessary convolution of ideas.
Considering the author’s research is about a conceptual architecture it is important that multiple
viewpoints on it be taken from industry experts. This is also due to the fact that the domain (IoT)
has multiple co-related components such as Central Servers, Edge Devices etc. which the author
has touched on previously.
Questionnaires are mostly used to gather customer feedback for end-user products. As mentioned
prior, since the author’s target audience includes individuals that do a niche role such as System
Administrators, Tech Leads and System Architects; distributing a generalized questionnaire will
not yield the most accurate answers.
3. Interviews are formal conversations between an interviewer and respondent taking place in a
question and answer format (Surbhi, 2016). Unlike questionnaires they are far more personal and
open-ended. This also means the answers can be subjective to a certain extent. At the same time
the questions can be targeted to the most suitable informants and get real-time one-on-one feedback
for the posed questions. Despite this, the most notable disadvantage is the costliness and time-
consuming manner of the technique.
Even though the interviewing technique does incur a significant amount of time, it is the author’s
view that the positives outweigh the negatives. This is considering factors such as;
I. The final implementation of the research having a very specific technical oriented
audience
II. The research being mostly conceptual and not intended for generic end users/consumers
III. Certain concepts being very specific and might not be clearly explained via a
questionnaire thus resulting in incorrect answers due to misunderstandings.
Additionally, the author has also noted that Brainstorming can also have a significant impact in the
requirement gathering process of this research. Accordingly, due to the above-mentioned reasons the author
has concluded that for this research the ideal manner through which requirements can be gathered is via
Interviews and Brainstorming.
4.3.2.1 Interviewing
Prior to performing interviews, several questions were formulated with the intention of being brought up
during the interview sessions. These questions were formulated by mapping them with the Research
Objectives of the project. The objective to question mapping can be found at Appendix – Interview
Questions.
Those questions were asked during interviews with 10 individuals all working in the domain of IoT,
middleware and connected devices but with roles at different levels in their respective organizational
structure. This number was derived at the point where all the answers had similar themes which were
reaching saturation. This number of interviewees is also backed by research on data saturation in
requirement gathering setups (Guest, et al., 2006).
4.3.2.2 Brainstorming
In addition to Interviews Brainstorming sessions were also conducted in the presence of some of the
interviewees. Many new approaches and techniques were brought up in these sessions with several
downsides also being addressed.
• Increase of complexity with increase in devices has been mentioned as one of the largest issues
faced when dealing with IoT Networks.
• To handle this complexity most developers, resort to handling the complexity using Edge analytics
via Edge Gateways and Fog Networks.
• Interviewees also noted that despite this addition of extra devices (Edge Gateways) to the network,
the IoT central cloud servers managing these haven’t been updated to reflect their inclusion.
• It was also brought up that complexity has not been addressed from a usability perspective to make
it easier for System Administrators.
Additionally, they also mentioned that preference was given to Open Source products when it comes to the
IoT domain as it enabled better integration with existing infrastructure and products and also allows for
better customization depending on the use-case.
4.6 Requirements
3 Extract Device information from the Enroll Device, Identify Device High
enrolled device Parent, Build Device Enrolment
Info
6 Change device status based on the last Change Device status High
contact time of an enrolled device
8 Retrieve data related to the hierarchical Display Hierarchical related info High
arrangement such as list of children of
a parent device
5 Design
• Usability: While the technical outcome of the project is to come up with an architecture, the final
goal is to breakdown complexity brought on by devices arranged in a hierarchical manner in an IoT
network. The best way this can be achieved is by providing the ability for users to visualize the
hierarchical data.
• Extensibility: The author’s architecture is intended to be a template. That is, it is platform and
product agnostic. Therefore, it is imperative that it be designed from the beginning to be easily
extensible. This includes having clean code, a well-organized architecture as well as
documentation.
• Documentation: At the conclusion of the research, the author intends to have a well-organized
documentation set to accompany the prototype.
• Encapsulation
• Inheritance
• Abstraction
• Polymorphism
OOD aims to treat components within a system as objects and provides a way to add interactions among
those objects. This makes the systems highly modular.
5.4 Approach
The primary goal of this research is to solve the inability of central cloud servers to understand hierarchical
device arrangements under it influence. Ideally this solution should be generic, easily replicable and
modifiable so as to ease adoption. Additionally, the solution should also be platform or technology agnostic.
Initially two approaches were identified as being best suited for this scenario. These approaches were
created upon studying existing IoT products/solutions and the methods those had taken to address network
complexity. This was performed in the Literature Survey component of this research.
By using this approach, it is agreed upon that the central cloud server maintains a ledger on the exact
location of where a particular Edge Device exists within the network. This would ideally be similar to how
URLs enable locating web pages within a web server (Smith, 1996) and exposing their functionality via
endpoints. While not cloud centric, Mozilla’s Web of Things implementation had a similar feature where
devices connected to its Edge Gateways and even the Gateways themselves were exposed through REST
endpoints (Francis, 2017). This implementation is favorable due to its straightforward nature and the battle
tested principle of having resources being discoverable via URLs being implemented in the World Wide
Web already.
The main issue that arises in such an approach is scalability. In the case of Mozilla’s implementation, it is
ideal as it has an Edge Gateway centric philosophy without a central cloud (Francis, 2017). It has been built
with the intention of being small scale thus massive scalability won’t be an issue.
Enterprise grade central cloud servers and cloud centric IoT implementations do not have this luxury as
they involve massive amounts of devices being handled simultaneously.
The potential downside to this approach is the complexity that it incurs. Both the Edge Gateways and the
main central cloud should be in sync with the statuses of Edge Devices in the lower levels of the IoT
Network. Additionally, since the central cloud does not maintain a ledger of the devices’ location within
the network as in the Top- Down approach a mismatch can cause unforeseen issues.
1. Similar to the Bottom- Up approach, Edge Gateways in the network track the immediate child
devices connected to a particular Gateway.
2. As in the Top- Down approach, the central cloud maintains a ledger of device details. Only, instead
of maintaining the location of devices within the network it stores metadata about the relationships
among devices.
Figure 4.1 indicated in the high-level architecture section showcases how the hybrid approach is intended
to function in a general sense. With the combined model of the two approaches, the central cloud is able to
maintain an understanding of the hierarchical arrangement with more integrity than found within a singular
approach. This is due to the fact that the Edge Device metadata stored within the central cloud can be
verified using the device records stored by Edge Gateways within the network.
The advantage of this Hybrid approach would be that it can work seamlessly with existing hardware
infrastructure (Edge Devices, Edge Gateways) with a majority of changes being required only on the central
cloud server middleware. Additionally, since this approach is system agnostic, it can be implemented as
seen fit within any product.
Additionally, by providing the central cloud with an understanding of how a hierarchical network is
arranged, functionality such as the following can be achieved;
• Ability to maintain a relational “map” of how the devices are arranged within the network.
• Ability to visualize how the devices are arranged via a “tree” map of sorts in the GUI to get a bird’s
eye view of the entire network.
• Ability to quickly detect and diagnose faults in both individual devices as well as entire Fog sub-
networks.
5.5 Architecture
• Ability for a central cloud server to understand hierarchy device arrangements under its influence.
• Ability to visualize the network arrangement.
• Ability to show real-time status of devices in the network via the visualization.
As mentioned at the end of the Literature Review section, the author selected an existing IoT product
(Entgra IoT Server) to build the architecture on. This selection was made based on several factors that were
discussed in that chapter.
The figure located in Appendix – High-Level overview of Hybrid Approach, showcases the high-level
arrangement of the architecture for the overall network.
While the hybrid approach suggested above gives a general idea as to how this architecture was created,
there are several other design decisions that were also taken upon the completion of the Literature Survey
by studying existing IoT products. Those design decisions are as follows;
• All devices directly or indirectly maintain persistent connections to the central cloud.
• Edge Devices (including Edge Gateways) can maintain only a single connection with another
device in the immediate upper layer of the hierarchy (a parent device).
• Relationships between devices existing in the same layer of the hierarchy are not acknowledged by
the central cloud server.
• Edge Gateways maintain some record of the Edge Devices (child devices) connected to them.
It should be mentioned that while some of these design decisions do involve the Edge Device and Edge
Gateway tiers as well, the focus of this research continues to lie on the changes made to the central cloud
server.
Figure 5.1 - Architecture diagram and data flow of central cloud server
1. The device enrollment flow – The flow used to connect a device with the central cloud server
2. The hierarchical data visualization flow – The flow used to retrieve hierarchical metadata from a
saved set of devices and present it in a meaningful manner.
Figure 5.2 indicates the flow followed during the enrollment process of a device. The agent within a device
or another Edge Gateway initiate first contact with the server via an exposed public endpoint. This is with
the enrollment payload already prepared. The enrollment payload includes device data as well as
hierarchical metadata needed by the server. First the server will verify the credentials of the device to ensure
access rights, then the actual enrollment procedure will be initiated. The procedure includes extracting the
data within the enrollment payload and the forwarding it to the relevant CRUD operands.
Figure 5.3 showcases the flow followed when retrieving stored hierarchy related device metadata. First a
request is sent to a dedicated endpoint requesting data. This prompts a class in the Computation Layer to
run a method retrieving all the relevant stored data via a CRUD operation. Once obtained, the computation
layer performs some functions to make it presentable to the requirement. Any additional formatting is
performed on the Presentation Layer based on the needs of the requirement, be it the structural formatting
or streamlining the payload.
5.8 UI mockups
As mentioned in the Design Goals section of this document, one of the ways in which the author expects to
present the features afforded by the architecture is to have a UI visualization of the network structure. Prior
this implementation a UI mockup was created in order to showcase what the final output would look like.
The figure located in Appendix – UI mockup of hierarchical visualization, indicates such a mockup created
to get a sense of what the final output.
When selecting a particular visual style to showcase the network arrangement, the author took inspiration
from the Mind Map knowledge representation tool (Wickramasinghe, et al., 2011). This style was selected
due to its established pedigree as a method that enables understanding complex concepts easily and in a
short period of time (Eppler, 2006).
With the completion of the Design chapter, the following chapter will focus on the actual implementation
of the prototype based on the goals and decisions outlined in this chapter.
6 Implementation
1. Edge Gateways in the network tracking the immediate child devices connected to a particular
Gateway.
2. The central cloud maintains a ledger of device details. Only, instead of maintaining the location of
devices within the network it stores metadata about the relationships among devices.
By following these rules, the author was able to create an architecture consisting of a parent-child
association between devices in the network. This is also where the “metadata” component comes in. Any
single piece of equipment that carries a set of pre-defined identifiers and can connect with the server would
be acknowledged by the central server as a “Device”. The metadata in question would include;
This metadata would be passed to the server at the moment of first contact and enrollment. This bundle of
metadata would be referred to as an “enrollment payload”. A simulated network located in Appendix –
Mock network diagram showcasing parent-child architecture, depicts this “child-parent” arrangement as
well as the manner in which the metadata is arranged within devices as well as the central server. Ideally a
Device would communicate to the central server who its’ parent is at the time of first contact. But this is
not enforced strictly and is rather a design choice.
Once the connection has been made and the device successfully enrolled, the central server stores the
association as hierarchical metadata. This is performed on the Persistent Storage layer that was mentioned
in the Design chapter. It should also be noted that it isn’t always mandatory for the actual Edge Device to
be the one passing the enrollment payload. In instances with weak devices (such as Micro-Controllers with
little processing power) the parented Edge Gateway would perform the enrollment on behalf of the device.
By using this “parent-child” approach the central server can maintain a map on the entire network
infrastructure under its influence. It can also dynamically adjust it depending on changes in the network
such as a single device or whole fog network (controlled by a gateway) going down.
The activity diagram located in Appendix – Metadata acquisition and storage flow elaborates on how the
sequence of events take place starting from the point of enrollment of a device up to the metadata being
persisted in the central server persistent storage.
If looked at it closely, one can notice that the activity diagram in Appendix – Metadata acquisition and
storage flow, is actually one half of the data flow described in the architecture diagram shown in Figure
5.1. The execution begins once a device requests enrollment. After credential verification takes place the
actual enrollment payload is received by the server. Then the payload is deserialized and the contents
extracted to be passed onto the CRUD layer. This is where finally the required operations will be performed,
and the extracted metadata will be stored in the Persistence layer.
When it comes to the prototype, the author can take dual approaches. Either a brand-new implementation
can be made from scratch including all the aspects of the architecture, or an existing IoT product can be
modified to include the architectural implementation. The review of these approaches can be observed in
Table located in Appendix – Approach comparison for implementation.
Upon studying the advantages and disadvantages provided by each approach, the author has evaluated that
the pros provided by implementing the architecture on an existing product outweigh the cons. This would
obviously need to come at the condition that the selected existing IoT product be open source so as to allow
changes to the codebase.
The purpose of that study was to identify how Fog Networks were implemented and handled in existing
IoT products. The findings provided by the Literature Survey enabled the author to formulate a hybrid
approach to come up with a viable architecture that was discussed in the Design and the Implementation
(current) chapters respectively. Additionally, this study provided insight into what products would be most
suitable when it comes to implementing the authors’ proposed architecture. A quick summary of the insights
(which were previously observed in-detail in Appendix – Reference architecture feature comparison) are
reconsidered below in Table 6.1 with more detail provided to the pros and cons. It should be noted that the
Microsoft Azure IoT product has been dropped from this shortlist as it fails the requirement of being open
source.
Pros • Product uses a novel • Standardized and well • Standardized and well
Gateway based approach. established. established.
• Simplistic design and • Build atop proven and well • Build atop proven and well
technology stack. tested technologies. tested technologies.
• Well documented and
maintained code
Cons • Gateway based approach • Default product is very • No standard support for
might be too novel and barebones. Edge Gateways.
controversial. • Not well documented. • Complex and dense stack
• Still relatively new and • Complicated and dense with several inter-reliant
growing. technology stack which is technologies.
reliant on other Eclipse
based technologies for
proper functioning.
• A strong platform presence – Of all the open source products that were observed Entgra IoT
server had the strongest positioning as a platform as well as being an IoT middleware product. This
is extremely useful for the purposes of this research implementation as it supports the architectures’
Design goal of being extensible.
• An analogous software stack – As showcased in Figure 5.1, the functionality of the architecture
was scattered across several layers to improve modularity. Entgra IoT server consists of a software
stack that is very similar in nature to this layered arrangement. This further aids in the
implementation as the functionality in the layers can be matched 1 to 1 with the existing stacks
without overlap or conflict. These stacks and their functionality will be discussed in the upcoming
sections. This brings up the next point…
• A traditional application structure – Entgra IoT server comprises of a class middleware structure
with a stacked arrangement. Unlike Mozilla’s novel implementation or Kapuas’ barebones
structure, the traditional arrangement works to the advantage of the architecture. This is due to the
fact that this prototype would work as a blueprint which can be used by other potential products to
base the architecture on. This aids in the author’s Design goal of the architecture being easily
adoptable.
1. carbon-devicemgt: This repository contains the core functionality such as Device Management,
User management etc.
Since the author’s implementation would be working at the core level with the architecture residing and
accessing functionality at the very lowest layers, the majority of development will be taking place on the
carbon-devicemgt repository, with some additions to the other repos based on need.
As mentioned prior, Entgra IoT server consists of a stack that is very much similar in nature to layered
architecture the author is proposing. Figure 6.1 showcases an overview of how the software stack in the
product is arranged. The similarities between the stacks and the architectures is also studied in the table
located in Appendix – Software stack vs Architecture layers arrangement.
Prior to starting actual development work, the author specified several rules to be followed when
implementing the architecture atop the Entgra IoT server product. Those rules are as follows;
1. The inclusion or implementation of the hierarchical device architecture should not conflict with or
interfere with the existing functionality of the product.
2. The features provided by the proposed architecture should complement the existing feature set.
3. The newly coded components need to conform to the programming paradigms already established
by the developers of the product.
4. None of the existing Edge Device agents (Android) should require to be significantly altered to
accommodate the inclusion of the new hierarchical architecture.
The purpose of creating these rules is to establish the newly added author’s architecture as a complimentary
part of the product and not a hindrance or barrier to already existing features. If otherwise, the architecture
would fail the author’s predefined design goals of being product and platform agnostic.
1. Server based implementations to integrate the proposed hierarchical architecture onto the Entgra
IoT server.
2. Edge Device based implementation to showcase how an Edge Device functioning within a
hierarchical device arrangement performs when interacting with the new architecture.
First the server-based implementation would be discussed as it is the core aspect of this research, followed
by the Edge Device implementation which provides additional context.
While many other functionalities can be implemented and exposed by use of the proposed architecture (i.e.:
getting the immediate parent a device is connected to, getting list of child devices connected to a parent
device) the author decided to elaborate specifically on the 2 shown above due to the fact that they better
emphasize its capabilities better.
Other than the 2 functionalities mentioned above which are strictly related to the hierarchical architecture,
there also is an endpoint to enroll devices. While that endpoint is already existing within the product, it has
been updated and altered to accommodate the newly added hierarchical metadata that would be passed to
it (via the enrollment payload) when a new device is being enrolled.
With the main functionalities provided by the architecture established the focus can now be put squarely
on how the implementation was done. This will be done step-wise with the 2 most important functionalities
crucial for the architecture being used to describe how the implementation was done. The 2 most crucial
functionalities being;
Swagger annotations are used to define the scopes and the root paths of the endpoints. To provide some
context, Swagger is a tool used by developers to design, build and document RESTful web services
(Maltseva, 2018). The Entgra IoT server also happens to use this framework for defining endpoints as it is
very robust and easy to use.
This is all done within a Java interface class. The response is also defined within the same interface right
after the annotations as show in Snippet 6.1.
Thereafter a class implementing that interface is defined. It is within this that the actual implementation of
the response method is placed. This interface-implementation programming model is followed throughout
the Entgra IoT product including the classes in the OSGi layer and CRUD layer.
As it can be seen when studying the code, the Device parameter is actually a Java bean class the device
metadata payload is deserialized into. This makes it easier to manipulate within the code. But it includes all
Device related metadata. Including the hierarchical metadata among this would make the payload bloated
and increase confusion.
Fortunately, the Entgra IoT server product contains additional metadata related to the enrollment within
this device metadata payload. Therefore (with respect to the rules established in section 6.4.2) the author
decided to include the required hierarchical metadata within this existing payload. While the actual payload
will be studied in more detail in the section about the implementation of the Edge Device agent, for the
time being, the server-side manipulation of the metadata can be discussed.
The Java bean class which includes the hierarchy specific metadata in shown in Snippet 6.2. Since this class
did exist prior to implementing the architecture, the author merely required to add the metadata attribute
referred here as parentId. It can be seen additionally that this class can been annotated with JAX-RS
annotations. JAX-RS is a Java API that supports creating web-services, which includes easily manipulatable
object classes that can be used for serialization and deserialization. Hence, also why this class implements
the Serializable interface native to Java.
Snippet 6.2 - Bean class including EnrollmentInfo metadata and Hierarchical metadata
With the data received, it can now be computationally operated on. After the OSGi level enrollment method
is declared via an interface and it is implemented with the actual logic. An object based on the class
EnrollmentInfo is used by a DAO method for this purpose. This is the OSGi layer communicating with the
CRUD layer of the product (also referred to as the DAO layer) to save the received enrollment metadata in
the persistent storage.
This of course leads us to the CRUD layer of the product. It is here that actual SQL operations are run on
data.
As it can be seen from Snippet 6.4 (which has been implemented from the Java interface method in Snippet
6.3), after the data has been extracted from the payload and set into an object of type EnrollmentInfo,
that metadata (which is stored volatile in-memory) is extracted once again from that object and saved in
persistent storage. The attribute that is necessary for the hierarchical implementation; parentId, can either
be set as null or if empty or set with the value retrieved.
The purpose of supporting the null value is due to the fact that sometimes devices connect that do not have
a parent device. Here, it can be logically implied that the parent device is in fact an instance of the Entgra
IoT server itself therefore the device is directly connecting to the server. By setting this null value as a 0, it
becomes extremely easy to identify the hierarchical “root” when generating visualizations later.
All these operations performed by the DAO layer are finally run on DB tables which are created by
scripts at the point of server startup. Those scripts have been accordingly updated to include the
hierarchical metadata required by the architecture. The script used by the EnrollmentInfo storage table is
shown in Snippet 6.5.
With this the process of enrolling a new device with the server is concluded. If successful, each method so
far interacted with will pass the success return type up the stack which will finally be output as a HTTP
code:200 response from the API layer. If otherwise, an appropriate error response (either 404 or 500) will
be returned (Mozilla Developer docs, 2019).
With the Edge Device enrollment flow established, attention can now be given to the flow used for
retrieving the hierarchical visualization.
It should be mentioned that in this scenario, the formatting and final output of the data is highly reliant on
the tools and libraries that was used to generate the hierarchical visualization. More details on the tools
would be discussed in the upcoming sections in this chapter. It should also be noted that similar to the
enrollment methods (and most other methods in the product) the methods involved with the hierarchical
generation also follow the interface-implementation structure. Only the code snippets involving the
implementation has been included here due to space constraints.
As mentioned above, the first order of business is to extract the data stored in the DB tables.
2 methods have been shown in the code snippet located in Appendix – DAO layer methods to extract
enrollment metadata from persistent storage. While there are other methods written specifically to extract
all Device related metadata etc. these methods have been specifically written for the purpose of extracting
the hierarchical metadata. This extracted data is called by methods existing in the OSGi layer.
The code in Appendix – OSGi method to retrieve all stored EnrollmentInfo metadata of devices, shows the
DAO method mentioned prior being executed by the OSGi layer to gather the required stored metadata.
Additionally, the code in Appendix – OSGi method to return list of upstream parents a child device is
connected to, showcases a more computationally complex function that is used to gather the list of upstream
parent devices a child device is connected to and the associated “state” of those upstream parents. As a
thumb rule, a significant portion of the computation work was worked within the OSGi layer to decrease
response times and increase performance in general.
After all the required data has been gathered and put into relevant data types/formats it can now be accessed
by the API Layer code.
The code in Appendix – API layer code to generate payload required for UI, shows the final implementation
of the API level code used to push a formatted JSON payload to the front-end UI. Although previously it
was stated that the architecture was written to be as product agnostic as possible, in this case that rule had
been violated due to technical constraints. While the presented JSON payload which is generated from this
endpoint is highly dependent on the requirements of the front-end it should be noteworthy that the developer
has the freedom to customize the payload however required. Therefore, the author would prefer to
categorize it as a compromise that has occurred when developing the prototype.
An example of what of the generated JSON payload would look like (as obtained from the console log in a
browser) is shown in the code snippet located in Appendix – Payload generated for the use of hierarchical
visualization library.
To start off, the author had intended that the UI be as similar in appearance to the mock shown in Appendix
– UI mockup of hierarchical visualization as possible. Therefore, a visualization front end library capable
of the requirement had to be found. Upon doing some research 2 ideal libraries were shortlisted as suitable
for this use-case. Those 2 libraries were compared based on the merits they provided in order to better judge
what the most suitable one would be.
SigmaJS vis.js
Based on the above comparison it was clear to the author that the vis.js library would prove to better for
this implementation simply due to the fact that it had a lot of well documented components and had more
features and flexibility with regards to the actual UI generation.
After the library selection, attention can now be given to the complete frontend development. As mentioned
in the initial thumb-rules, it was the authors intention to not make the existing features redundant or conflict
with them. The front-end was written by respecting these preset rules as much as possible.
Entgra IoT server makes use of a front-end templating framework known as UUF (Perera, 2018). This
framework is actually built atop another templating engine known as handlebars.js. The files using it have
the extension; .hbs. The purpose of using such a tool is to accomplish the goal of having dynamic elements
in web pages (Manricks, 2013).
UUF requires that individual pages displayed at Entgra IoT server runtime conform to a structure as
depicted in Figure 6.2. Here, the actual front-end code is located in the device-hierarchy.hbs file and the
client-side JavaScript code included in client-script.js file.
As mentioned in Table 6.3, the vis.js library is perfectly capable of working on a <canvas> HTML
element. This is indicated in the code shown in Appendix – Front-end code markup. All the components
thereafter are manipulated and controlled via the client-side JS script.
As indicated in the code in Appendix – Client-side JavaScript code used for UI generation, the Entgra IoT
server front-end contains a native function known as invoker-util which enables the front-end to access and
use APIs without the constant need to generate refresh tokens. In the code that’s shown, the invoker-util
function is used to call the hierarchy visualization generation endpoint which retrieves the required payload.
This is then formatted some more based on the requirements of the library and finally visualized as shown
in Figure 6.3.
The Entgra IoT server supports a variety of different Edge Device platforms such as Android, iOS and
Windows. There are pre-made agents (apps) that run on these devices which communicate with the server.
However instead of working with an existing agent, the author decided to try a different approach. The
author concluded that it would be more ideal to implement the Edge Device agent on a lesser known
platform. By doing this the author suggests that it would better emphasize the architectures’ ability to work
with the lowest common denominator and a variety of different variables. This would in essence strengthen
the case of true product agnosticism the author is seeking to achieve with his solution.
The author identified 2 such lesser known platforms that were deemed most suitable for the implementation
of the mock Edge Device agent. Those 2 platforms were compared based on their merits to properly judge
which would be most suitable one.
Upon further deliberation the author decided that the platform of choice would be LG webOS Open Source
Edition. There are multiple reasons for selecting this platform beyond the pros mentioned in Table 6.4.
• Although it is lesser known there’s a large developer community surrounding it. This has resulted
in lot of well documented code and online support.
• While previously it was a closed source proprietary product that was owned by Palm.inc and later
acquired by LG electronics, recently it was made completely Open Source under the Apache 2.0
license. This further aids in the fact that there is first party support for developers who like to
experiment with the platform.
• It is an extremely easy platform to develop on as apps can be simple web apps written using web
technologies such as JavaScript and HTML.
After the platform selection the author began development on the Edge Device agent. As this is a mock
application and beyond the actual development scope of the project, the author intended to include the basic
functionality required and avoid any superfluous features.
Accordingly, the most basic functionality that could be achieved by an agent on an Edge Device would be
enrollment with the Entgra IoT server. This functionality can be broken down into a sequence of events as
follows;
1. Pass user credentials to server and obtain client key and secret – Since APIs cannot be given access
freely (as it can cause a security issue) in order to access them an oAuth app must be created with
the authorized user credentials (Chen, et al., 2014). This outputs a sort of username and password
in the form of client id and secret respectively which allow access to this app and the APIs that
have subscribed to it. It is in this step that the User Verification discussed in Figure 5.2 takes place.
2. Use the obtained client secret and id to get a refresh token – Once the client secret and id are
retrieved they can be used to obtain a refresh token. This refresh token can thereafter used to
communicate with the server and access endpoints.
3. Pass the enrollment payload to the server – By using the refresh token that was obtained in the
header, a payload can be passed to the Entgra IoT server via an exposed endpoint to complete the
enrollment procedure.
As mentioned previously, since the webOS apps can be developed on web technologies, JavaScript was
used to write a programmatic flow for each of the above steps.
Snippet 6.6 shown above showcases how the entered user credentials are retrieved from the UI and passed
to the function responsible for retrieving the client secret and id.
After the client secret and id are retrieved as show in the function in Appendix – JavaScript function to
retrieve client-secret and client-id, the immediate next step is to obtain a refresh token so that the actual
enrollment can be performed by passing the data to the relevant endpoint.
Once the refresh token has been obtained successful as depicted in Appendix – JavaScript function to
retrieve refresh token, finally enrollment payload can be sent to the server with all the relevant device
details to complete the full enrollment procedure.
Payload
consisting of
device details
Snippet 6.7 denotes the actual enrollment payload that had been referenced prior in sections 6.5.1.1 and 6.2.
This payload consists of the actual device details that have been populated using data obtained from native
methods. The highlighted portion contains the field through which the parent ID field is passed. This field
can be also left empty or completely removed (as in the case of a device that directly connects with the
Entgra IoT without an intermediary parent). The final UI of the developed IoT Server is as indicated in the
figure in Appendix – Screenshot of Edge Device agent on webOS running on an emulated device provided
by the webOS SDK.
approaches that can be taken to implement it were discussed and argued. Thereafter the various IoT products
that could be used to support this architecture were elaborated and a suitable product chosen at the end
based on suitable merit. The main core functionalities were elaborated on with the programmatic
contributions in each being shown using code snippets. At the conclusion of the chapter, a working version
of the prototype was implemented successfully.
The next chapter would be involving Testing and how the implemented architecture was tested. It would
describe the testing methodologies followed, the test cases and the final results obtained.
7 Testing
TM No During Development
TM No After Development
1. Performance Testing
2. Usability Testing
3. Reliability Testing
localhost remote
Since the product the author decided to build the architecture on (as discussed in section 6.3.1); Entgra IoT
server, is already large and complex and is production grade, it already utilizes tools to perform unit testing.
One such tool is a TestNG. It is a testing framework for Java based projects. TestNG allows for unit testing
to be performed easily and also to automate tests. Accordingly, the product is designed such that unit tests
are run during the Maven build and unless all tests pass the final pack is not created. Additionally, since the
developers of the Entgra IoT server had already created several unit tests to check the functionality of
existing features they needed to be modified accordingly to support the inclusion of the architecture without
resulting in build failure. The author also wrote additional unit tests to check newly created DAO methods
that were used by the architectural implementation.
While the unit tests that were covered earlier was relegated to White Box testing, the integration tests can
be assigned to Black Box testing as the tester need not be aware of the actual logic that is taking place
inside. A simple tool such as a CURL or Postman can be easily used to manually test the functionality of
each exposed endpoint one by one. But given that Entgra IoT server contains over 40 different endpoints,
the manual process becomes tedious.
Fortunately, similar to how unit testing was automated; the Entgra IoT server also includes a way in which
integration testing could be done autonomously. By use of a Java testing framework known as JMeter the
product tests each of the endpoints during the Maven build. More specifically, the tests are run once all the
repos (as mentioned in section 6.4.1) have been built and testing framework temporarily starts up the server
to run the integration tests. If even one fails, the entire build fails. Accordingly, as per the thumb-rules
outlined in section 6.4.2, the author implemented JMeter test scripts for the newly implemented architecture
related endpoints to be run alongside the already existing scripts.
of the results or any performance metrics, rather it simply checks if there are any errors of defects with
regards to the output received.
When taken in terms of the author’s research it tests all the main functions of the proposed architectural
arrangement that was outlined in the SRS. It does not require all components be fully integrated but given
the nature of the implementation of this research (which is an existing IoT product with components having
inter-related functionalities) the integration was prevalent regardless in most instances. In some instances,
it can be seen that there is some overlap of the tested functionalities with the functional requirements testing
in the system testing section. This is to be expected since sometimes some core functionality has been in
fact defined as functional requirements beforehand. The functionalities tested are outlined in Table 7.3
given below.
An in-depth version of this table can be found at Appendix – Detailed Functional test cases.
F1 Verifying user credentials Sending enrollment request to server with Pass 100%
of device user credentials from Edge Device
Prior actually performing the test, it should be mentioned that the author implemented the proposed
architecture via an existing IoT product (known as Entgra IoT server) for reasons mentioned in section
6.3.1. Therefore, unlike implementing the architecture on a standalone product, where the performance
metrics are directly related to the actual implementation, in this case special care had to be taken not to
degrade the current performance of the product. This mindset was established while going about the
implementation in addition to the implementation specific rules that were outlined in section 6.4.2.
The Performance test works by running a test script on a deployed server simulating the required tasks. The
tasks that are tested by the server are as follows;
1. Register App
2. Generate Access token
3. Enroll device
4. Run operation
The response times were then recorded for each task. The test was performed in 3 rounds on a product pack
(refer section 6.4.1), one containing the architecture implementation and another that has been untouched.
The test was also conducted on both localhost and remote server environments. To maintain consistency
the versions of both tested packs were also kept the same.
Testing on localhost
As mentioned earlier, due to the hardware limitations the flexibility of testing that could be performed on a
localhost were low. Hence the no. of scripted devices that were being enrolled to test response times were
limited to 1000.
Enroll Device 71 52 63 62
Run Operation 37 26 24 29
Enroll Device 81 51 69 67
The data shown in Table 7.4 and Table 7.5 indicate the metrics obtained by running the script on a product
pack as default and with the proposed hierarchical architecture respectfully. It should be reiterated that all
data mentioned is indicated in millisecond units. A graphical representation of this data is indicated below
in Figure 7.1 and Figure 7.2.
1500
1000
500
0
Round 1 Round 2 Round 3 Average
Run Operation 25 19 19 21
Run Operation 19 19 19 19
Table 7.7 - Performance metrics of product with proposed Architecture on remote server
The data shown in Table 7.6 and Table 7.7 indicate the metrics obtained by running the script on the remote
server. A graphical representation of this data is indicated below in Figure 7.3 and Figure 7.4.
Figure 7.4 - Performance chart of product with proposed architecture on remote server
Edge Computing basically means the offloading of processing power closer to the edge of an IoT network.
This is done by federating some of the functionality of the server to supervisor devices in the network called
Edge Gateways. Even though this is beyond the scope of this research the contribution it provides to overall
performance of the IoT server cannot be understated.
Since it is not possible to test the performance explicitly due to the complexities involved, it can be done
based on some assumptions as well as facts associated with Edge Computing. They are;
• The author would assume that 5000 Edge Gateways have been enrolled with the Entgra IoT server
instance.
• The author would assume that 2 Edge Devices per 1 Edge Gateway has been connected. In total
this would equate to 15000 Devices enrolled with the server (5000 Edge Gateways + 10000 Edge
Devices).
• Each Edge Gateway the Edge Devices are connected to has the ability to perform some form of
processing locally. This means that if the server needs to pass an operation for a device it only
needs to contact the associated Edge Gateway to so.
While the number of enrolled devices in both scenarios are the same (with the support of hierarchical
architecture vs without the architecture), the number of devices the server is actually communicating is
vastly different due to the presence of Edge Gateways, 5000 vs 15000 to be exact. Therefore, the test would
be performed to see how the number of devices the IoT server is interacting with affects performance.
Unlike the previous performance test which studied response times, this Performance test would study the
TPS (Transactions Per Second) that take place between the server and the devices. The reason for the change
in units is that the author believes this would better emphasize the performance gain or deficit as the test
observes the actual operations that are being passed.
The test tasks have also been adjusted accordingly. They are;
Similar to the earlier Performance test the tasks would be run in 3 rounds with the product version being
the same to maintain consistency. However, the entire test would be performed on the remote server as it
would better reflect the results that would be typically seen in a real-life scenario.
The data shown in Table 7.8 and Table 7.9 indicate the metrics obtained by running the script on the remote
server. A graphical representation of this data is indicated below in Figure 7.5 and Figure 7.6.
Average
Round 3
Round 2
Round 1
Average
Round 3
Round 2
Round 1
This Visualization interface was not intended to replace the existing interfaces of the Entgra IoT server (and
also developed in keeping with author defined guidelines outlined in section 6.4.2) but rather complement
them while also surfacing hierarchy related device details that would otherwise be hidden. The author also
proposed it as a tool that would enable to quickly diagnose inactive devices and debug network issues more
swiftly.
In tests that were conducted with a pool of participants that belonged to the pre-identified stakeholders (see
section 4.2) it could be seen that by using the Hierarchical Visualization UI against the existing device
listing UI there was on average a time reduction of 15% - 25% when detecting network issues, especially
ones caused by misbehaving devices. It should be noted that the individual times that were clocked differed
based on particular users’ familiarity with the interface of the product.
1. Register App
2. Generate Access token
3. Enroll device
4. Run operation
The response times were recorded as it provided a better indication of how much the system was straining
to maintain stable performance as opposed to a measurement like TPS. The test was performed in 3 rounds.
One could even call these “stress tests” as they attempt to overwhelm the server with multiple users and
requests to see how it would handle the load. The thread count was increased gradually from 10 to 30 to 60
to satisfy a realistic no. of concurrent users and to showcase how a product integrated with the proposed
architecture reliably handles increased load.
Table 7.10, Table 7.11 and Table 7.12 shown above showcases how the response times changes
dynamically based on the number of concurrent users simulated by the different thread counts.
8 Evaluation
• Prototype development evaluation - includes all components that were relevant in bringing a
working implementation of this research to life and testing to see its’ functionality.
• Project evaluation - includes the initial literature survey, research, justifications, technology
selections etc.
Both of these components can be viewed in a quantitative and qualitative lens. Regardless, both will be
evaluated in an objective manner.
The evaluators were each given an introduction about the research project followed by a quick demo which
involved enrolling a device and seeing the hierarchy related data visualized in the GUI.
The selected evaluators are as indicated in the table located in Appendix – List of selected external
Evaluators.
- Evaluator 1
Evaluator 1 provides a sentiment that was shared among a majority of other evaluators as well; that handling
hierarchical device arrangements on the server end becomes important when a certain threshold of devices
is reached. He also stresses that one of the biggest issues that hierarchical device arrangements face comes
in handling millions of devices. While performance testing done on several thousand devices (see section
7.5.5.2) indicated that there is definitely a performance gain when the architecture is combined with Edge
Computing, when it comes to the actual visualization it is heavily dependent external factors such as the UI
library that is used.
• “It’s good because, if it is developed as a standalone demo without using an existing product,
it could be thrown away after the intended purpose. However, since its built-on top of a real
product, this feature will add the value to the product and can be benefited to those who require
the function in production after getting this added to the actual product release.”
- Evaluator 3
• “There is no point in re-inventing the wheel a lot of effort and time would have been wasted
had the student tried to implement everything from scratch. So the decision to go with an open
source product currently being used in the industry as the base, is commendable.”
- Evaluator 9
Both Evaluators 3 and 4 agreed that implementing the architecture on an existing product was beneficial
both for its’ functionality as well as the functionality of the product. As mentioned previously, by
successfully implementing on an existing product, the author also satisfied many of the design goals that
were established early on.
Evaluator 7 elaborates well on the usability afforded by the hierarchical visualization of the network
arrangement. However, some of the points he recommends still haven’t been implemented in the prototype
and is delegated to future work. Despite this, many of those recommendations are certainly useful.
Evaluator 6 emphasizes the need for more clarity in the hierarchy visualization aspect of the project. He
brings up several important points such as how the visualization would scale for a large number of devices
and about displaying more metadata and device details. While these are all valid points, the author believes
that the current state of the visualization is more of a proof-of-concept. After all, the main purpose of the
research was proposing an architecture for hierarchical device arrangements, the visualization was a value
addition afforded by it. The author hopes to take these suggestions to heart and implement them in future
iterations.
Some portions of these reviews have been cut to better emphasize the feedback given regarding the overall
research and not the paper specifically.
• “The work is interesting, but it is not the first time that I've seen proposals to have a more
structured, distributed, knowledgebase built around a complex IoT network. I would advise to make
a wider literature review and look beyond today's leading vendor solutions”
The feedback suggests that the gap the author is trying to fulfill is considered a genuine problem and there
have been prior attempts to solve it. However, he also mentions a “knowledgebase built around a complex
IoT network” which is not related to any aspect of the research. The suggestion to look into more futuristic
implementations is quite relevant but given as the authors’ main purpose was to study existing IoT products
and find how they tackled the issue of hierarchical network arrangements is based on current technology.
Therefore, the author believes that relying on futuristic attempts too much would hurt the adoptability of
the architecture which is mentioned as a Design goal (see section 5.2).
• “In this manuscript, the authors gave a review of existing IoT products, and the measures taken
within them to combat complexity in IoT networks especially of those formed due to Fog Networks.
The review is very meaningful for the following study and the writing of the paper is quite good.”
This reviewer has provided a positive feedback regarding the project and has satisfied his doubts regarding
what it was hoping to achieve.
• “This paper addresses a fairly current context in the computational area - the connected use of
intelligent devices. The proposal of localising data traffic is certainly useful.”
This reviewer believes that the problem the author is trying to tackle and the gap that is being attempted to
be filled is quite relevant and current in context. The statement about localizing data traffic is a bit confusing
as that is not one of the primary focuses of this research. Yes, it is true that processes such as Edge
Computing enable localized data processing and in essence better performance however the author’s
architecture is suggested as a complimentary solution created by Edge Computing, not a replacement.
In addition to these reviews, a review paper that was written (refer Appendix – Submitted Review paper)
regarding the project was accepted at a conference and was given feedback. That feedback and the
acceptance notification can be found at Appendix – Paper Acceptance notification.
The testing was performed on 2 environments to better gauge the fact that the product could be deployed
in different hardware types. First the results were shown in tabular form after which they were graphically
represented on charts to better visually elaborate the results obtained. However, taking the results
individually provides little insight into the differences. Hence it is more ideal to make a comparison with
the gathered data.
Table 8.1 - Average response times for phase 1 performance tests on localhost
Table 8.1 shown above is a summary of the averages that were gathered from Table 7.4 and Table 7.5. Even
so it is not immediately apparent if there is an overall gain or loss based on just first viewing.
Figure 8.1 showcases the data of Table 8.1 in graphical form. As it can be seen the differences in
performance are close to negligible. Even the difference that shows the most visible increase in response
time (Task 1: Register App) is ~3% (2.92%) of the time taken on the product without the architectural
implementation included. Additionally, this data is measured in milliseconds and a 38ms (which is what
the ~3% equates to) gap is barely noticeable. Hence it can be confidently claimed that the author’s
architectural implementation has no degradation on performance when measured on localhost.
Figure 8.1 - Average response times chart for phase 1 performance tests on localhost
Run Operation 21 19
Table 8.2 - Average response times for phase 1 performance tests on remote server
Having the tests performed on a remote server provides better insight into how the architecture would
perform on a typical production grade environment. Table 8.2 shows a summary of the average response
times that were collected and Figure 8.2 showcases those results in graphical form.
The graphical form indicates that running the tests on the remote server seem to have incurred a higher
performance gap than on the localhost. The biggest differences can be seen in Task 1: Register App and
Task 2: Generate Access Token. More specifically, Task 1 saw a performance deprecation of ~ 8% (7.89%).
This is much more of a gap when compared to the results in the localhost. However, in Task 2 the tests run
on the remote server indicated a performance increase of ~ 20% (20.12%). While there are several factors
that can impact the results when run on a remote server it can be claimed that the 2 performance differences
balance each other out. Additionally, the instance of performance deprecation is in fact, very low at 93ms
(where 1 millisecond is 1 thousandth of a second) to be noticeable by a user.
Figure 8.2 - Average response times chart for phase 1 performance tests on remote server
Phase 2
Phase 2 of the testing involved considering how the performance of the Entgra IoT server with the integrated
hierarchical architecture would be affected when combined with Edge Computing. For this the performance
test was conducted assuming that 5000 Edge Gateways would be connected to an instance deployed on a
remote server and 2 Edge Devices would be connected to each Gateway. Table 7.8 and Table 7.9 showcased
the results obtained in tabular form. However, to better gauge the difference the averages of the two were
extracted onto a new table.
Average of Average of
5000 devices 15000 devices
Device operation is initiated 354.2 388.5333333
Operation completed response 363.4666667 397.3333333
Table 8.3 - Average TPS for phase 2 performance tests on remote server
Unlike in the Phase 1 performance tests which where the response times were measured in milliseconds, in
the Phase 2 performance tests the measurement was the number of operations exchanged between the server
and the connected devices hence was denoted in TPS (Transactions Per Second). This change in units was
performed as it better showcases the performance gap as opposed to the response times. While Table 8.3
shown above does indicate a noticeable difference in performance, it is far better noticed when elaborated
graphically as in Figure 8.3.
Figure 8.3 - Average TPS chart for phase 2 performance tests on remote server
Upon studying the chart depicted in Figure 8.3, it becomes apparent that there is a significant deprecation
in performance when the server transitions into 15000 devices from 5000 devices. More specifically, the
TPS increase for Task 1: Device operation is initiated is ~9% (9.31%) and for Task 2: Operation Completed
response is ~10% (9.75%) when the number of devices increased by 200%. Since the TPS is directly related
to the CPU usage and Memory usage that means when the increase in devices resulted in the usage of both
going up by 9% - 10% approximately. While this increase isn’t that significant for server grade hardware
to handle, in the long term as devices and users increase that can change very quickly. This proves that by
use of the author’s hierarchical architecture features such as Edge Computing can be implemented which
can drastically reduce server load especially with regard to RAM and CPU usage.
Table 8.4 - Average response time (ms) for reliability tests performed in remote server
A summary of the response time averages that were gathered form the three different thread counts is shown
in Table 8.4. While the results aren’t exactly clear when shown in tabular form, it becomes far more
apparent when shown graphically.
Figure 8.4 - Average response time chart for reliability tests with increasing users
As it is clear from Figure 8.4 that the hierarchical architecture enabled server scales to the load gradually
without causing any significant bottlenecks. This can be said due to the fact that the line depicted in the
chart is close to being straight line, inferring that the servers’ response time, and in essence the performance,
has maintained constant throughout.
8.5.1 Schedule
A project schedule was formulated very early on to properly plan and manage the work load. This was done
using a Gantt chart as indicated in Appendix – Gantt Chart. One of the main factors that aided in the
successful completion of the project was the timely manner in which each of the stages stated in the Gantt
chart was followed. By breaking down the entire length of the project into manageable chunks enabled it
to be easily digestible and comprehensive enough to be done within the limited time period.
8.5.3 Objectives
The objectives that were defined very early on in the project were satisfied quite successfully within the
established time frames.
is mostly a conceptual project, what was needed from the final prototype was to prove that the proposed
architecture was functional and practical enough to be implementable.
After the initial research to gather in-depth knowledge about the domain a literature survey was conducted
to study existing IoT solutions (see section 3.4). The purpose of this study was to understand how
established products as well as new, up-and-coming ones has tackled the issue of complex IoT device
networks. This survey revealed that most if not all products (which had a transparent architecture) had no
solution to arrange hierarchical device arrangements. The most that was implemented was with Edge
Gateways that provided at best a single layer hierarchy. This literature survey opened the door to the author
by not only revealing what deficiencies they possessed but also providing insight into how existing IoT
products were built. This proved extremely important when it came to the actual implementation.
In addition to this, the author also planned from the onset to adhere to the Design Goals (see section 5.2) as
much as possible. The entire approach to the implementation was duly performed by implementing the
architecture on an existing IoT product to better emphasize those aforementioned Design Goals. The author
believes that rather than implementing a whole new product from scratch, the implementation on an existing
product was more complex and challenging. This was due to fact that the integration needed to be done
seamlessly without interfering with the existing code base or breaking any of the existing features. The
author also made it a point to follow several guidelines when it came to actually developing the
implementation so that features and functions of the existing product were respected (see section 6.4.2).
However, despite the challenge posed by integrating the proposed architecture on an existing solution, in
the end the author believes that it actually helped the final outcome. It not only showed that the architecture
was truly product agnostic as the author initially intended but also added value to an existing product as
seen in the performance evaluation section; 8.4.1.1. It also enriched the feedback received in the evaluation
component (see section 8.3.3) as it was given from the very developers that developed and designed the
original product.
Despite this a majority of the requirements were successfully implemented and tested in the end. Given this
was more of an architectural implementation than a product or solution, the author decided to keep most of
the requirements as high priority. This was due to the additional fact that all of them were important to
showcase the capabilities of the architecture and they were all inter-dependent.
• NFR1 – Reliability – As shown in the Testing section and studied in the Evaluation section (7.5.5.4
and 8.4.1.2 resp.) the reliability of the server with the hierarchical architecture integrated was
maintained well even with increased load. This was achieved by having a lean code base for the
implementation that avoided code smells (Atwood, 2006).
• NFR2 – Performance – Also shown in the Testing section and studied in the Evaluation section,
performance was tested in 2 phases. One indicated that the performance of the existing product was
not hindered in any way and the second phase indicated that there would be a significant
improvement to performance when the architecture is put to full use via the aid of Edge Computing.
• NFR3 – Extensibility – While the architecture enabled the basic features that showcased its’ ideal
use case it added some additional features to the final output via a graphical visualization of the
network arrangement.
• NFR4 – Usability – The previously mentioned hierarchical visualization can be cited here as well
it provides an extremely easy to understand overview of how the network is arranged in real time
as well as a brief summary about device details and states.
• NFR5 – Security – Security was unfortunately the only requirement that was not least prioritized
due to the low impact it had on this research. However, prior to making the architecture market
ready this aspect is also planned to be completed in advance.
The reason for enforcing them is so that sensitive user data is not mismanaged but is used responsibly by
the relevant parties. The Author’s project does not deal with any pre-collected user data nor does it depend
on collecting user data for functioning.
Despite this, it should be mentioned that connected devices are frequently subject of controversy due to
privacy concerns. Therefore, even though it is out-scope, the Author has taken special measures on the Edge
Device end to inform users prior to having contact with the server for any data exchange. That is, there will
be full transparency and users will be fully aware when their Edge Device will contact the server and how.
Additionally, all research used for the Literature Review was taken legally from publicly available sources
with relevant credit being given where it is due.
The author also took care to obscure personal details about corporate individuals who were contacted to
provide feedback for the qualitative evaluation component. Accordingly, they are only referred to as
Evaluator 1, 2 etc. with only the designation being the identified factor.
Additionally, the author took special care when selecting technologies that complied with SLEP principles.
Accordingly, the existing IoT product used for implementing the architecture is fully compliant with the
European GDPR standards (WSO2, 2018). In addition to this, the product is also completely open source
and licensed under Apache 2.0 (Entgra.io, 2019). This means that all integrated architectural changes are
entirely within ethical limits and the product was also acquired legally.
The next chapter will conclude this project by discussing the lessons learned by the author while engaging
in it and proposing future enhancements.
9 Conclusion
9.2 In Retrospect
This research project was started because the author discovered a gap with how hierarchical Fog
Networks/Device arrangements were handled in central cloud servers (see section 1.2). An extensive
literature survey was thereafter conducted to gather more research on the subject. This included studying
terminology and technologies related to the domain and looking into existing IoT products. Those IoT
products were then studied in depth and their pros and cons identified. Those products were also compared
to see how each stacked up against each other.
After the literature survey and review were concluded the requirement gathering phase began. For this
stakeholders were identified and questioned to gather their input. It was identified that the best method
through which requirements can be gathered is via Interviewing and Brainstorming, therefore it was
conducted as such. The functional and non-functional requirements were also established. After the
requirements were gathered it was time to move onto the design phase.
The design phase involved using all the gathered requirements and coming up with a non-technical way to
achieve them. This involved deciding on a proper design methodology to begin with and then coming up
with a practical approach to go about it. Design diagrams such as sequence and class diagrams were used
to provide a better picture into this thinking. A rich picture was also used for additional context.
With the competition of the designing components, the implementation was initiated. It involved creating
an actual working prototype of the earlier formulated designs. This was achieved by recalling all learnt
knowledge as well as new insights gained during the earlier phases. This prototype was then tested, both
by standard methods as well as methods specific to the domain and use case the author was focusing on.
Those results were then evaluated both quantitatively and qualitatively in the evaluation phase. This phase
also took in feedback about the prototype from external evaluators based on how well they related to the
previously defined stakeholders (see section 4.2).
Throughout every phase the entire research process was documented, and progress shared with the project
supervisor.
• Product Agnostic: From the very onset itself the author planned the architecture to be product or
technology agnostic. This was also considered when design decisions were taking place as well.
The author was also successful in showcasing this in the implementation by using an existing
product the base the architecture on.
• Hybrid Approach: The architecture uses a hybrid approach (see section 5.4) that takes the best of
both worlds with regard to how devices in the hierarchy can be identified. This ensures that the
hierarchical representation of devices in the central server can be verified with the data in the Edge
Devices.
• Ability to work with existing technology: This was also cited as one of the main goals at the very
onset of the research. It was achieved in the implementation phase by integrating the architecture
onto an existing product without conflicting with any of its existing features.
• Network Visualization: As seen in section 6.5.1.3 one of the advantages the architecture afforded
is the ability to visualize how the device layout in the network is arranged. This proves to be
invaluable when it comes to quickly gaining insight into the health and behavior of devices.
• Entire research based on central cloud server: As mentioned in section [], the scope of this
research was delegated to the central cloud server. More specifically; the entire research revolved
around changes made to central cloud server. This meant that certain changes on Edge Devices that
could have resulted in better features weren’t implemented.
• Single Parent hierarchy: In its’ current form the architecture has been formulated assuming that
each Edge Device is connected to only parent device in the hierarchy.
• Heavy Resource requirements: The product that was selected to implement the architecture by
nature requires a very performant machine to run the server.
• Gathering the necessary requirements for the requirement specification phase of the project
• Getting feedback from external evaluators on their thoughts about the project
• Preparing all the required research material needed for the literature survey
• Learning the architectural arrangement of an existing product from scratch
While all of these did pose setbacks in some portions of the research, the author managed to quickly
overcome them by either moving onto the immediate next task that is not reliant on the issue at hand or
finding alternatives that either provided a similar outcome in the same time.
How the author overcame this is by approaching the development in phases. Each functionality was
implemented by studying its usefulness to the implementation as a whole and its relationship with other
components. This flow as also aided by use of the iterative project management model. If ever there was a
block in one segment of the implementation, the author defaulted to using alternatives methods or brute
forcing until it was solved.
9.4 Achievements
“research, design and develop a generalized solution that would provide the central cloud/server with an
understanding of the hierarchies of Fog Networks/Devices connected to it.”
Upon extensively studying existing IoT products it was understood that this solution would be a generic
metadata-based architecture. This research also paved the way into executing the implementation in a
correct manner much later in the project as well.
After obtaining the needed requirements from stakeholders and creating the proper design documentation,
the implementation was created by basing it on top of one of the aforementioned existing products.
Accordingly, an architecture was successfully implemented that also satisfied the design goals set at the
very onset of the research. Additional feedback from evaluators who were mapped based on the pre-
identified stakeholder also reinforced that the proposed architecture was a success.
Therefore, it can be safe to say that the project aim has been met successfully.
• Architecture – The main purpose of this research was to come up with a solution to solve the
complexity issue of hierarchical device arrangements in IoT networks. That solution was the
authors’ proposed parent-child architecture. However, what makes the architecture even more
alluring is its technology and product agnosticism. By choosing the implement it upon an existing
product (see section 6.3) it was made apparent that almost anyone willing can integrate this
architecture into their own product. Therefore, it can be claimed, that the architecture by nature is
extensible and easily adoptable.
• Performance – As observed during the performance test evaluation, testing was done with several
variations (see section 8.4.1.1). Tests that benchmarked how the architecture performed against the
same product without the architecture indicated that having the architecture doesn’t incur any
performance degradation whatsoever. However, the most noticeable difference was seen in how
the architecture performed when combined with Edge Computing with a significant increase being
observed. This too can be cited as a resulting contribution as the Edge Computing capabilities that
the authors’ architecture unlocks also helps the central cloud server perform better.
• User Experience – The majority of this research focused on the back-end portion of the central
cloud server due to the architectural nature of the implementation. However, one way the authors’
project manages to stand out is due to a particular GUI component that aids the user experience
aspect. Even though this project is more theoretical and conceptual, the very nature of the parent-
child architectural arrangement enables a visual representation of an IoT network to be generated.
This allows for rich user engagement features such as easy viewing of device details, quick
identification of the device location within a network and quick identification of defective devices.
1. Supporting Multiple parents: In its current state the architecture only supports a device
arrangement where each device is connected to a single parent in the in the immediate
upstream. There may be instance were an Edge Device may be connected to several parent
devices concurrently. This is what the author is hoping to improve on in future iterations of the
architecture.
2. Richer UI: One of the standout features afforded by the architecture was the interactive
hierarchical UI. It provided a complete visual representation of the network arrangement at a
particular time. It also provided a brief summary of real time details regarding each and every
device. The author hopes to expand upon this and create a more intuitive UI as an improvement.
This may include a real-time representation of how devices are communicating with the server
etc.
3. Additional Metadata fields: In the current state the architecture only included a single
parentId field as metadata about the hierarchical arrangement. This provided a way through
which the hierarchical representation could be created on the server. However, in order for the
server to have more richer picture about the hierarchical arrangement more fields need to be
included. The author hopes to test different types of fields and identify the most crucial ones
that would provide a better picture of the hierarchy.
4. Better Edge Gateway integration: Since the in-scope of this research was the changes being
done to the central server, much was focused on it and not the Edge Devices or Edge Gateways.
In future versions the author hopes to have the Edge Gateways perform a larger role in the
architecture along without associated methodologies such as Edge Computing.
5. Improved Security: While the current prototype does have a significant amount of security,
due to time constraints certain aspects were left out when it was felt that it didn’t provide a
significant enough impact to the main goal. The author hopes to amend this in future iterations
and provide rock-solid security when it comes to the architecture; both on the server side and
the client-side with Edge Devices and Gateways.
Overall, it can be said that all tasks were completed in the allocated time frame and all objectives met,
which in the author’s eyes is considered a successful conclusion to the project.
Collect
Conduct Literature Designing the Submit prototype Submission of the
Select project Idea Information from Integration Testing
Review Prototype report Final report Draft
domain Experts
Prepare software
Submit Draft LR to Prepare interim Submission of
Submit Draft PID requirements
Supervisor progress report Final report
specification report
Evaluate
Modifications of
requirements
the LR
against prototype
To research and develop the To find a suitable IoT central cloud What do you expect from an
proposed architecture server to base the architecture on established IoT central cloud server?
To develop suitable value additions What would you say are "nice-to-
incorporating the new architecture have" features in an IoT central
cloud server?
To perform additional To test how devices in the Network What would you say are the
implementations to simulate Edge would work with implemented regularly encountered types of
the Network Edge and architecture devices which connect to an IoT
platform relationship. central cloud server?
/**
* Creates an HTTPS server object, if successful. If there are no public and
* private keys stored for the tunnel service, null is returned.
*
* @param {}
* @return {Object|null} https server object if successful, else NULL
*/
function createHttpsServer() {
if (!TunnelService.hasCertificates()) {
return null;
}
// HTTPS server configuration
const options = {
key: fs.readFileSync(path.join(UserProfile.sslDir, 'privatekey.pem')),
cert: fs.readFileSync(path.join(UserProfile.sslDir, 'certificate.pem')),
};
if (fs.existsSync(path.join(UserProfile.sslDir, 'chain.pem'))) {
options.ca = fs.readFileSync(path.join(UserProfile.sslDir, 'chain.pem'));
}
return https.createServer(options);
}
Autonomy Edge Gateways have Things Gateways do not rely The Edge Gateway is fairly
limited autonomy beyond on a complex server stack on limited in its functionality.
what can be done via the the cloud end to function, in Although it is not very
cloud. Compared to the rare (but quite possible) capable the open source
Mozilla's implementation case of a cloud outage it nature allows it to be easily
it has very weak autonomy could easily maintain customized to achieve some
autonomy. form of autonomy.
Scalability The different Edge In this implementation the While the Edge Gateway is
Gateway configuration Edge Gateway has a limited, the central cloud is
addresses different types significantly large role to vastly more powerful and can
of requirements but also play. This could adversely scale easily. Given its
the wide variety of devices affect the stability of the Enterprise grade design, it is
that could be encountered entire network due to unlikely to get bogged down
in an IoT network. bottlenecks. easily.
Extensibility Azure IoT has certain In contrast to Microsoft, While coming out-of-the-box
aspects of the Gateway Mozilla is an open source with many features built in, a
agents open sourced, the organization by heart. Not robust plugin system allows
cloud is more the most part only is their own project for additional functionality to
a black box. This is not open source but it is also be implemented with ease.
very developer friendly in built upon other open source
the long run. projects.
Specialty Azure IoT has identified The approach to have Edge The Enterprise grade
pain points in existing IoT Devices be implemented implementation means that
implementations and using libraries is also very the entire system is resilient in
addressed them. This is all noteworthy. These re-usable most system failures and the
maintained by a central components make it easier extensive component-based
cloud which is for developers to write design means that
unfortunately proprietary clients on all forms of functionality can be added or
and closed source. devices that can connect removed quite easily.
Identified The closed source nature With the inherent limitations The need for platform specific
issues leaves developers at the an Edge Gateway possesses agents to gain full access over
mercy of Microsoft and compared to an entire central Edge Devices can become
can quickly lead to the cloud server this cumbersome and prove
much dreaded "vendor implementation might be difficult to maintain in the
lock-in" scenario prone to unseen issues. long run.
Supports None of the implementations support any form of Hierarchical device organization up to
Hierarchical any extent
device
arrangement
Database Layer Persistence Layer Providing a storage medium for extracted device
metadata as hierarchical metadata to be used later
either for post-processing or other functions
DAO Layer CRUD Layer Used to execute operations on the Persistence layer
via some Query language.
OSGi Layer Computation Layer Where many of the computational operations as well
as resource allocation is performed. Many other
functions of the server (such as User Management,
multi-tenancy etc.) can be accessed directly via this
layer without taking a roundabout route and
accessing the exposed endpoints.
API Layer Presentation Layer Used to securely expose the services of the server to
external parties. This same presentation layer serves
the native UI of the server (the one accessed by
logging into localhost). Individual functionalities are
exposed using separate endpoints.
UI Layer Application Layer This layer works atop the Presentation Layer to
deliver the user with a rich UI consisting of graphical
elements. Ideally, the architecture should function
without the Application Layer as well. The reason
that this layer isn’t given much prominence is
because anyone could integrate the endpoints in the
Presentation Layer with their own GUI and
completely ignore the natively provided one.
System Architect Evaluator 8 Technical Lead at a leading IoT company in Sri Lanka
Management Evaluator 10 Founder & CEO at a leading IoT company in Sri Lanka
1 Get the credentials of user logged into the session and current High Pass
tenant
2 Allow the user to enroll a device with the IoT server High Pass
5 Save hierarchy related metadata in database along with enrolled High Pass
device
6 Change device status based on the last contact time of an enrolled High Pass
device
8 Retrieve data related to the hierarchical arrangement such as list of High Pass
children of a parent device
F1.1 Accept User A payload with user credentials is sent to the Pass
credentials server and accepted
F1.2 Extract User details Extracts the relevant user details from the Pass
from payload payload to identify the user
F1.3 Verifies service Verifies of the user of the device requesting Pass
accessibility enrollment has authorization to access the
server
F2.1 Issue client tokens The server issues client secret and id token Pass
to the user credentials provided
F2.2 Issue refresh token Based on client tokens, the server issues a Pass
refresh token that allows device to access
services of the server through endpoints.
F2.3 Accept enrollment Accept the enrollment payload sent to the Pass
payload server from the device
F2.4 Save details Save device metadata from in the enrollment Pass
payload in persistent memory in the server
F3.1 Secured REST Deploy secure but accessible REST endpoint Pass
endpoint
F3.2 Expose device data Expose device data to authorized parties via Pass
that REST endpoint
F4.1 Access device data Access enrolled device metadata/data from Pass
persistent storage
F4.3 Present data Present the formatted data via REST Pass
endpoints to be accessed by the UI or
external parties
F5.3 Expose data Expose the data via a REST endpoint Pass
Bibliography
Aazam, M. & Huh, E.-N., 2014. Fog Computing and Smart Gateway Based. Barcelona, IEEE Computer
Society.
Aazam, M., Hung, P. P. & Huh, E.-N., 2014. Smart Gateway Based Communication for. Singapore,
IEEE.
Allaire, J., 2009. The first 'Internet Phone' circa 1996. [Online]
Available at: https://www.brightcove.com/en/blog/2009/03/first-internet-phone-circa-1996
[Accessed April 2018].
Alturki, B., Reiff-Margeniec, S. & Perera, C., 2017. A Hybrid Approach for Data Analytics for Internet of
Things. Linz, s.n.
Astley, M., Agha, G. A. & Sturman, D. C., 2001. Customizable Middleware For Modular Distributed
Software. Communications of the ACM, 44(5), pp. 99-107.
Atwood, J., 2006. Code Smells. [Online]
Available at: https://blog.codinghorror.com/code-smells/
[Accessed 10 April 2019].
Beck, M. T., Werner, M., Feld, S. & Schimper, T., 2014. Mobile Edge Computing: A Taxonomy. Lisbon,
Portugal, IARIA.
Bonomi, F., Milito, R., Zhu, J. & Addepalli, S., 2012. Fog computing and its role in the internet of things.
Helsinki, Finland, s.n.
Butler, B., 2017. What is edge computing and how it’s changing the network. [Online]
Available at: https://www.networkworld.com/article/3224893/internet-of-things/what-is-edge-computing-
and-how-it-s-changing-the-network.html
[Accessed July 2018].
Chen, E. et al., 2014. OAuth Demystified for Mobile Application Developers. Scottsdale, ACM.
Desai, P., Sheth, A. & Anantharam, P., 2015. Semantic Gateway as a Service architecture for IoT. New
York, IEEE.
Din, J. & Idris, S., 2009. Object-Oriented Design Process Model. IJCSNS International Journal of
Computer Science and Network Security, 9(10), pp. 71-79.
Eclipse Foundation, 2017. Eclipse Kapura Github repository. [Online]
Available at: https://github.com/eclipse/kapua
[Accessed 11 12 2018].
Eclipse Foundation, 2017. The Three Software Stacks Required for IoT Architectures. 1st ed.
s.l.:eclipse.org.
Eclipse Foundation, n.d. Eclipse Kapua Github repository. [Online]
Available at: https://github.com/eclipse/kapua
[Accessed 11 12 2018].
Maltseva, D., 2018. Why use Swagger for creating and documenting APIs. [Online]
Available at: https://dev.to/dianamaltseva8/why-use-swagger-for-creating-and-documenting-apis-115l
[Accessed 3 April 2019].
Manricks, G., 2013. Instant Handlebars.Js. 2 ed. s.l.:Packt Publishing.
Microsoft Corporation, 2018. Microsoft Azure IoT Reference Architecture. 2.0 ed. s.l.:Microsoft.
Milito, R., Natarajan, P., Zhu, J. & Bonomi, F., 2014. Fog Computing: A Platform for Internet of Things
and Analytics. In: N. Bessis & C. Dobre, eds. Big Data and Internet of Things: A Roadmap for Smart
Environments. s.l.:Springer International Publishing, pp. 169-186.
Miller, P., 2018. What is edge computing?. [Online]
Available at: https://www.theverge.com/circuitbreaker/2018/5/7/17327584/edge-computing-cloud-
google-microsoft-apple-amazon
[Accessed July 2018].
Mozilla Developer docs, 2019. HTTP response status codes. [Online]
Available at: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
[Accessed 4 April 2019].
Olson, J. E., 2003. Data Quality: The Accuracy Dimension. s.l.:Elsevier Science.
Patel, K. & Patel, S., 2016. Internet of Things-IOT: Definition, Characteristics, Architecture, Enabling
Technologies, Application & Future Challenges. International Journal of Engineering Science and
Computing, 6(5), pp. 6122-6131.
Paul, D. & Altar, A., 2013. Designing an MVC Model for Rapid Web Application Development. Zadar,
Curran.
Perera, R., 2018. Story of the Unified UI Framework (UUF). [Online]
Available at: https://medium.com/@rasika90/story-of-the-unified-ui-framework-uuf-42457db018a
[Accessed 4 April 2019].
Perumal, T., Datta, S. K. & Bonnet, C., 2015. IoT Device Management Framework for Smart Home
Scenarios. s.l., s.n.
Ramel, D., 2018. Azure IoT Edge Now Generally Available and Open Source. [Online]
Available at: https://visualstudiomagazine.com/articles/2018/06/28/azure-iot-edge.aspx
[Accessed 31 12 2018].
Rouse, M., 2016. Internet of Things(IoT). [Online]
Available at: https://internetofthingsagenda.techtarget.com/definition/Internet-of-Things-IoT
[Accessed April 2018].
RP, S., 2018. How To Choose Your IoT Platform Architecture?. [Online]
Available at: https://www.expresscomputer.in/news/how-to-choose-your-iot-platform-architecture/18291/
[Accessed 20 1 2019].
Satyanarayanan, M., 2017. The Emergence of Edge Computing. Computing in Science & Engineering,
January, pp. 30-39.
SCOTT , L., 1998. Frameworks for Component-Based Client/Server Computing. ACM Computing
Surveys, 30(1), pp. 3-27.
Shi, W. et al., 2016. Edge Computing: Vision and Challenges. IEEE INTERNET OF THINGS JOURNAL,
3(5), pp. 637-646.
Smith, T. S., 1996. UNIFORM RESOURCE LOCATORS (URLs): POWERFUL REFERENCE TOOLS
FOR LIBRARIANS AND INFORMATION PROFESSIONALS, Kent: Kent State University .
Surbhi, 2016. Difference Between Questionnaire and Interview. [Online]
Available at: https://keydifferences.com/difference-between-questionnaire-and-interview.html
[Accessed 3 March 2019].
Tragos, E. Z. et al., 2016. Trusted IoT in the Complex Landscape of Governance, Security, Privacy,
Availability and Safety. Singapore, s.n.
Wickramasinghe, A. et al., 2011. Effectiveness of mind maps as a learning tool for medical students.
South East Asian Journal of Medical Education , 1(1), pp. 30-32.
WSO2, 2018. General Data Protection Regulation for WSO2 IoT Server. [Online]
Available at:
https://docs.wso2.com/display/IOTS330/General+Data+Protection+Regulation+for+WSO2+IoT+Server
[Accessed 18 April 2019].
WSO2, 2018. The WSO2 Integration Agile Platform - Overview. [Online]
Available at: https://wso2.com/platform
[Accessed 1 1 2019].
WSO2, 2018. WSO2 IoT Server documentation - Overview. [Online]
Available at: https://docs.wso2.com/display/IOTS330/Overview
[Accessed 1 1 2019].
Young, R. R., 2002. Recommended Requirements Gathering Practices. In: Risky Requirements. s.l.:s.n.,
pp. 9-12.
Zanella, A. et al., 2014. Internet of Things for Smart Cities. IEEE INTERNET OF THINGS JOURNAL,
01(1), pp. 22-32.