Release Management - releasing to a subset of users - how would it work for a public facing website

前端 未结 7 1915
长发绾君心
长发绾君心 2020-12-24 02:42

I read somewhere (sorry don\'t exactly remember the source) that facebook has release Tuesdays. They release the new features to their internal employees first, then to a sm

7条回答
  •  悲&欢浪女
    2020-12-24 03:41

    I was at QCon last year, when a guy from Facebook's Web Team was talking about it this approach. You are 100% correct that there will be code smells in order to implement that. But it takes a lot more than just a code smells (actually they call those code smells Gate Keepers :).

    First of all - their way of representing and storing data is a lot more sophisticated, they are not using Foreign keys, or any other "advanced" features of the databases at all :), as far as I remember, their data is not that "relational" as we all want to keep ours :).

    What you can do is add gate keepers (if (user is from New Zeland) { use then new version with the new classes } else { stick ot the old one }).

    You can probably imagine to what kind of code duplication will this lead in case of structured model (e.g. you will need to have 2 Users, 2 Orders, 2 Order Details). Leaving that aside, I think a lot of regression will also take place if you don't be extremelly careful.

    As far as I remember - they are releasing a lot more often than just Tuesdays. I think they have a continous deployment and code goes live every day, just they clean old Gate Keepers / schema changes Tuesdays as they switched all the users to the new functionality by then.

    So basically:

    1. You add gate keepers everywhere a new functionallity is taking place.
    2. You maintain 2 versions of the Schema.
    3. You add more and more users to switch to the new one.
    4. You clean the old one.
    5. You go to point 1 (if another team isn't already there :).

    I realize this answer may not be full enough to qualify for an answer, but I heard this from their guy and thought it is worth sharing.

提交回复
热议问题