# Moving towards Smart Cities: A Selection of Middleware for Fog-to-Cloud Services +
## 2 Related Work
### Edge Technologies
#### 2.1.1 Edge as an Extender of Cloud Services  
Currently, there are specific platforms that support the rapid growth of the IoT paradigm and provide a rich menu of requirements for developing edge applications, such as OpenFog [13], Google's Go language [14], among others. Consequently, there are many real implementations of edge technologies, such as the development of wearable cognitive assistance spanning on Google Glass at the edge [15], where the computation-intensive tasks of the wearers are offloaded to nearby cloudlets to achieve tight end-to-end latency constraint. Nippon Telegraph and Telephone Corporation (NTT) [16; 17] is one of the examples of edge projects that aims at designing, implementing and validating new management edge and cloud computing systems. One of the vital applications at edge computing is the use of the vast number of vehicles in cities as a fog platform to deliver various services in traffic support and analytics [18; 19; 20]. The realization of this idea of vehicular fogs surrounding IoT applications involves multiple technologies, such as vehicular technology, artificial intelligence, big data analytics, or wireless communication technology. For the orchestration of IoT devices, the MQTT (Message Queuing Telemetry Transport) broker [21] has been pre-installed at the Fog computing node based on SDN (Software-Defined Networking) for improved delivery performance of IoT applications. Likewise, in [14], the fog nodes have been exploited to manage the various smart objects directly in complex IoT scenarios. In [22], fogging has been used to automate website performance optimization at edge servers. This novel idea illustrates the importance of edge location by providing dynamic, customizable optimization based on local network and client device conditions. Further, catching technique was implemented within the fog servers to speed up the content delivery process to end-users. Similarly, the solution proposed in [23] considered fog servers as the main functional provider of computing and storage services. Another solution for reducing the waste of IoT resources was discussed in [24], where a Fog model based on previous QoE (Quality of Experience) records was proposed to solve this issue by managing the IoT resources and improving their QoS (Quality of Service) at fog. Equally, in [25], an architecture based on OpenStack platform, called WiCloud, has been developed as a mobile edge computing platform for enhancing location-awareness, managing inter-mobile-edge communication and data acquisition for innovative network data service on the smart campus.  
Despite the investigation of the advantages of edge technologies for adapting and obtaining the most efficient results according to IoT users' requirements, the running of the requested services in isolated and limited edge resources is considered a big challenge to face during the advancement of edge technologies. For that reason, several works have tried to combine edge technologies with unlimited cloud resources to allow the end-users to benefit from both paradigms.