QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

从基于 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:042177
用户头像

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

关注

评论

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

oeasy教您玩转vim - 11 - # 向前向后

o

十万高层齐卸甲,竟无一人有慈心。前阿里员工看阿里高管不法侵害女员工事件

刘悦的技术博客

阿里巴巴 面试 职场 职场 PUA

Python代码阅读(第7篇):列表分组计数

Felix

Python 编程 Code Programing 阅读代码

vivo 全球商城:优惠券系统架构设计与实践

vivo互联网技术

服务器 架构设计

【“互联网+”大赛华为云赛道】EI命题攻略:华为云EI的能力超丰富,助你实现AI梦想

华为云开发者联盟

大数据 modelarts 大赛 互联网+ 华为云EI

简单的Postman,还能玩出花?

码农参上

8月日更

TCP如何进行拥塞控制

W🌥

计算机网络 TCP/IP 8月日更

Compose 编程思想

Changing Lin

8月日更

台达AS228T_CanOpen_VFD_X

林建

台达 AS228T Canopen 功能块 E变址

带你看论文丨全局信息对于图网络文档解析的影响

华为云开发者联盟

文档 CNN网络 图网络 非结构化文档 全局信息

万字长文讲透低代码

百度开发者中心

最佳实践 开发者 方法论 低代码 语言 & 开发

Apache之道在腾讯的探索与实践

腾源会

Apache 开源 腾源会 腾讯开源

孩子排斥写作业 VS 员工不接活儿——项目管理来帮忙

Ian哥

如何用Camtasia添加视频水印?

淋雨

视频剪辑 Camtasia 录屏软件

浅谈BU安全建设

I

项目管理 企业安全 BU安全 安全建设

我看 JAVA 之 并发编程【三】java.util.concurrent.atomic

awen

Java 并发编程 Atomic 原子操作

MySQL中的DEFINER(定义者)是什么

Simon

MySQL

【“互联网+”大赛华为云赛道】IoT命题攻略:仅需四步,轻松实现场景智能化设计

华为云开发者联盟

IoT 华为云 LiteOS 互联网+ IoT边缘

十大排序算法--桶排序

Ayue、

排序算法 8月日更

你真的懂语音特征吗?

华为云开发者联盟

语音 音频 声学 时域图 时域

收获颇丰!这份阿里架构师纯手敲JDK源码全彩小册可以打满分

Java架构追梦

Java 阿里巴巴 架构 面试 jdk源码

工作多年,分享16条职场经验给新人朋友

架构精进之路

职场 成长 经验分享 8月日更

接口返回值一定不允许使用枚举类型吗?

skow

Java 面试 后端 开发规范

AI + K8S 驱动存储技术变革

焱融科技

人工智能 Kubernetes 云原生 高性能 存储

使用Grafana显示Prometheu监控

Rubble

Grafana Prometheus 8月日更

iPhone Shortcuts 使用与场景

TroyLiu

iphone 效率工具 快捷指令 shortcuts nfc

从技术到文案,还回技术么?

escray

学习 极客时间 朱赟的技术管理课 8月日更

C++ Vector

若尘

c++ vector 8月日更

这波性能优化,太炸裂了!

why技术

Java 性能优化 JVM

Java测试框架九大法宝

FunTester

自动化测试 JUnit 测试框架 selenium testNG

The Data Way Vol.1|风口下的开源市场:如何看待开源与商业的关系?

SphereEx

数据库 开源

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