写点什么

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

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

关注

评论

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

白帽子渗透行为监控方案

明亮安全观

网络安全 信息安全 渗透测试 行为监控

从运维域看 Serverless 真的就是万能银弹吗?

阿里巴巴云原生

阿里云 Serverless 运维 云原生

Spring Boot Serverless 实战系列“部署篇” | Mall 应用

阿里巴巴云原生

阿里云 Serverless 云原生 MAll

ReactNative进阶(九):API学习之注册组件AppRegistry

No Silver Bullet

React Native 1月月更 AppRegistry

Linux之tar命令

入门小站

Linux

08 Prometheus之警报管理

穿过生命散发芬芳

Prometheus 1月月更

第六周作业

lv

Elasticsearch核心原理系列:10张图理解Elasticsearch核心概念

慕枫技术笔记

后端 1月月更

常见网络安全专业术语

喀拉峻

黑客 网络安全 信息安全

Spring Boot CLI安装(WIN10、macOS系统)

JavaEdge

1月月更

深信服智能边缘计算平台与 OpenYurt 落地方案探索与实践

阿里巴巴云原生

阿里云 云原生 边缘计算 openyurt

2022年推荐6个有意思的CSS tools!

CRMEB

2021 阿里云容器服务年度盘点:企业级容器应用变化和技术趋势观察

阿里巴巴云原生

阿里云 容器 运维 云原生

考试数据存储方案

皓月

#架构实战营 「架构实战营」

电商系统微服务拆分和系统架构设计

drizzle

「架构实战营」

也谈谈Python的内存管理

宇宙之一粟

Python 内存管理 1月月更

模块 4 作业

miliving

来了!「年度最强技术答辩」看这里

阿里巴巴云原生

阿里云 Serverless RocketMQ 云原生 编程挑战赛

云原生背景下故障演练体系建设的思考与实践—云原生混沌工程系列之指南篇

阿里巴巴云原生

阿里云 云原生 混沌工程

爆肝一个月,我做了个免费的面试刷题网

程序员鱼皮

Java Python 编程 面试 计算机

今年最值得关注的5个云趋势

云原生

云计算 数据分析 云原生 趋势 SaaS

「程序员35岁被淘汰」已经22岁了

FunTester

程序员 职业发展 FunTester 35岁焦虑 35岁退休

模块四作业

whoami

「架构实战营」

2022 年值得期待的元宇宙技术

devpoint

defi Web3.0 1月月更 NTF

关于常见状态码,你了解多少?

坚果

服务器 1月月更

架构实战营 第 4 期 模块四作业

架构实战营 模块四 「架构实战营」

模块四作业 - 学生管理系统的考试试卷存储方案

曾竞超

「架构实战营」

在线JSON转PHP Array工具

入门小站

工具

「架构实战营」模块四《如何设计业务高性能高可用存储架构》作业

DaiChen

作业 模块四 「架构实战营」

[架构实战营] 模块五作业

Geek_0ed632

「架构实战营」

急速学习C#死锁

喵叔

1月月更

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