My high school freshman son has been pretty stressed out these past couple of weeks. Dealing with the pressures of multiple teachers giving assignments all due on the same day has been very frustrating. As I watched him tackling mounds of math homework, I considered similar struggles that happen within IoT development. It dawned on me that the processes thwarting IoT progress could be boiled down to a simple mathematical equation: IoT = DevOps2.
IoT equals DevOps squared?
Let me explain. To achieve a successful IoT application implementation, you need an awareness of the complete physical environment in your IoT scenario. At the same time, you need to recognize that you are dealing with several groups scattered throughout your organization; OT development, OT operations, IT development and IT operations.
Each of these four distinct groups, like teachers of different subjects, has specific goals and concerns. Coordination and planning among groups are required. Otherwise things will run inefficiently, or worse, at cross purposes. For things to run smoothly, you need a coordinated plan with assignments and processes, and a constant exchange of information.
Of course, it’s important to remember why each group is its own distinct entity. Differences in their objectives must be considered. Just as math and history have very different aims in what is being taught, each group within an organization has different objectives and metrics. While operations and development are similar, developers are measured against creating new and better software and doing it as quickly and efficiently as possible. And staff in IT operations are much more concerned with keeping an environment stable and operating. Whatever they decide to implement must be able to safely integrate into their current environment.
Like the goals of an educational institution, the goal of a business implementing an IoT project is to ensure everyone completes the process together and on time. If the OT development group finishes its assignment and throws it over the wall with no one there to catch it, or if the IT development group claims success for having finished “on time” but the other groups can’t, the IoT project fails. So, what can be done to avoid development pitfalls in the new atmosphere of IoT?
X can’t equal old waterfall techniques
First, let’s acknowledge that older software development methods hinder the collaborative processes required to support IoT. I’m talking about methods whereby months are spent developing software, documenting it and then testing it only to find out (too late) that the software is either too buggy or no longer meets the expectations of the customer. This timeframe and methodology won’t fly in the IoT context, where requirements of all four distinct and very important groups must be met. IoT is truly all about real time.
Strong integration and communication among all four groups is required to make IoT work. By merging these four groups into one team that works together, you can feed in requirements earlier and make sure things are supportable sooner in the process. The team can then more easily pick up on concepts and have those concepts reinforced through different tasks. It’s all about determining what is important to the greater goal and finding the pieces that are required in each area to support that. In the image below, you can see that there are indeed common requirements between development (Dev) and operations (Ops). Focusing on these requirements to create a DevOps platform smooths the way for greater efficiency and innovation.
Give an A+ to Agile
Agile software development, such that is enabled through DevOps and CI/CD (continuous integration and continuous delivery) improves collaboration, and thereby, innovation. When everyone is in charge of quality management and people are working together, rather than in silos, the potential to break functionality in other areas is avoided. When you are constantly releasing products with small, incremental changes and testing them as you go, you know immediately if something has broken and can pinpoint what needs to be fixed. By catching and addressing the problem quickly, the whole team produces more stable and better-quality software.
Containers are often used in an agile development process. Being able to make modifications to “layers” of code without impacting others allows for changes to be made quickly while keeping the code stable. Scrum is another important agile project management tool. Unlike traditional waterfall-style project management, scrum deals with real-time, face-to-face interactions to ensure clear communication to all involved.
Agile development environments scale quite well, which is essential in today’s quickly changing markets like IoT. These environments are far more efficient and allow updates to occur quickly and often without affecting underlying layers.
Using the right tools is important to success
You can take this whole idea of agile integration and development processes and expand it out into other aspects of IoT, including your architecture approach. My colleague, Ishu Verma, discussed this at length in his blog post, “Using Agile Integration for IoT.” As he points out, it really comes down to transforming from customized technologies to those based on standards and focusing on the ability to collaborate. This is why customers are using container platforms and other development tools to update their IT infrastructure and adopting an agile, DevOps approach to application development.
Combining agile integration with tools found in device application frameworks specialized to build and manage machine-to-machine or IoT applications, such as Eurotech’s Everyware Software Framework and Everyware Cloud, gives IoT developers on-demand, self-service capabilities while making it easier to work together.
Now, if only the freshman curriculum were this easy.
All IoT Agenda network contributors are responsible for the content and accuracy of their posts. Opinions are of the writers and do not necessarily convey the thoughts of IoT Agenda.