Devops for flexible embedded software development and deployment

No matter how similar sorting tasks are in the food industry, there will always be subtle differences between them. Kapernikov helps Optimum Sorting to manage the software development and deployment process for their optical sorting machines by using modern devops methodologies.

Challenge

Optimum Sorting designs and builds optical sorting machines for the food industry. Although the sorting problems that their customers encounter are similar, there are subtle differences. In order to meet each customer’s specific need, Optimum often makes custom versions of their sorting machines’ software.

This flexibility makes quality assurance and traceability a real challenge to their software development and deployment process, especially when software developers and field technicians add features at the customer’s site.

Image courtesy of Optimum Sorting

Role

Kapernikov created a containerized build system for all modules and target platforms in use (Linux on x86-64 and ARM for the embedded software and Microsoft Windows for the GUI). We added a Continuous Integration (CI) pipeline to the version control system to make sure there is a reproducible build for every commit, even when working at the customer’s site.

Unit tests and integration tests are added to the CI pipeline, starting with newly developed code, to ensure that updates don’t break existing features. This makes merging new features and bug fixes to customer-specific branches safer.

Results

Optimum Sorting is in full control of the build and deployment process. They can install custom software on customer’s machines and perfectly reproduce these specific versions when necessary. Automated unit testing and integration testing make it possible to quickly roll out new features and bug fixes to all customers, even to those who are using custom versions of Optimum Sorting’s software.

Applied solutions

Devops for AI and data sciences
Digital support for maintenance workers

Technologies

Docker Containers
Cross platform building

Unit testing
GitLab CI/CD pipelines