主要参考了:
一、概述
    所谓的灰度发布,在行业内叫做A/B Test,所以可以搜索一些这方面的关键词
    下面是某公司的灰度发布流程,仅供参考。
一)经典总结1:
    1)web页面灰度。按照ip或者用户id切流啊。具有随机性,可以控制比例
    2)服务端灰度。考验主系分能力了,可以做逻辑切换开关,按照义务相关属性逐渐切流
    3)app。一般按照用户逐渐推送包,主要是安卓。iso内部大规模内测
    没有不能灰度的业务,只有不能灰度的设计

作者:无名气
链接:https://www.zhihu.com/question/28296375/answer/61894553
来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 
2)经典总结2:
    web 区分区域、时间端、人群做灰度
    iOS 对比模块同时存在,云端控制模块的关闭和开启
    Android,云端控制升级弹窗
    PC client 粉丝群、论坛、不同的下发渠道做灰度

二、安卓很适合做灰度发布
1)从服务器端下手

Android平台做灰度再合适不过了。
找单一渠道投放特别版本出去是一个思路。另一个是做升级平台的改造,允许针对部分用户推送升级通知甚至版本强制升级。

无论哪种方法都需要做好版本管理工作,分配特别的版本号以示区别。

当然,既然是做灰度,数据监控(常规数据、新特性数据、主要业务数据)还是要做到位,该打的数据桩要打。

还有,灰度版最好有收回的能力,一般就是强制升级下一个正式版。

作者:张瑞
链接:https://www.zhihu.com/question/21714205/answer/19080164
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


2)从客户端下手

自己做产品时也有类似的需求,下边是我的方案:)

基本的逻辑是两个版本的代码都打到app包里,然后在app端植入测试框架,用来控制显示哪个版本。

测试框架负责与服务器端api通信,由服务器端控制app上A/B版本的分布,可以实现指定的一组用户看到A版本,其它用户看到B版本。

服务端会有相应的报表来显示A/B版本的数量和效果对比。

最后可以由服务端的后台来控制,全部用户在线切换到A或者B版本~

所以这个也可以用来做灰度发布 :)

另外由于打进去两个版本的代码,app的包体积会大一点(这和功能变化多少有关)

作者:且歌
链接:https://www.zhihu.com/question/21714205/answer/19080265
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


3)典型案例
MIUI的控制上,存在体验版、开发版、正式版三个版本。
包括Chrome也有canary、dev、stable三个版本。

对于Android应用,可以使用Google的分阶段发布。
Google开发者后台可以设置灰度发布的百分比,5%,10%,20%,50%,100%。

 
4)应该有完善的工具可以看到各种统计分析的数据,比如淘宝就有;


三、iOS版本不好做灰度发布
    iOS上只能好好测试了,或者发布越狱版本(但越狱版本有时候本身也是一种问题)    

    iOS比较麻烦,由于审核机制以及iOS本身对权限的控制,我们通常是选择越狱版本渠道来进行灰度,然后才是正式版本灰度。

    http://TestFlightApp.com 可以实现iOS的灰度测试,但是参与测试用户需要注册,比较麻烦,而且会大大降低普通用户的样本量,只能说这是一个选择之一了。

iOS:官方的测试平台有Testflight,已经被苹果收购,但是整个内测用户邀请的方法流程还是没有打通,邀请用户成本比较高,是通过添加用户邮箱的方式,收到邀请邮件后还需要用户按步骤下载tf,下载应用等,没有一套教学视频普通用户还是难以接受。但非常适合在新产品发布前使用一些运营手段去建立这个用户群。用户一旦完成第一次操作,以后更新就像appstore一样简单。对开发者来说,操作也是和appstore一样的。比较方便。
且一个公司有多款产品的话,使用这个成本也会稍低一些,不过最大的问题还是灰度的用户量,和后期用户的消亡管理和扩充

还有一个是如果有打不同的iOS渠道包(除了appstore还有其他越狱渠道)或者其他tag的话,也可以通过升级配置来指定灰度发布。

作者:AlwaysAT
链接:https://www.zhihu.com/question/28296375/answer/61898109
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


