As we build out the "Internet Of Things" with the integration of massive numbers of connected devices, we need to figure out how to keep these new mission-critical systems running. Are the new rules the same as the old rules? Like so many things, they are an extrapolation of those lessons learned upon which the previous generation has built, with a few new twists.
Let us define the term "RobotOps" to mean "DevOps For Robots". RobotOps means applying the various patterns and practices that keep the real-world web operating, in the same fashion that these practices have kept high-traffic internet applications running.
Practices will be absolutely essential, especially as businesses, governments, and other organizations count on distributed sensor network data, robots, and drones as part of their mission-critical infrastructure.
Here are a list of the 10 "rules" that we think are required for any modern software development effort to be able to keep up with the challenges faced as part of "RobotOps".
Applying test-driven development has been the secret sauce for top development teams to deliver new code confidently, and quickly. Test driven robotics uses this same approach towards development of embedded systems and other device-centric code.
Updates to firmware, restarting devices, and other crucial activities must be able to be performed entirely using command line interfaces. There is simply no way to operate at scale without being able to automate these processes.
Writing entirely different code to incorporate similar devices is inefficient, and makes it hard to add new developers to projects, or even for existing developers to understand their own work. Having standard coding practices that work across product lines is key to sustaining development velocity, and maintaining quality. This can also help with vendor interoperability.
Not all code can be generated. However, being able to generate the skeleton code to start new projects, or to add new hardware support, is key to maintaining consistency, as well as increasing development velocity.
It needs to be easy to coordinate multiple devices together is a seamless way without making extensive code changes. Devices will be deployed en masse, and they must be able to coordinate their own activities, as well as be able to receive commands from HQ.
Integration with other systems is absolutely crucial. You need to be able to both call out from your robotics framework, as well as being able to be called from external systems. Both web-based protocols, as well as other, lightweight real-time protocols, need to be supported.
Just like a router has a built-in admin page, you need some kind of admin control panel. This is key to troubleshooting field problems, as well as sometimes allowing users to resolve their own issues.
Being able to write code to describe what the system should do, is at the heart of any framework. Years of research into artificial intelligence and human machine interfaces, have shown that it is easier for programmers to communicate with the users, by using declarative syntax. For example, the use of Domain Specific Languages (DSLs).
Documentation is essential to being able to get any useful work done. This includes both API docs to define the rules of the road for devices, as well as plentiful examples. Additionally, some kind of real time support is required for mission critical systems, even if that support is staffed with volunteers, like many open source projects are.
Authentication & authorization need to be handled, especially given the sensitive nature of sensor data, and the possible risks to infrastructure. Leveraging existing standards such as OAuth2 can take us a long way. Handling security patches is critical.
At The Hybrid Group (http://hybridgroup.com), we've spent a great deal of time thinking about these needs. Our own open source frameworks Cylon.js, Artoo, Gobot, and Gort are where we are developing platforms that incorporate some or all 10 of these key characteristics.
We strongly encourage other framework creators, as well as device manufacturers, and those who work in closed source, to collaborate together to help establish a set of guidelines for industry best practices. We've created the RobotOps web site at http://robotops.com to help the community start to document and share our experiences.
Getting a handle on RobotOps now is absolutely essential to the successful adoption of the Internet of Things. Working together as an industry, we can help to accelerate the adoption as well as to improve the experiences of the users that this new generation of devices is intended to serve.