「技术」如何快速开发一款APP?( 六 )


第三点 , 我们是需要进行一些流量的熔断 , 比如说我们的网络调用到达一定请求或者说一定程度大概率是出现在比如说我们这边的服务器或者说客户这边的APP端业务端受到一个DDOS的一个场景 , 那么这个时候我们需要对流量做声做成一个熔断 。
第四点就是我们一个非常重要的动态化能力的修复 。 那么这里面包含了好几个内容 , 第一点是刚才之前说的开关 。 第二点是离线包的一个版本更新 , 我们比如说前面的离线包发生了一些问题 , 那么我们需要及时的修复、去上传 , 然后快速的全网发布 。 然后第三点是基于原生代码的一个Hotpatch , 那么安卓上的Hotpatch的话 , 我们还是使用的是DexPatch的方案 , 那么能修复Native上的Java代码 , 然后他同时可以做到监控 , 可以回滚 , 在我们的mPaaS后台去点击一个回滚的按钮 , 那么我们快速的把这几个下发的新的东西做一个回滚 , 因为谁也没办法去保证自己下次写的代码没有bug 。
所以说只要我们如果验证没有问题 , 那么我们的修复可以发放 , 如果说热修复是有问题的 , 那么我还要做到一个快速回本 , 去发一个新的Patch , 那么对于我们来说的话 , 我们的Native发板可能会做得比较慢 , 那么如果在我们上了H5的方案之后 , 那么我们H5的发版肯定是比Native的发版要走得快的 。 假设说我们在一个APP里面有N个产品 , 那么他们之间的发展节奏像是这个样子 , 那么他们的整个产品的一个生命周期是左边的一个环形的架构 , 其实还是蛮传统的一个交流 , 首先的话是业务这边去制定目标 , 然后开发这边进行代码构建 , 然后我们进行一个灰度持续的监控 , 最后正式发布完之后 , 我们进行一个运维的监控 , 运维监控之后 , 我们再做一个灰度的验证 , 然后制定一个新的目标 。
「技术」如何快速开发一款APP?
本文插图
对于不同的版本的话 , 这里面重点讲的是一个灰度的概念 。 对于灰度来说 , 我们需要知道用户这边的一些条件 , 比如说我们这次需要做一个基于安卓手机的性能优化的方案 , 那么我们需要去用条件去筛选出我们安卓里面 , 比如说CPU是骁龙600系列或者500系列的一个低端的CPU的话 , 然后去验证我们的这一次的性能修复的包的表现 。
Part3:更优异的 Hybrid 方案 , HTML5 与小程序差异化解析
我们这边需要去讲一下最近非常火的小程序的方案 , 小程序是在H5发解决方案之上更加升级的一个架构 。
「技术」如何快速开发一款APP?
本文插图
首先小程序是一个基于Web技术 , 然后又集成了原生能力的一个新的移动应用格式 。 那么对于小程序来说 , 跟H5一个最大的不同是H5本身其实是技术是开放的 , 但小程序就等于是给了一套完整的开发框架 。 那么你继续跟着开发框架和DSL编写出了相应的业务代码之后 , 然后编译成一个小程序的包 , 然后发到相应的平台上 , 平台可以根据你这一套DSL去渲染出它的一个页面 , 当然它的渲染引擎是可以随时更换的 , 不一定是WebView的渲染引擎 , 他比如说可以根据 skia的渲染进去写一套基于skia渲染去做 。 那么小程序的优势有四种 , 一个是获取便捷 , 比如说扫二维码就能直接去打开 , 他不需要你去架设服务器 , 不需要去考虑CDN之类的一些东西 。 第二个就是小程序和小程序链接的一个能力 。 然后还有小程序跟Native之间的一些连接的能力 。 第三个的话小程序的安全性和可靠性是由各个大平台去保障 。 第四点小程序的渲染 , 它是由你各个去指定的标签去决定的 , 比如说我可以使用原生的组件去渲染小程序上一些DSL的组建 , 在这种情况下 , 它的渲染能力反而是会比H5的渲染能力会更高一点 。 那么整个小程序的架构是像图上这样子 , 小程序的渲染层和逻辑层是彻底分开的 。


推荐阅读