DevOps: Working with Separate Environments to Minimize Downtime

As the role of DevOps becomes more and more prevalent in the world of automation and industrial SCADA/MES/IIoT software, one of the first steps that should be taken into consideration is setting up different levels of environments for your developers to utilize. 

Why?

The easiest answer to this question is to prevent downtime from a poor deployment to production.  Each level will add testing confirmation and check-offs that should be completed prior to the next step.  The goal is to eliminate as many bugs or defects before your development is deployed into the actual production environment. If a bug is found in your test environment, the code can simply be sent back to the developers to fix it before letting it move on.

DevOps tools that can help

Automated Unit Testing

Make sure your industrial software supports automated unit testing in some way, this will help catch some bugs before it even reaches the next environment. An example of unit testing can be found in this blog: High-Speed Programming

Vagrant

Vagrant is a software that is used to create and reproduce identical environments so that you don’t run into the issue of ‘Works on My Machine’.  There are two benefits of utilizing Vagrant:

  1. All the developers are running the exact same ‘stack’ of software
  2. Your DEV, TEST, PROD environments can be configured to be 100% identical

Git

Git is valuable in this set up to make sure that the code that is in one environment is in all the environments. When a developer makes a change and pushes it to a repository, all other developers can be notified of this change and can then pull down the code. This will help prevent two developers from having different code when trying to deploy it PROD.

BONUS: Version control!!

Jenkins or similar

Jenkins is an open-source automation server that can be used to help automate projects.  Jenkins’ main purpose is to eliminate manual processes, consequently preventing errors from occurring, think of it as Automating your Automation.  Below is a possible workflow using Jenkins and GitHub.

Downsides

Cost

The cost could be the major player in deciding not to use separate environments. Every environment will cost additional money to configure and implement, along with the development cost to run a proper process. On the flip side, depending on the critical nature or the scale of your project, this DevOps set up could prove to be invaluable.

Culture

Culture will be another major factor in setting up multiple environments.  To keep these systems separate, gatekeepers need to be put in place to make sure a process is followed.  Following a development process may pose its adoption challenges.

Even with these downsides, the benefit of preventing many downtimes should outweigh any possible complaints.  To learn more about other DevOps topics check out our other blog posts:

Is TDD the future of SCADA/MES Development?

DevOps: 6 Steps to Integrate Git into WinCC OA

DevOps: High-Speed Programming Unit Tests

If you’re interested in KAASM setting up a test environment for you? Contact us for a Digital Transformation engagement.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top