Android、iOS、和Web如何做灰度发布?的更多相关文章

  1. Android ios嵌套web页面

    我们现在做一个活动页面,Android和ios的活动页面用web来做,方便更改,下面有几个小问题: 1.在Android和ios中,虽然web上面可以存localstorage,但是到了Android ...

  2. 在Android 上运行 openCV ,并做灰度变化的一个例子

    OpenCVImageProcessing1. 导入Opencv的 androrid SDK灰度算法 OpenCVImageProcessing 导入opencv Jar包,配置OpenCVLibra ...

  3. Android/iOS微信6.3.5同时发布更新 支持群视频聊天、群公告

    下午微信6.3.5发布更新,新版最大变化就是支持群视频聊天,又一次向手机QQ靠拢.在群管理方面,支持发布群公告,支持群主转让给其他群成员,同样都是QQ玩剩下的功能.另外,新版支持微信运动查看步数图表. ...

  4. 灰度发布:灰度很简单,发布很复杂&灰度发布(灰度法则)的6点认识

    什么是灰度发布,其要点有哪些? 最近跟几个聊的来的同行来了一次说聚就聚的晚餐,聊了一下最近的工作情况如何以及未来规划等等,酒足饭饱后我们聊了一个话题“灰度发布”. 因为笔者所负责的产品还没有达到他们产 ...

  5. Spark 灰度发布在十万级节点上的成功实践 CI CD

    原创文章,转载请务必将下面这段话置于文章开头处. 本文转发自技术世界,原文链接 http://www.jasongj.com/spark/ci_cd/ 本文所述内容基于某顶级互联网公司数万节点下 Sp ...

  6. 灰度发布/AB test

    背景 互联网产品有一个特点,就是不停的升级,升级,再升级.一般采用敏捷开发的团队,基本上保持每周一次的发布频率,系统升级总是伴随着风险,新旧版本兼容的风险,用户使用习惯突然改变而造成用户流失的风险,系 ...

  7. (Android+IOS)正在做一个新闻App,做的差不多了,听听大家的建议 (图)

    (Android+IOS)正在做一个新闻App,做的差不多了,听听大家的建议! 新闻采集器做好了,前端展示APP界面感觉还不是很好,还需要改进改进,希望发布(Android和IOS版本)前听听大家的建 ...

  8. iOS 关于自动更新的分阶段发布(灰度发布)的相关简介

    前言:  AppStore 发布应用方式除了自动和手动,如今添加了分阶段发布(灰度发布).目的很明确,降低新版本骤然上升的bug率,不能挽回,只能发布新版本的风险.也也是针对禁止使用热修复,推出的相对 ...

  9. [翻译]Nativescript 中 Web 视图与 Android/IOS 的双向通信

    English document From http://shripalsoni.com/blog/nativescript-webview-native-bi-directional-communi ...

随机推荐

  1. Python学习(七) —— 装饰器、迭代器、生成器

    一.装饰器(decorator) 1.装饰器的本质是闭包函数,作用:在不改变函数的调用方式的情况下,给函数的前后添加新的功能 #装饰器的固定结构 def warpper(func): #定义装饰器函数 ...

  2. ELK使用1-Elasticsearch使用

    一.es 1.通过curl命令获取es进群信息 a.curl -i(设置协议的头信息) -XGET 'http:192.168.30.41:9200/_count' b.查看集群状态 curl -XG ...

  3. Python 面向对象5 多态

    一.多态 多态性(polymorphisn)是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作,简单的说就是一句话:允许将 ...

  4. 修改input 的 placeholder

    input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { color: #666!important; } inp ...

  5. HDU2586How far away? LCA

    去博客园看该题解 题意 给出一棵树,以及每条边的权值,给出一些询问,每个询问是2个节点,求每个询问对应的2个节点的距离. 算法 LCA_Tarjan 代码 #include <cstring&g ...

  6. 使用aws中国的s3时,制订bucket poicy时注意注意……

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Pub ...

  7. 043 关于 loadrunner 返回 http 500 错误解决思路

    这个支持项目中,总是出现500的问题,后来发现是redis总是崩掉. 后来,在压力测试,500的问题,又开始不断出现,虽然不是我自己处理的,但是没少吃苦头. 看了这篇文章,感觉说的还是很有道理,如何来 ...

  8. day65 request对象,以及方法,response对象,render,redirect

    这里的都是我们会频繁使用到的,用得多了自然就会了,我们写项目都是少不了这些用法的,所以这就把老师的博客粘过来就好了, Request对象 官方文档 属性 所有的属性应该被认为是只读的,除非另有说明. ...

  9. JavaEE 之 Spring(三)

    1.Spring Web MVC a.定义:是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是 ...

  10. 问题 L: An Invisible Hand - (2018年第二阶段个人训练赛第三场)

    题目描述 There are N towns located in a line, conveniently numbered 1 through N. Takahashi the merchant ...