3 ms·
Forrst Blog: How we deploy new features on Forrst
- zalew 16y agoThis idea is also well explained here: http://news.ycombinator.com/item?id=1463751 http://news.ycombinator.com/item?id=1463751
- technoweenie 16y agoHow do you modify the buckets? Do you have to tweak a config file and push it out to your servers?
- kylebragger 16y agoRight now, yes. Deploys happen frequently enough and are sufficiently fast that I can get something disabled globally in under 30 seconds. The next iteration of this stuff I'm building now; goals are standalone library, more DRY, and some kind of simple web UI where I can do the global enable/disable actions. I'll likely stick to manipulating buckets in config files for the foreseeable future; it's being able to mass-enable/disable that I need to refine.
- technoweenie 16y agoI've started using Redis key/set operations for things like this at GitHub. The nice thing is that these techniques are all simple, and it's easy to modify to fit your evolving needs.
- kylebragger 16y agoYeah, I definitely considered using Redis too; I'd be able to leverage web UI for even stuff like adding/removing users from buckets. How are you handling with persistence? I presume backing up the dump.rdb file frequently? I'd be a shame to lose any of the data (though I'm probably being overly paranoid)
- technoweenie 16y agoWe were already using Redis and had an existing backup plan. Though if you're using Redis solely for feature rollout, you can likely get away with it failing gracefully in case the server is down.
- kneath 16y agoUsing a combo of the append-only file[1] and a redis slave[2] you'll get about the best durability one can ask for in today's world (assuming you're aware of the gotchas with regard to expiring keys — an edge case). [1] http://code.google.com/p/redis/wiki/AppendOnlyFileHowto http://code.google.com/p/redis/wiki/AppendOnlyFileHowto [2] http://code.google.com/p/redis/wiki/ReplicationHowto http://code.google.com/p/redis/wiki/ReplicationHowto
- didip 16y agoWe are using Redis as well. The C code is small, compilable anywhere, and has very small memory footprint when started fresh. Redis has replaced Sphinx as our tag indexer (thanks to its ordered sort) for more than 2 months now. It has never been down. Backup procedure is the same as our MySQL's, tgz the .rdb file to S3 daily.
- sync 16y agoWouldn't this make debugging and (manual) testing so much more difficult?
- kylebragger 16y agoHow so? I'm not sure I follow...
- technoweenie 16y agoNot really. You just add extra tests for your new functionality as usual. If you're replacing old functionality, you'll have duplicated tests until the feature is rolled out for everyone. I think the key is being able to tell if bug reports are related to an activated feature. For instance, our error tracker tells us which user account triggered the error. From there, we can see what new features they have enabled, and factor that into our debugging.
- patio11 16y agoFeature flags are essentially identical to operating A/B tests in this respect, right? I have a magic button which logs me in as a target user, and it reproduces exactly what they would see, including the results of A/B tests. This helps to reproduce unanticipated interactions between tests. (This has only happened maybe twice, but they were doozies.)
- godel 16y agoI really don't see Flickr's (or Forrst's) approach a "trick" or feature. I think most deployment techniques come out of a desire NOT to deploy like Flickr(or Forrst).
- justin 16y agoWhere can I get an invite? I applied on the site but haven't heard anything and I can't wait any more!!!!!
- mhunter 16y agoe-mail me mjhunter [at] gmail