In addition to Automated Builds, Highly Configurable Software utilizes Automated Deployments to further increase productivity and scalability. Automated Build Processes create a singular deployable artifact for all environments that does not require further modification. A singular configurable artifact produces horizontally, scalable deployments that follow industry DevOps best practices.
The singular deployable artifact must require no additional modifications, such as unpacking it to switch or modify file(s). As an example, let’s assume that an application is deployed onto one-thousand different servers. Instead of applying custom configuration across each instance of the deployed application, which will turn into multiple redundant build cycles, DevOps best practices enforce that one singular build cycle be used for all of those one-thousand servers. To use this singular deployable artifact across many environments, it is recommended to use a centralized repository management solution that stores each version of the resulting artifact. This creates a centralized location where automated deployment systems can find and use these artifacts.
Though keeping deployable artifacts to a singleton is a must, it is also important to properly maintain your key configuration points (KCPs) as well. As the number of servers or environments grow, the number of KCPs should not grow linearly. Each new environment may incur some subset of new KCPs, but the number should not grow at an order of magnitude. Linear growth is usually a sign of one of the common pitfalls when declaring KCPs, discussed here. For example, if the application starts with five hundred KCPs, adding a new server should not add another five hundred KCPs. This does not scale as the deployment environment grows and is an indicator that KCPs are being blatantly duplicated. Remove these duplicates and re-evaluate which ones are needed for maintaining the application.
Following DevOps best practices in addition to Highly Configurable Software concepts, automation streamlines builds directly into deployable artifacts. Automated builds meant for many different environments can be automatically deployed and maintained to further increase productivity of development teams. Repeatable, dependable builds and deployments eliminate any human errors and save time via automation.