Managing how the pieces of your software and service work together allows you to build a stable, scalable and portable system.
It’s important to do this because your system is likely to be much larger than a single application relying on other supporting infrastructure components.
Even if your system is a simple application, it still probably requires configuration, for example providing database credentials or a web service endpoint.
Using configuration management tools
Configuration management tools will help you to document and maintain the configuration and dependencies of your software system.
You can do this using handmade software but it’s more common to use existing open source tools, for example:
Use infrastructure as code
One way you can manage configuration is by using code to describe the configuration and software dependencies. (Dependencies are the things your software needs to do what it’s supposed to do.)
This approach brings all the advantages of programming in general and allows you to:
- test your code ability
- reuse your code
- document your infrastructure
Once written in code, the infrastructure configuration is then run against the servers, networks and software in question.
Build for portability
Moving software systems between providers can be difficult and time-consuming. If you don’t consider portability, it’s possible to lock yourself in with a provider.
Configuration management gives you a deep understanding of the configuration of your system - you can use this knowledge to easily move software between providers.
Use the same development and production tools
A common software systems problem is that code which was written by a development team works on their machine or test environment but not in the production environment.
This is often caused by differences in:
- application servers
Avoid this problem by using the same tools for your development and production environments.
You may also find these guides useful:
Guidance first published