of unnecessary Merge-Commits ➤ Big-Bang Merges of Features (all other work needs a rebase) ➤ Constant need to merge things between Branches ➤ Not really "Continuous" as in CI or CD ➤ Hard for new colleagues to grasp ➤ Frontend Branches needs to be in sync with the Backend Branches ➤ DB Migrations are a serious problem ➤ Lots of work to move Features, less time to Develop THE CURRENT SITUATION - PROBLEMS
billion € in revenue ➤ ~12 crossfunctional teams with ~10 people each ➤ decoupled self-contained Micro-Service Architecture ➤ each team owns parts of the website (PageAssembly in front) ➤ more than 3 UAT environments ➤ approx. 70 independent releases per day ➤ Fail-Forward strategy for bugs
or Changes, Fixes are urgent anyways ➤ propagated to the Client-SPA via early api request ➤ they are basically just cookies in the frontend ➤ enable features for all, self or special users/ groups FEATURE TOGGLES - WHAT
➤ https://github.com/ bassdman/vue-feature- toggle ➤ must be immutable (so no one gains access to unreleased features) <toggle isActive="FOO"> <my-new-component/> </toggle> <toggle isInactive="FOO"> <my-old-component/> </toggle>
non-breakable migrations ➤ the old code should still work with the migration applied ➤ a additional table or field is no problem ➤ remove/rename fields/tables only once the feature-toggle for the code is removed (the feature is live) DB EXAMPLE
for all environments (all ENVs contain the same code) ➤ make small but consistent commits ➤ everybody gets everyone else changes quickly ➤ you can skip one UAT environment (DEV would be enough) ➤ real CI/CD as every commits lands on PROD ➤ DEV has all toggles active, PROD all inactive by default ➤ faster "time to delivery" of features (ship early, ship often) ➤ no DB Migration Problems FEATURE TOGGLES - PROS
a proper commit history and SemVer Releases ➤ no real Feature-Releases, instead a constant flow of features (good for customers) ➤ constantly shipping more code than needed (old & new) ➤ more Asset Invalidations -> Code-Splitting should be present ➤ a good Test-Suite should be present (Integration Tests) ➤ as proper reviewing is hard, its best to develop in pairs ➤ Reviews & Refactorings can be done afterwards ➤ some Features might be hard/impossible to toggle FEATURE TOGGLES - CONS