Devices are the crucial last mile in your continuous value delivery chain — if your software can’t reach the devices your customers depend on, you may as well not be delivering that software at all. That last mile can be grueling — or even impassable — without the infrastructure and practices a DevOps for devices platform can enable.
This is an excerpt from my book "DevOps for Devices: The Innovator’s Guide to Enterprise Fleet Transformation."
DevOps works for your devices like it works for your cloud servers (mostly)
Successful development and operations teams build on proven DevOps principles for resilience and speed in fleet deployments. Device fleets present a unique set of challenges, even compared to the cloud services ecosystem where DevOps was born.
Cloud deployments, even large ones, are at the magnitude of maybe a thousand servers. On the other hand, device fleets often reach magnitudes of hundreds of thousands or even millions of devices. New challenges come up at this level of scale, and to make things even more challenging, device fleets are much more distributed than cloud servers, with vastly different environmental conditions.
The DevOps lifecycle for devices must also adjust to the fact that hardware, OS, firmware, configurations, application services, and auxiliary content can all impact total device health and customer experience.
Customers (whether internal company employees or the public) who use dedicated devices are virtually always remote from product teams, and end-users are rarely product experts. There are no built-in redundancies or failover hardware for consumer devices, and any downtime can result in costly customer churn.
Enterprises need a single pane of glass view into their device fleet to manage health at scale, as well as sufficient alerting and monitoring to detect and correct early warning signs before customer devices fail. DevOps for devices is the approach needed to accomplish this.
Update with caution
Enterprises have historically approached firmware and software updates with an abundance of caution. Operations teams spend months of sleepless nights testing updates before going live, hoping the update does not wreak havoc on their fleet. Updating production devices with a traditional MDM solution can yield unpredictable and potentially irreversible harm, as most lack features to safely and systematically roll out updates, let alone monitor and respond to issues in real time during a deployment.
Early in my career I was working with a fleet of devices that were densely concentrated in a location where it was physically difficult to remove and retrofit. Since this was prior to having a DevOps for devices infrastructure in place, the system had no rollback or safety mechanism. One time we rolled out an update that produced issues in the real world and had functionality that clashed with future updates. Because we couldn’t easily roll back, the only option was to manually replace and rework the devices which took many weeks for the development team to resolve.
Having these experiences, I know the fear that deploying updates can create, but on the other hand, not updating or delaying updates frequently isn’t an option, either, as doing so creates security risks as well as risks to customer experience and loyalty.
I also worked on a device fleet that faced hardware issues that could have easily been worked around with a software fix. But since there wasn’t a built-in mechanism to deploy updates to the hardware, the only way it could be resolved was a full hardware recall. In this instance, having the capability to update would have reduced device downtime and saved the team weeks of work.
DevOps for devices strikes the balance, recognizing the potential consequences of updates, both positive and negative. Ultimately, it is necessary to give organizations a reliable, repeatable, and secure way to roll out and roll back updates to customers with predictable results.
Automation is king
Chances are, you have more than a handful of applications that are updated frequently to deliver new features and fixes to your customers. And chances are even better you don’t want to perform this never-ending stream of updates manually, across your entire fleet, every time. With a DevOps approach, you can easily configure automated device fleet workflows that scale with you.
If you’re already in the DevOps world, the tools for managing and releasing content (applications) on devices aren’t far off from the cloud-based tools you're already using — think Jenkins, JFrog, or CircleCI. Acting as an automation server, these tools compile your content and push it through to your repository, where it then becomes available to test or deploy. DevOps for devices is about bringing this same functionality to that critical last mile. Simply put, DevOps for devices seamlessly deploys software from your repository directly onto your devices.
DEVOPS FOR CLOUD TECH STACKFOR…DEVOPS FOR DEVICES TECH STACKJFrogPipelinesEsperCircleCICI/CDEsperDockerContainersEsperAnsibleConfiguration Management (CM)EsperAWSCloud enablement / APIsAWS
The automated, integrated version of device management greatly increases the efficiency of releasing, configuring, and deploying your content. The fewer hands involved, the less chance for things to go wrong. The automation here is also highly repeatable and, therefore, scaleable. Grow and diversify your fleet as much as you like and your device management will stay simple, while still giving end-users the innovative experiences they expect.
Protect your updated fleet
Now that you’ve updated your devices, monitoring their health, security, and performance is the next most important thing. Robust monitoring is essential for fleet devices. Replacements can take weeks or even months to ship from brand headquarters or the manufacturer (OEM) overseas. Troubleshooting over the phone is costly and frequently ineffective. Too often, minor failures can lead to a major product recall.
Dedicated device fleets are uniquely heterogeneous and are only becoming more fragmented and specialized in response to consumer demand for personalized experiences. A single fleet can contain countless subsets of hardware configurations, content, and cloud services. These variations may reflect a combination of subscriber preference, demographics, behavior, and countless other variables.
Traditional approaches to fleet segmentation aren’t pragmatic for monitoring at scale, especially in a fleet that contains thousands, let alone millions of edge devices. Device operations teams need a single pane of glass to monitor the entire fleet and intelligent alerts to avoid excessive noise and uncover meaningful patterns.
Monitoring an enterprise fleet of edge devices requires dynamic partitioning so DevOps teams learn from common failures and isolate unique ones. And, perhaps most importantly, it requires the telemetry and operational agility to restore total device health before an isolated warning signal impacts the experience of one or many customers. And this is just a small window into the power of using a DevOps approach when managing a modern device fleet. If you want to know more, I suggest reading my book Devops for Devices: The Innovator’s Guide to Enterprise Fleet Transformation.