I am looking for advice on the best way to facilitate beta testing of feature enhancements (i.e. not totally new features which are much easier) in a live Saas app (shared code and one database) without negatively impacting the customers experience?
For example, today we do process A in a certain way but we need to change or enhance the way this is done - we develop and test the change internally and we are happy that it works as expected but now want to get some real customers using it before making it available to all.
As this is a replacement of the current process, if we simply turn it on for everyone there is a small risk of data corruption/loss and a larger risk of a poor end user experience if it does not work as they expect so how can we allow testing by customers in a live environment with minimal risk?
My current thinking is to create a demo account for each customer with sample data preloaded and then in the code add a check for the demo accounts and, if the user matches the demo list, do process B otherwise continue to do process A?
Twitter, for example, seem to be able to easily roll out new features gradually to users in a controlled way rather than in a big bang - I assume they originally designed their system to accommodate this but are there better ways of me doing this without re architecting the whole environment?