How dynamic configuration can avoid the butterfly effect of app changes

Configuration changes on complex apps allow companies to react faster to changing conditions or create less stressful feature or product launches

istock 1091631612
Gwengoat

In the world of chaos theory, weather forecasting, and science fiction, the “butterfly effect” is a popular way of stating that a small change in one state of a complex system can result in large differences in a later state. This concept has been used to great effect in movies and TV shows, as well as to explain why a snowstorm that was predicted in your hometown resulted in rain instead.

Avoiding the butterfly effect can also be applied to app development, especially when dealing with large, complex and distributed applications written with millions of lines of code. In this case, a typo or other error in one line could result in catastrophic results down the line. Companies have mainly dealt with this through a process of continuous integration (CI) and continuous development (CD), one of the best practices in an agile methodology for DevOps teams.

But application configuration methods have not been as easy to manage, with many configurations loaded as an application initializes, remaining the same until an app restarts. But managing configuration can also be a powerful tool when responding to dynamic live environment changes, such as the start of a Black Friday sale on an e-commerce website, or providing premium subscribers access to a new TV show on a streaming site. In addition to CI/CD principles for applications, continuous configuration (CC) practices are also required.

Amazon, which sees large-scale events such as Prime Day, Black Friday, and the holiday season, has a process to handle configuration changes from thousands of developers and hundreds of internal organizations within Amazon, thanks to AWS AppConfig. Initially developed internally, AppConfig was announced in 2019 as a capability within AWS Systems Manager to help customers benefit from the lessons learned by Amazon as it implemented its CI/CD/CC practices.

AppConfig supports three major capabilities that allow companies to adopt continuous configuration:

  • Configuration data is separated from the main code, with the ability to update quickly and store data separately;
  • Applications can fetch configuration from an external service;
  • Configuration changes are checked and validated before they are deployed gradually to avoid catastrophic results.

The main benefits of continuous configuration tools such as AWS AppConfig is that it allows for nearly instant release of a feature, without requiring the risk and time cost of a full application redeploy. For example, a common use case for feature flags is the ability to turn a feature on or off depending on a precise event – like the start of Black Friday. As volume explodes on Black Friday, vendors have to enable and configure features like analytics, payment validation and processing, inventory management, social media integrations, and much more. For example, a vendor may have to limit the requests made to an inventory database to avoid resources from being overloaded. Or prioritize deliveries to locations that can be fulfilled in time for the holidays.

More than anything else, having a configuration system that not only can instantly update configuration but also checks and validates changes before deployment occurs, can be less stressful during those big events.

“In that launch moment, when the stakes and stress levels are high, it’s scary to have to redeploy the whole software stack,” says Steve Rice, Principal Product Manager of AWS AppConfig. “It’s simpler to make a tiny little configuration change that turns on that feature.”

In this way, small changes that can be validated, deployed gradually and monitored can help companies avoid a catastrophic butterfly effect down the road.

To learn more about how AppConfig can help in continuous configuration practices, click here.

Copyright © 2021 IDG Communications, Inc.