Configuration and Change Management.

Introduction.

Changes are inevitable in any projects or products life cycle. These changes have effects on various aspects of the project or the product ranging from delivery schedule to the project budget, from product scope to user specifications. Since change is inevitable, how it’s handled becomes of paramount importance. This handling of change in a project is what is referred to as change management.

When it comes to software projects, these changes may affect the product settings. Here is where configuration management comes in to ensure that the product remains functional despite the changes.

What is Configuration and Change Management?

Change Management: Change Management refers to all the steps put in place to ensure an organisation or a project can handle and absorb changes without having a negative impact. Change Management focuses on how change affects the whole process.

Configuration Management: Configuration Management (CM) can be described as a system engineering process aimed at maintaining the physical, logical and functional consistency of a system in a given environment. Configuration Management (CM) focuses on how changes to the product should be handled as well as setting up a way to track and monitor these changes. This just means that we manage all the configurable elements of a software and the environment on which it runs and setup ways to monitor the introduced changes.

The main difference between Configuration and Change management is that Configuration management focuses on managing the configurable items and the state of the system, while Change management focuses on managing the changes that affect the whole process including the configurable items and the system.

Benefits of Change Management.

Change management has benefits to the whole process. These benefits are felt in different aspects of the whole project. From the staff and stakeholders, to the budget and planning phase. Some of these benefits include:

  • Careful planning helps to ensure that the change process is started and managed by the right people at the right time.
  • Planned change management allows you to include specific tasks and events that are appropriate for each stage in the change process.
  • Change management ensures that customers, suppliers and other stakeholders understand and support the change.
  • Effective change management supports a smooth transition from the old to the new while maintaining morale, productivity, and even company image within the staff and the stakeholders.
  • Change is a planned and managed process. The benefits of the change are known before implementation and serve as motivators and assessment of progress.
  • Change can be implemented without negatively effecting the day to day running of business.
  • Managed costs of change: change management helps to contain costs associated with the change.

Benefits of Configuration Management.

Now that we have an understanding of what configuration management is, lets take a look at the advantages of implementing it.

  • Cost effective: It saves cost for staffing and repair of the server in the case of failure and the need to repair or set up the server again manually.
  • Efficiency: It increases efficiency since most of the processes are automated as opposed to manual processes.
  • Ease of recovery: It ensures that the server can be easily brought back up in case of system downtime since there is a baseline for the server configurations and a record of all changes reports for the server.
  • Error reduction: It reduces the chances of errors since most of the processes are automated and do not require human interference.
  • Scalability: It makes it easy to scale infrastructure without having to scale staff since the processes are automated.
  • Consistency: It helps to maintain the consistency of the servers.

Tools for Configuration Management.

To implement Configuration Management you need the use of some specialised tools to achieve this. Here we will look at some of the commonly used and popular in use today.

CFEngine

CFEngine is one of the older CM tools. It‘s an IT infrastructure automation and Continuous Operations framework that helps engineers, system administrators and other stakeholders in an IT organisation manage IT infrastructure while ensuring service levels and compliance.

“CFEngine runs on C.C is a low level language which means that CFEngine has a small memory usage, it runs faster and has far fewer dependencies.”

Puppet

Puppet’s a configuration management tool that is used for deployment, configuration, and management of servers. Puppet has an annual report dubbed “State of DevOps”, which is one of the best resources for trends in DevOps.

“Puppet is built using ruby and it’s primarily model driven. The learning curve is less imposing, as compared to CFEngine.”

Chef

Chef is the other heavyweight in the CM and automation arena. It can be used to define Infrastructure as Code.

“Chef is also written in Ruby, and its CLI also uses a Ruby-based DSL. Chef utilizes a master-agent model, and in addition to a master server, a Chef installation also requires a workstation to control the master. The agents can be installed from the workstation using the ‘knife’ tool that uses SSH for deployment, easing the installation burden.”

Ansible

Ansible is an Open Source tool used for automation tasks such as configuration management, deployment of applications, orchestrating and provisioning of instances. Despite being relatively new, it has nonetheless gained a solid footing in the industry. In fact, it’s included in popular Linux “distros” such as Fedora.

“Ansible is developed in python. Currently their solutions consists of two offerings: Ansible and Ansible Tower, the latter featuring the platform’s UI and dashboard. Despite being a relatively new player in the arena when compared to competitors like Chef or Puppet, it’s gained quite a favorable reputation amongst DevOps professionals for its straightforward operations and simple management capabilities.”

SaltStack

SaltStack is an Open Source configuration management and remote execution application that implements “Infrastructure as a code”. It has gained a sizeable following despite being relatively new.

“Salt is also developed in Python. Salt is sort of halfway between Puppet and Ansible — it supports Python, but also forces users to write all CLI commands in either Python, or the custom DSL called PyDSL. It uses a master server and deployed agents called minions to control and communicate with the target servers, but this is implemented using the ZeroMq messaging lib at the transport layer, which makes it a few orders of magnitude faster than Puppet/Chef.”

Docker

Docker is a relative newbie that has taken the DevOps and software development world by storm. The key to Docker’s success is its lightweight containerisation technology which allows application to be ran in separate containers.

“Their technology deploys software applications with all the necessary parts in a container, thereby ensuring it will run on any Linux server, regardless of configuration and/or settings. Containers can be created, configured, and saved as templates for use on other hosts running the Docker engine ensuring that you can create more containers with the same OS, configuration, and binaries.”

PowerShell DSC

PowerShell DSC is Microsoft’s solution for CM. It is applied to Window’s Windows PowerShell 4.0, Windows PowerShell 5.0.

“DSC provides a set of Windows PowerShell language extensions, new Windows PowerShell ‘cmdlets’, and resources that you can use to declaratively specify how you want your software environment to be configured. It also provides a means to maintain and manage existing configurations.”

Considerations when choosing a Configuration management tool.

As you can see above, there are quite a number of tools for configuration management. Due to this when choosing a configuration management tool, there are a couple things to consider. Here is some things to help you make the decision:

  • Cost-effectiveness: How much are you willing to spend on the tool. This is a question between using a free (open source) tool such as Ansible, and an open-core one such as Puppet and Chef.
  • Integration: The tool should be able to integrate well with other tools that you are currently using or planning to use in the future.
  • Compatibility with your needs: Understanding the problem you wish to solve, ensures that your choice of tool is one that can serve you in that regard.
  • Learning Curve: Tools such as CFEngine have a very steep learning curve as compared to Ansible and Puppet. This should be taken in to consideration since the time it takes to level up on a particular tool affects the schedule of the project.
  • IT platform: The IT platform that you already have also determines what tool to get. A huge an complex IT platform would require a tool that is optimised to work in such as a situation, and vice-versa.

Conclusion.

Change management and Configuration management are very critical aspect of any project, and more so a software project. These two are complimentary of each other and failure to pay attention to either one can lead to very disastrous outcome. A well-known example of a configuration management failure occurred in the 2010 Deepwater Horizon offshore drilling rig fire. Contracting partners thought they each had their respective change management responsibilities covered without taking into account the broader implications of systems level configuration management implementation. A lack of controlled engineering documentation and maintenance record distribution to equipment designers, owners, operators, and maintenance teams was identified as a critical contributing cause to the accident.

References.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store