CI/CD on the Edge — Part1

Edge software development: background and challenges

Ashish Kaul
NATIX
5 min readAug 26, 2020

--

What is Edge software development?

To answer this question one first needs to define Edge or Embedded Systems. Unfortunately, there is no standard definition of what these are. They can range from tiny devices such as power windows in cars and stereo amplifiers to sophisticated systems such as smart homes and airplane control systems. A characteristic feature of such devices may be that some or all of their interfaces are invisible and largely machine-controlled rather than human-controlled [1]. In this sense, embedded software development can be thought of as writing programs for devices that are not considered computers and those programs are specialized for that particular hardware with time and memory constraints [2]. Contrary to this, software development relies heavily on human interaction, such as an application on a mobile device or the finance infrastructure of a large bank.

IoT and Edge Computing

The Internet of Things (IoT) has been defined in Recommendation ITU-T Y.2060 (06/2012) as a global infrastructure for the information society, enabling advanced services by interconnecting (physical and virtual) things based on existing and evolving interoperable information and communication technologies [3].

In simpler words, it can be thought of as a system of interrelated computing, edge devices that have the ability to transfer data over a network without requiring human-to-human or human-to-computer interaction. Often synonymous with “smart-home” devices, IoT is not restricted to them. The things in IoT can range from a heart monitor implant to the cruise control sensor in a car.

One of the challenges of IoT is the processing of the accumulated data. Usually, IoT devices are expected to transfer data to a centralized processing unit, usually a cloud system, which can then analyze the data. The challenge with this architecture, as pointed out in the IEEE journal article “The Emergence of Edge Computing” [4], is the proximity between devices and the cloud processing unit. Proximity poses the following challenges:

1. Data congestion on the network due to an increase in data ingestion units [4].

2. Poor connectivity due to physical distance which results in latency [4].

3. Cloud processing unit becomes the single point of failure [4].

Although these challenges could be mitigated with sufficient effort and resource investment, there are certainly limits to this approach. The solution to these IoT system problems is processing data near to devices on the edge of the network. Being the first point of contact in the infrastructure for IoT sensor data, an edge device can enforce the privacy policies of its owner prior to the release of the data to the cloud. The bandwidth demand for IoT devices such as video cameras is considerably lower if the raw data is analyzed at the network periphery and only metadata is transmitted to the cloud.

Challenges with Edge Software Development

It is clear that DevOps is about breaking the silos between the development and operations teams. Also, the continuous integration, delivery, and deployment are the phases that fall under the purview of operations, according to traditional IT. Before talking about process improvements and existing works, the challenges faced by edge software development need to be established.

  1. Library and Package Management: According to IEEE 2018 programming language survey, Python, C and C++ are the top 3 programming languages used for embedded software development [5]. Of these, C and C++ have their library/package management dependent on the compiler being used which in turn depends on the provider of the said compiler. Only Python has a central library/package management solution in place.
  2. Testing: Although there are provisions in various languages for testing software components, there are no provisions for testing hardware components automatically. For example, test cases to verify device systems like LEDs, displays, etcetera. These are still done using emulators and simulators.
  3. Deployment: With the advent of edge devices, over-the-air (OTA) deployment has become desirable for edge devices. Ralph Nguyen, the head of sales and community development at mender.io, quotes an example of how Fiat Chrysler had to recall 1.4 million vehicles for critical security updates and it was done manually [6]. According to Ralph, OTA updater is one of the major costs associated with product development and, if not robust and secure, they pose a serious threat to the business and the devices [7].
  4. Management: Agile project management is still not widely used in the edge development space. A literature review and mapping study on agile methods for embedded development [8] also found that the methods and practices need to be fitted to different situations.

With this information available, these questions should be answered:

  1. What are the available options to project teams working on edge development that would save time dealing with the above mentions challenges for them to be able to focus on developing the product?
  2. Could these teams include their hardware as part of their CI-CD implementations so as to shorten their feedback loop and find issues as early as possible?
  3. Is there a generic solution available to address these concerns?

In future articles, we are going to investigate these questions.

References

[1] Was ist embedded software?, Feb 2020. [online] https://web.archive.org/web/20130324010208/http://www.ics-control.com/embedded-software.html accessed 09-Feb-2020.[2] Bjarne Stroustrup. Abstraction and the C++ machine model. In ZhaohuiWu, Chun Chen, Minyi Guo, and Jiajun Bu, editors, Embedded Software and Systems, First International Conference, ICESS 2004, Hangzhou, China, December 9–10, 2004, Revised Selected Papers, volume 3605 of Lecture Notes in Computer Science, page 2. Springer, 2004.[3] Internet of things global standards initiative, Mar 2020. [online] http://handle.itu.int/11.1002/1000/11559 accessed 22-Mar-2020.[4] M. Satyanarayanan. The emergence of edge computing. Computer, 50(01):30–39, jan 2017.[5] Interactive: The top programming languages 2018, Feb 2020. [online] https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2018 accessed 09-Feb-2020.[6] Foss project spotlight: Mender.io, an open-source over-the-air software update manager for iot devices, Mar 2020. [online] https://www.linuxjournal.com/users/ralph-nguyen accessed 22-Mar-2020.[7] Ralph Nguyen and Eystein Stenberg. Software Updates for IoT and the Hidden Costs of Homegrown Updaters. Technical report, mender.io, 01 2018.[8] Matti Kaisti, Ville Rantala, Tapio Mujunen, Sami Hyrynsalmi, Kaisa Könnölä, Tuomas Mäkilä, and Teijo Lehtonen. Agile methods for embedded systems development-a literature review and a mapping study. EURASIP Journal on Embedded Systems, 2013, 11 2013.

This article is part of a series called “CI/CD on the Edge” (part 1, part 2) which has been extracted from the author’s thesis submitted for a master's degree at the University of Applied Sciences, Kiel.

Note: For the purpose of this article, the word “embedded” has been interchangeably used with “edge”

DISCLAIMER: This post only reflects the author’s personal opinion, not any other organization’s. This is not official advice. The author is not responsible for any decisions that readers choose to make.

--

--

Ashish Kaul
NATIX
Writer for

A software engineer with MS in information engineering. Currently working in Germany