Using Agile Integration for IoT
See what roles agile integration, DevOps practices, containers, and community-driven open source projects have in the modern IoT development world.
Join the DZone community and get the full member experience.Join For Free
In architecting end-to-end IoT solutions, one of the biggest challenges is how to integrate IoT data with data streams from enterprise systems and external sources. Traditionally, businesses have used an enterprise service bus (ESB) and service-oriented architecture (SOA) to integrate and connect different systems and applications. However, this integration approach, due to its complexity and time-consuming implementation cycle, is not suitable for the rapidly moving needs of digital business imperatives like IoT. Given IoT’s adaptive nature, agile integration should be considered.
The term agile integration most commonly refers to a continuous integration/continuous delivery (CI/CD) process used for software releases. The term agile integration in this article instead refers to an architectural approach, which specifically applies to “integration” technologies and processes so that applications and data across multiple systems and services can be integrated and adapted faster to meet the rapidly changing demands of digital business. Agile integration takes advantage of modern development technologies like containers and microservices and approaches like continuous integration/continuous delivery (CI/CD).
The three key capabilities needed for an agile integration approach are:
- Distributed integration
Line-of-business-driven IoT initiatives are causing a shift in the role of IT to be more about collaboration and enablement and less about centralized control. As a result, IT is adopting a distributed model while still adhering to the security and governance that remain core to business requirements.
Enterprise IoT is typically built as a distributed system with a multi-tiered architecture that requires integration with various systems and services distributed from edge to the cloud. At the edge, the device tier consisting of sensors, actuators, and PLCs (programmable logic controllers) generate a diverse range of IoT data. This IoT data needs to be integrated at the Intelligent IoT gateway tier and routed to applications and systems for further processing. Once this data reaches to cloud or data center tier, it needs to be integrated with other IoT and enterprise data to be analyzed for further insights or stored for future references. This process mandates a need for an integration platform that enables developers to quickly create lightweight API-based integration services, deploy at any tier from edge to cloud, and scale those services as needed.
In order to meet the demand for faster and simpler integration of new services and applications more modular, lightweight, and pattern-based approaches are needed to support Agile integration. As a result, community-sourced integration platforms like Camel with support for Eclipse Kura are gaining greater adoption across IoT use cases.
With the ever-increasing number of connected things, the applications dealing with device data may need to scale to millions of transactions, in an unplanned and elastic manner. Also, these applications need to scale independently of each other. Containers are fundamental to a distributed integration model outlined in the first agile integration capability (distributed integration) as they avoid the bottlenecks associated with the rigid and monolithic architecture of centralized ESB architectures.
Containers provide an excellent paradigm to divide complex systems into microservices, smaller working units, which accommodate the further decentralization that occurs when you introduce more computing at the edge. In addition, containers provide the mechanism for application deployment that can be scaled independently on demand and allow consistent version management. Finally, containers are a technology that matches the CI/CD approaches that IoT solutions require.
A fully deployed IoT system needs to interact with a multitude of systems including enterprise applications, vendor/partner ecosystem, service providers (utilities, telco) and customers. As the endpoints multiply, point-to-point integration is no longer sustainable. Instead, APIs are becoming the primary means of communication between these systems.
By providing well-defined and open APIs, developers can use data in a programmatic manner, e.g. front-end developers can get access to IoT device data without worrying about the hardware interfaces or device drivers. The community-sourced solution like Eclipse Kura offers easy access to the underlying hardware including serial ports, GPS, watchdog, USB, GPIOs, I2C. Eclipse Kura also simplifies the remote management of the gateway and communication with cloud back-end.
The opening of APIs enables a company to provide uniform data and transaction interfaces to internal and external developers, partners, and customers, for improved data access and control of remote resources. This enables many new classes of applications across the wide ecosystem with the potential to transform the way they do business.
Projects like Eclipse Hono and Eclipse Kapua exemplify how open source-led innovation is enabling agile integration capabilities for IoT. By providing uniform service interfaces for connecting large numbers of IoT devices to a (cloud) back-end, Eclipse Hono enables secure data ingestion and device control. Similarly, Eclipse Kapua enables the services required to manage IoT gateways and edge devices. It not only provides a core integration framework but also a set of core IoT services including a device registry, device management services, messaging services, data management, and application enablement.
Agile integration requires transformation from customized solutions to standardized solutions. From a waterfall model of application development to agile methodologies, from monolithic applications to microservices. It requires new ways of developing, delivering and integrating applications over and across existing and new cloud infrastructure.
Fast-paced and adaptive solutions like IoT can benefit from agile integration through its use of modern platforms, processes, and technologies. These three core capabilities – distributed integration, containers, and APIs – enable greater agility as they each raise the level of abstraction at which different teams can work together. The use of agile integration for IoT initiatives allows for quickly building and deploying standards-based solutions at scale. Open source is enabling agile integration capabilities for IoT through community-sourced projects like Eclipse Kura, Eclipse Hono, and Eclipse Kapua.
Published at DZone with permission of Ishu Verma, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
How To Approach Java, Databases, and SQL [Video]
Competing Consumers With Spring Boot and Hazelcast
Microservices With Apache Camel and Quarkus (Part 2)