Application updates are a necessary part of the continuous development lifecycle for many businesses. With thousands or even millions of lines of code in a typical complex app, chances are slim that everything will work exactly as planned, requiring small tweaks and fine-tuning to the application.
Traditional approaches to app updates include restarts and mass deployments, which may require downtime that can make things worse. This can create massive amounts of stress for developers, especially when apps are updated for a new product launch or major event, such as a Black Friday sale where uptime is critical.
“Developers get really excited when they are launching a new feature because they want to get it out to customers and can’t wait to hear what they have to say, but in reality shipping is very difficult,” says Steve Rice, principal product manager of AWS AppConfig. “Going in and making little tweaks can be nerve wracking, because sometimes you want to change one little thing and you forget that it actually breaks in 12 other places because something was hard-coded incorrectly.”
Taking the dread out of application updates was a driving force of AWS AppConfig, a component of the AWS System Manager. The tool lets developers make configuration updates to large, complex applications without having to constantly update and redeploy the application’s main code. This can be critical when working with large, planned events such as a major product rollout, but can also be helpful when unexpected traffic surges require tweaks to the app to keep it up and running.
AWS AppConfig separates configuration files from the main part of an application, allowing developers to make changes to configurations by toggling items such as on/off feature flags, or control levers that let teams monitor how many visitors can access the app (boosting limits during high traffic periods). When the main app can just check with the configuration file for any updates at runtime, developers can make changes without having to constantly update the main code and bring down the app.
Another stress-reducing feature of AppConfig is the ability to test and validate any configuration changes before they are deployed. Validation gives developers a first line of defense that tells them their configuration changes are good before deployment. Second, AppConfig allows companies to roll back any changes during deployment should any errors be discovered by the main application. By integrating AppConfig with CloudWatch alerts, for example, a deployment can be rolled back automatically to a previous version to help keep the application running.
Before it was released to AWS customers, AppConfig was a tool that assisted (and still assists) Amazon internal teams with their own application updates, allowing the company to operate at scale.
“AppConfig gives our internal teams the confidence to know that updates will be successful, and in the worst case if there is an issue, we can roll back and it will be like nothing ever happened,” says Vinni Satija, a product manager for AppConfig. “External customers can now have the same level of confidence when they deploy something across their fleet of servers, no matter where they are across the world or how big their fleet is. For new customers who are going to get to that scale in a few years, they can definitely start small and get there with AppConfig, so they don’t have to dread those updates.”
To learn more about how AppConfig can help in continuous configuration practices, click here.