Microservices and virtualization have recently revolutionized the world of software development bringing agility and innovation in this domain. Microservices promote the use of fine grained and independent services that are implemented as autonomous entities interacting each other through well known APIs: independent software modules ease the maintenance process and reliability, making it easier to identify which components fail, restart failed services or correct the identified problems. Virtualization helps instead to decouple hardware resources from software: software can run on multiple hardware architectures and can be easily moved and shifted from one server to another. With the advent of containerization technologies (such as Docker for example) microservices can be realized as “containers” that result to be extremely fast to start up and can be easily deployed (using a common packaging mechanism) and can be easily released and shared via common repositories (like the Docker Hub).
Many companies have already understood the benefits of such technologies and embraced them starting to benefit of them in the cloud, when deploying their solutions, making their applications highly available, scalable and adaptable to their business needs. Benefits of these technologies in the cloud are widely acknowledge, but what about microservices, containerization and the Internet of Things (IoT)?
Recent improvements on using these technologies not only in big servers of data centres but on constrained devices (like, for example, a Raspberry PI board) have opened the possibility to rethink how a critical component of IoT solutions i.e., the IoT gateway can be build following a modular and flexible architectural approach. An IoT gateway is the component that talks and interact with IoT devices and has to support a plethora of different communication protocols (like for example, BLE, ZigBee, LoRa or many other proprietary wired protocols) so a multitude of software components serving the various protocols can be envisaged. Modularity can help to create adaptable gateway solutions fitting specific requirements for device support and limiting maintenance, fixing and troubleshooting of software solutions. The same can happen when deciding which IoT functionalities are needed and have to be on-boarded in the gateway for a specific IoT solution. This and much more is what the AGILE project, an EU funded project (under the H2020 Framework Program) that aims to foster and address.