Question

I'd like a platform to roll out Beta functionality to a small subset of my websites users. I'm not sure what the best practice is for doing this and looking for your suggestions.

Option 1 :The first option i considered was creating a non-production environment which would mirror the live application. I could then supply users with a new beta DNS where they can sample latest features. The downside of this approach is maintainability and reliability. Data from the production environment would need to be refresh to the Beta database to ensure the user experience is consistent with production. Because this Beta environment would be in a non-prod infrastructure it would be more liable to outages as a result of continuous builds etc.

Option 2: Deploy an additional server to production, use a beta sub-domain to direct users to the site. No issues here with stale data as it could point to the same sources as the existing production environment. The downside is that releases to the live production environment would be less frequent to preserve application stability and reliability and it is an extra node to maintain for a production support team.

Option 3: Deploy the Beta functionality as part of the main code branch and have logic in the code to display the Beta features for certain users. This approach requires implementing Beta changes in stable code , releases are less frequent and less flexibility with the types of changes which can be tested without effecting the stability of existing code base.

Any suggestions from past experience on how i should proceed?

Thanks

Was it helpful?

Solution

Use option 2). You want to isolate the beta code as much as possible from the production code, and this way if worst comes to worst and the beta code crashes the server then the beta users will just fail over to the production server.

With 1) if your beta environment is too unstable then users simply won't use it. With 3) you run the risk of tainting the production code.

Most of my experience with this sort of thing has been with Amazon AWS, where getting a new "server" is as easy as getting a new EC2 instance. I'm assuming that it's not too costly for you to set up a new server.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top