Title
AWS re:Invent 2022 - A deployment is not a release: Control your launches w/feature flags (BOA305-R)
Summary
- The talk focused on using feature flags to control the deployment and release of new features, allowing for experimentation and feedback collection before a full release.
- The speakers, Seb and Olivier, emphasized the difference between deploying and releasing, highlighting that deployment can occur well before the actual release to customers.
- They discussed the concept of feature flags, also known as feature toggles, and their use cases, including releases, experiments, launch control, and canary testing.
- A demo was presented using two AWS services: Amazon CloudWatch Evidently and AWS AppConfig, to show how to implement feature flags in a web application.
- The demo included creating a project, adding a feature, creating a launch, and monitoring the feature's use by customers.
- The speakers also touched on the importance of testing, observability, and cleaning up the code after a feature is fully deployed.
Insights
- Feature flags allow for a decoupled deployment and release process, enabling safer and more controlled feature rollouts.
- AWS AppConfig is designed for safe configuration distribution and is ideal for controlled rollouts with automatic rollback capabilities.
- Amazon CloudWatch Evidently is suitable for running experiments and A/B testing over a longer period.
- The use of feature flags introduces additional complexity, such as increased latency, the need for more testing, and the potential for code clutter if not managed properly.
- AWS provides multiple ways to implement feature flags, and the choice between AppConfig and Evidently depends on the specific use case and requirements.
- The speakers highlighted the importance of planning for code cleanup post-deployment and suggested using mechanisms like automatic ticket creation to ensure this step is not overlooked.
- The demo application was kept simple and used AWS SDK for JavaScript version 3 and TypeScript to focus on the feature flag implementation without additional libraries or frameworks.