You are currently viewing How CI/CD makes development better for IoT teams.

How CI/CD makes development better for IoT teams.

With technology moving at a more rapid pace than ever before, it can be difficult for developers to keep up with competition, but teams practising CI/CD can meet these challenges head on. Previously when devices had little to no connectivity, developers would often work on a single module. They then only integrate their work onto the system late into development.

With the explosion of the Internet of Things, connected devices are now the new normal and provides new opportunities for the development process. One of the most important opportunities being adopting CI/CD. It provides distinct advantages in terms of teamwork, which we will explore in this article.

The old embedded development model

Many IoT companies follow the traditional model, where developers are siloed off and code is not integrated together until very late in the process. This results in many difficulties:

  • Often developers maintain their own environments, such as a workstation or a virtual machine on a server. This results in developers making different assumptions about what the production environment will look like. Then there is mass confusion when trying to create a single environment for release.
  • Developers create unit tests for their specific sections of code, but do not bother to test how their code will interact with the system. This causes nasty system level bugs that only occur at the end of the project.
  • The need for devices may suddenly ramp up towards the end of the project. If we wait till the end of the project, there will be a massive need to run many tests to check systems are working. If no devices are available, development may stall.
  • Test environments are often manually created and maintained by a single engineer. This engineer then becomes the gatekeeper of the entire project.

Explaining what is CI/CD

CI/CD stands for Continuous Integration (CI) and Continuous Deployment (CD). In a nutshell, CI is the process of continually contributing, building, and updating a central code repository. Continuous Deployment is then the process of automatically taking the built and tested package and distributing it in a live environment.

The major advantage of the IoT over traditional devices is the connectivity. Not just in terms of being able to send and receive data from the Cloud, but also because devices can be tested and updated, whilst being deployed in the world around us.

A better way of developing for the IoT using CI/CD

This shift in possibilities means developers need to also change how they develop as a team. Devices now have the capability of being rapidly updated, but it needs to be done in a safe and secure way that does not compromise the quality of the code.

Continuous Integration is a powerful way of solving this challenge. The team is always contributing towards a single codebase that is built and tested as regularly as possible. This means that:

  • Teams have a single environment that is the source of truth for development. No more ‘but it worked on my computer.’ If it does not pass the shared test environment, the code contains errors.
  • System-level tests run from the very beginning of the project. Developers can see the impact of their code on the entire system and are never left with a nasty shock at the end of the development period.
  • Since system-level tests are created early, it is far easier to predict how many devices are needed for a testing system. It is less likely developers are left waiting for another device to become available.
  • Test environment are everyone’s reasonability. There is no gatekeeper that determines the success of the project. Developers own their errors and solving them without needing to wait for someone else.

Combining CD with CI

When we combine CI with CD, the effects are even more beneficial. A robust CD system can ensure that updates to devices occur effortlessly and smoothly. By having powerful automation in place, any code contributed towards an update can not only be tested to ensure proper functionality, but also that it is safe, by checking for security flaws.

As projects mature, the devices only become safer. Each developer contributes to a growing testing suite that ensure both new and old features are checked. This means that teams are never left wondering if that new feature has bricked devices out in the field.

Conclusion

The promise of the IoTs connectivity brings with it new development challenges that engineering teams need to meet. Using CI/CD can help meet those challenges, by ensuring that developers are always contributing to the same codebase and testing environment.

Embedded development suffered from separating engineers from each other and only meeting together for final integration of a device that would suffer from system level bugs. That’s why we at Beetlebox are so passionate about providing a solution to stop development nightmares.

If you are thinking of experimenting with CI/CD for the IoT, why not explore how BeetleboxCI can help?

You can also check out our youtube channel for video resources for development.

Other resources

Leave a Reply