DevOps - A catalyst for IOT solution development
Recently, I presented at the international SPICON 2016 - theme of "Energizing Delivery in a Digital Paradigm". I spoke about how DevOps is quintessential for IOT solution development and the feedback was very encouraging from the audience. You can find my presentation here. I have been actively evangelizing devops as a philosophy in IOT solution development.
There is so much material on DevOps that I wouldn't want to add to it, however a slightly different take - DevOps definition is analogous to the blind men and elephant story that all of us have heard of. Enterprises who are thinking about DevOps as a magic wand to all their problems - let me implement Chef, Jenkins and Docker and voila all my problems are gone, must reconsider and reconsider really hard. You cannot be certified for DevOps, neither are there standards or checklists for implementing DevOps. I have also heard weird things such as DevOps is what Facebook, Google, Netflix does.
So what is DevOps - it is a cultural change that focuses on rapid delivery through the adoption of agile and lean practices. DevOps emphasize people, process and tools and seeks to improve collaboration between Dev and Ops. I have been guilty of the classic developer excuse - "You know it really worked on my system" or if you walk the corridor a few years ago during release time, you will hear someone screaming - "Hey is this the same version", "Did the QA team certify the release?" ... I am certain that all of you would agree that the scale, magnitude of these issues in a digital world is magnified and the business impact is massive. DevOps builds on principles such as "Fail early, Fail fast", "Get early feedback", "Deliver rapid and incremental value". Ofcourse the agile movement was foundational and DevOps has been building on it.
IOT is about connecting things, devices, people, processes and systems to enhance value as data passes through every layer. There are multiple reference architectures for IOT solutions - devices and sensors, right at the bottom of stack which sense and communicate through wireless technologies which is then analyzed and integrated with enterprise systems to deliver business value.
At each layer there are various aspects that need to be considered and tradeoffs need to happen. Of course cutting across all these layers is security, system integration, end to end performance testing and most importantly experience. Human centered design is at the core of IOT solutions - unless the solution development centers around the user and creates experiences that are meaningful, and contextual adoption will be a challenge. In the period between 2013 - 2020, the world population is expected to grow from 6.3 Billion people to 7.6 Billion people. In the same period, the number of devices that can connect are expected to grow from 500 Million to 50 Billion. In the world of IOT everything is about magnitude and scale.
There are certain aspects that make IOT solutions unique - physical devices (sensors, and/or devices), connectivity and scale of data. It's pretty evident that the platform software which are the backend systems would follow classic devops however let's look at the uniqueness of IOT solutions -
- Multi-disciplinary: Hardware, embedded systems, connectivity, cloud, analytics, messaging, protocols, and just about everything else ...
- The vulnerability surface area is pretty widespread as well given the multi-disciplinary nature - there are more point to attack and hence security becomes vital
- The device layer is expected to work on low power, last long without maintenance, and under harsh operating conditions
- Device management across millions of devices becomes a key challenge as well
- Connectivity in a connected vehicle scenario connectivity can be intermittent - and hence testing for such conditions becomes crucial
Given the uniqueness of IOT solutions, testing and deployment are hotspots when it comes to DevOps. Let's now look at a few factors that are specific to testing and deployment
Start with testing
- How do you mimic the field in your environment? What is the impact of data being ingested into the IOT platform - in the fleet management solution that we spoke about how do we mimic the truck being driven around across the country
- What are the operating conditions - weather, connectivity, tampering, battery low?
- Because of the proliferation and commoditization at the device layer how does the platform still continue to interface with older generation devices
Deployment is challenging as well
- How do you ensure that all devices have been provisioned, are always online, have the latest updates?
- Let's take a connected farm as an example - you would have a few thousand sensors, how do you test for deployment under such load conditions - it is impractical to have them in a lab
- In multi-geography deployments certifications play a crucial role - the ops team has to understand certification and regulatory requirements and isolate/stagger deployments accordingly
The intersection of DevOps and IOT is embryonic and expected to grow from strength to strength. Modern Service Delivery is quintessential for IOT solution development. Here are a few takeaways for those of you who are starting to consider DevOps for IOT?
- Don't force fit DevOps - assess for natural fitment, start with the low hanging fruits of software before extending them to the devices
- Model the devices and it's attributes - start looking at Device As Code just like Infastructure as code
- Emulation and Simulation are key elements of testing ... Emulators maintain the same look and feel of the digital object, they emulate device behavior and help create virtual assets that can be used for software testing. Simulation on the other hand is very software centric and refers to simulating interfaces, API, test data and so on
- Plan for flexibility and scale - IOT solutions bring about different scenarios such as operating conditions complexity, models and versions. DevOps implementation need to start considering these.