写点什么

从基于 Web 的应用到原生应用的迁移看 Facebook 的发布流程

  • 2014-01-05
  • 本文字数:1011 字

    阅读完需:约 3 分钟

来自 Facebook 的 Chaitanya Mishra 在上月的 Velocity Conf London 上发表了演讲,描述了Facebook 将其Android 应用从Web View 视图转换为全面原生应用的方法。为了达成该目标,各个产品团队只负责自己特性。为了使分布开发模型能够正常工作,由一个核心团队负责回归测试并专注于整体应用的优化而不是某个特性的优化。

因为对于用户来说,升级到应用的新版本(包括修复)决定于第三方的审核以及用户想升级的想法,所以需要对适用于 Web 开发持续交付模型做一些调整,使其适用于快速迭代的 Android 开发。当构建失败时快速反映给开发人员,内部试用新发布版本(在发布到应用商店的 4 周之前先内部发布给员工试用)并监测其使用情况(碰到功能错误或性能问题时及时反馈给开发人员),该措施提升了对外发布的信心。在这 4 周时间里,在一个发布分支中修复问题,该分支与主分支(在主分支中不断加入并测试新功能,作为将来的发布功能)是并行的。

除了功能和性能测试(使用 Selendroid 通过界面进行)外,其他在构建过程中针对 Android 应用的检查还包括:应用的大小(是否有变更会意外增加应用的大小),内存使用率以及电源消耗(实际的电池使用)。Chaitanya 举了一个例子,团队发现一个很明显的电源消耗增大却又无法解释的问题,最终证明是一个微不足道的变更导致的,该变更是为了阻止应用进入休眠模式而采用的轮询机制。

应用发布出去之后,Facebook 使用 Analytics Logger 监控应用的性能和问题。反馈的数据使用一种叫做 Scuba 的工具进行分析。Chaitanya 又举了个例子,他们发现数据库崩溃的次数越来越多。他们怀疑是用户设备的可用空间过低导致的,所以他们就增加了剩余空间检测功能,结果发现确实是应用占用了过多的空间,这都是应用分配甚至复制整个数据库,超大缓存,还有一些不必要的文件导致的。问题经过修复后,数据库崩溃的频率明显降低。

尽管应用已经成功转换为完全本地化应用,但是让 Chaitanya 担心的是,向本地化转化后不稳定现象会偶尔出现,尤其是一些不常用的功能还是基于 Web 实现的。根据 Chaitanya 的说法,依赖 Web 的缺点是需要尽可能保持与网站 API 的向后兼容。

查看英文原文: Facebook’s Release Process Behind the Move from Web-based to Native App


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-01-05 06:042474
用户头像

发布了 28 篇内容, 共 11.8 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

Redis线程模型的前世今生

vivo互联网技术

redis reactor 多线程 io

2022北京智博会AIOTE 第十五届(北京)国际智慧城市、物联网、大数据博览会

InfoQ_caf7dbb9aa8a

2022第十五届北京国际AI人工智能产品展览会

InfoQ_caf7dbb9aa8a

Rust 元宇宙 8—— 脚本

Miracle

rust 脚本 元宇宙

技术分享| Sip与WebRTC互通-SRProxy开源库讲解

anyRTC开发者

音视频 WebRTC SIP 视频会议 SRProxy

Nocalhost 为 KubeSphere 提供更强大的云原生开发环境

CODING DevOps

Kubernetes DevOps 云原生 集群 Nocalhost

大厂算法面试之leetcode精讲11剪枝&回溯

全栈潇晨

LeetCode 算法面试

「Oracle」Oracle数据库基本概念

恒生LIGHT云社区

数据库 oracle

2022北京智博会AIOTE 2022第十五届北京国际AI人工智能产品展览会

InfoQ_caf7dbb9aa8a

一文读懂敏捷开发的发布策略

华为云开发者联盟

DevOps 运维 敏捷 开发 发布策略

2022北京智博会AIOTE 2022第十五届北京国际人工智能产品展览会

InfoQ_caf7dbb9aa8a

前端开发中需要掌握的开发框架React

@零度

大前端 React

大厂算法面试之leetcode精讲12.堆

全栈潇晨

算法 LeetCode

Java开发之ssm三大框架的整合

@零度

Java ssm

文本分类:Keras+RNN vs 传统机器学习

华为云开发者联盟

机器学习 深度学习 keras RNN 文本分类

Linux学习指南《Linux一学就会》带你玩转Linux

侠盗安全

Linux linux运维 运维工程师 云计算架构师

开发好能重构的代码,都是这么干的

华为云开发者联盟

接口 重构 代码 并发 注释

kafka元数据信息存储在哪里,如何查看

编程江湖

kafka

详解预训练模型在信息检索第一阶段的应用

百度Geek说

后端 预训练 信息检索

恒源云(GPUSHARE)_云GPU服务器如何登陆Windows实例?

恒源云

人工智能 深度学习 算力

2022第十五届北京国际大数据产业博览会

InfoQ_caf7dbb9aa8a

大数据开发hadoop入门基础之sqoop

@零度

大数据 hadoop sqoop

使用HTML+CSS制作逼真的红色开关

海拥(haiyong.site)

CSS html 大前端 Demo 签约计划第二季

基于TDengine进行睿信物联网平台的迁移改造

TDengine

tdengine 时序数据库

智慧城市主题展2022第十五届北京国际智慧城市展览会

InfoQ_caf7dbb9aa8a

Vue 中 $attrs 与 $listeners 的详解

编程江湖

Vue 大前端

数据分析从零开始实战,Python、Pandas与各类数据库

老表

Python 数据库 数据分析 pandas 11月日更

常用的5个分布式缓存框架

编程江湖

Java 开发 分布式缓存框架

taosAdapter正式发布:支持从OpenTSDB向TDengine无缝迁移

TDengine

tdengine 后端 时序数据库

2022北京智博会AIOTE 第十五届(北京)国际智慧城市、物联网、大数据博览会

InfoQ_caf7dbb9aa8a

2022第十五届北京国际智慧工地展览会

InfoQ_caf7dbb9aa8a

从基于Web的应用到原生应用的迁移看Facebook的发布流程_Meta_Manuel Pais_InfoQ精选文章