by Uwe Meding
Building a groundbreaking Internet of Things (IoT) system is only the beginning: unless you successfully install the IoT system in the production environment, your customers will never taste the fruits of your labor.
Imagine you and your team are anxious to roll out the latest version of your IoT system or application. Despite the the high reliability, outstanding functionality, or enhanced usability you have built into the product, your customers will not recognize your job as complete until the application is successfully deployed in their environment.
The deployment process is one of the most painful and misunderstood phases in the development of an IoT product. Often an afterthought to the main development activities, the deployment phase is actually so critical that it can cause a technically perfect project to fail. The truth is that a customer pays for what he gets, and the IoT customer pays for a working application in his production environment.
Identify the Customer’s Change Management Policies
Most large customers have strict change management policies. The more critical your IoT application is to a customer’s business, the more rigid those policies may be. These can seriously affect the deployment process, restricting the number of delivery stages or requiring the all deployed artifacts be audited — to name a few potential risks.
Identify customer policies for roll outs, change management, and deployment early. This will help you avoid surprises when your team starts the actual deployment activities.
Define the Delivery Process
How will you deliver your IoT system? Will it be a single deployment? Will you have staged deliveries? Will you have a main development and successive increments? How many increments will you have? In any case, the delivery process the customer allows must be identified and conciliated if necessary.
Define clearly what the kind of deployment and delivery process you will use and negotiate with your customers to see if they will support it or not. Defining you delivery process will also determine how your product packages and deployment documentation are built.
Identify the Deployed Artifacts
Most IoT systems are composed of multiple parts — a Web-client, a business server, remote sensors/actuators, data acquisition systems, and so on. Coordinating these separate pieces can be a difficult task, and forgetting to include a particular component in an installation can mean, in the simplest case, that you cannot provide users with those features until the next roll out. In the worst case your system will not be operational and will need additional changes and updates.
If a customer’s change policies are very strict, this may entail a significant period of time during which the users will be dissatisfied with your IoT system.
Before trying to build an installation package, be sure to identify all the artifacts that may comprise it. For each installation package you build, identify which artifacts are going to be deployed. For a single deployment process, all parts are deployed in each roll out; on the other hand, a staged delivery process may involve deploying only some parts of the IoT system in each roll out.
Set Up a Deployment Team
IoT deployment is a business operations process: you have to build an installation with all the features required for a particular roll out. This entails, of course, coordinating the deliveries of all IoT components, ensuring that the integrated system has all the correct component versions and promised features. Therefore, a deployment coordinator is an essential component of your team.
Do not underestimate the complexities of integrating the application for installation. Put a deployment team or at least a deployment manager in charge of integrating the parts the comprise the entire installation. Have the deployment team review the final installation with the involved stakeholders — managers, functional analysts, and customer representatives — to ensure that no promised feature is left out of the installation package.
Identify the Customer’s Team
Although you have your own deployment team organizing the installation packages, there are a typically a number of steps that have to be performed by the customer’s own IT personnel. Actually, for an IoT system roll out, the customer may assign a deployment team or at least one person in charge to oversee the installation.
Who is the person in charge on the customer’s side? Is he knowledgeable about the technology involved in the application deployment? Has he installed similar applications before? Do you know this person from previous roll outs? Is he a responsible professional? What is his relationship with you and the customer? All these questions affect the final outcome of your deployment activities.
Get to know the person on the other side, since he determines not only the structure and sequence of the installations, but also the amount of extra work you will have to do to get the application running. Also ensure that your local deployment team contacts the customer’s team early, so your team can start planning to prepare an adequate number of installation units.
Identify the Customer’s Environment
One of the first issues negotiated with customers at the beginning of the project is the environment requirements. However, once the customer confirms that he has the right equipment, or network connections, this issue is soon forgotten. But even if the environment is compatible, there are often overlooked issues that are critical for the IoT application to work.
The customers restrictions can be so stringent that they not only affect the deployment itself, but also indirectly influence the way you develop the IoT application. For example, it is not uncommon for a customer to specify technologies (encryption, network connections). This is why you should understand the customer’s environment very early in your IoT application development process.
Early in the project, make sure that no customer constraints are present in the application. Also take note of each technological issue that may pose a problem and either negotiate its resolution with the customer or take appropriate action to avoid it.
Organize the Installation Package
The installation package is analogous to the shrink-wrapped box. It includes everything required for the product installation. The package should be organized in such a way that the person in charge can recognize what all the parts of the package mean and how they relate to each other, and determine if something is missing. Moreover, if you are doing a staged deliveries, make sure to adopt a part-naming convention so that the person in charge does not have to guess each time what each part means.
When delivering the application for installation, provide a structured package whose components have been defined well in advance. If the deliveries are staged define the structure of the packages and make sure the final product conforms precisely to that blueprint
Set Up a Deployment Test Environment
The deployment package requires as much testing as the application itself. Each time you prepare a package for deployment, you need to test the package to ensure that it installs the IoT application correctly. Your deployment test environment should resemble the anticipated production environment for these tests.
Before delivering your IoT system for actual deployment, make sure that the deployment packages you deliver are complete and correct. Before delivery, test the parts in an environment that mirrors as closely as possible the customers’ environment.
Write Installation Manuals
In most cases, the customer’s team does not know how to install the IoT system, and no matter how organized your installation package is, you will have to provide them with instructions. The installation manual not only explains each detail of the installation, but also mentions all the parts of the package that should be present before starting deployment, as well as every possible detail that must be considered by the installation team.
Write installation manuals or guides for every deployment package you deliver. The manual should provide enough detail so that the customer’s installation team can install the application properly.
Keep Configuration Information on Each Installed Artifact
Your IoT system is in production — but that is not the end of the story. As soon as normal usage begins, defect reports and enhancement requests will start coming in. To deal with these effectively, you must be able to retrieve manifests and deployment versions so that you can reproduce errors detected in production, and apply and test enhancements.
Always keep configuration information about each artifact you deploy. It is highly likely that you will have to reproduce errors and track defects detected in production, so you will need all the details of the installed products.
Document the Deployment Process
Your deployment procedure must be formalized so that you can always rely on your document to know what to do next, who to contact and what else must be done before the IoT application can be delivered. A documented procedure also ensures that the package can be prepared by almost anyone on your team; if you rely on a single person who knows the procedure by heart, you will be in serious trouble if this person is out sick on installation day.
Make an ordered list of all the activities that must be performed and use it as a checklist. Also, document all the information you have about the deployment environment, including the customer-side contacts.
Even a failure has something to teach us. Not every deployment will be completely successful, and partial or absolute failure is always a possibility. But you can learn from your mistakes so you do not have to repeat them again. After all, the development process is a process, and like all processes, can benefit from improvement.
Just as you documented your deployment procedure, identify and record your mistakes. A good place to document them is a postmortem report. After that, package your experience in a checklist so that future deployments avoid these known no-nos.
A successful deployment is what makes a project successful. It is not enough to have a groundbreaking system — if the customer cannot appreciate its benefits, the application is a useless as a technical lemon. Remember — an unsuccessful deployment can damage your team’s reputation as much as a low-quality application can.
Start planning your deployment activities as soon as the project starts, and check that everything is under control as the deployment date approaches. If you follow these steps for successful deployment, your deployment will be as successful as your IoT application deserves.