写点什么

Cloud Native App:阿里推出的移动开发新范式

  • 2017-10-22
  • 本文字数:3880 字

    阅读完需:约 13 分钟

什么是云原生(Cloud Native)App

云原生的话题近期异常火热,对于它的概念,大家也有不同的解读。从我个人的视角而言,云原生代表了一种应用构建的方法论:如何最大程度地利用云计算服务模型的优势低成本、快速地构建一款弹性的应用。本质上而言,云原生的研发模型旨在降低业务的技术风险,让开发者的形态更单纯、专注:

  • 所有的运行环境透明化,按需扩展;
  • 所有的研发流程流水化,高效交付;
  • 所有的基础设施服务化,按量付费;

我们通常意义下的云原生应用意指传统的后端应用,Container、Microservice、DevOps 构成了云原生研发架构的铁三角。对于移动 App 这类呈现重前端轻后端形态的产品而言,云原生有另一种诠释方式。移动 App 对比传统的后端应用研发有着较大的形态差异,应用本身构建在异构的 OS 平台之上,运行环境约束较多,依赖大量的后端服务支撑,应用本身的持续交付过程也包含了许多移动场景特有的元素,比如编译环境(iOS)、兼容测试、内测分发、渠道打包、灰度发布等等。从基础环境的支撑视角,云计算服务商面向移动 App 需要解决的几个核心问题包括:

  • 跨平台:

移动 App 需要面对多个 OS 平台,在研发资源和迭代周期上都会带来巨大的挑战。一站式跨平台研发框架将有助于应用进入市场的节奏把控,屏蔽不同 OS 平台对 App 的影响。

  • 松耦合:

移动 App 本身同样是一个非常庞大的体系工程,想象一下类似手机淘宝这样的航母级 App 所承载的服务内容,数十个团队并发协同一个版本的迭代是大型 App 的常态,所以一个松耦合结构的应用容器 / 脚手架是应用高速迭代的基础底座。

  • 服务化组件:

基础组件的功能纯粹,通过云化的中间件和后端服务构建弹性的终端基础能力是性价比最高的一种软件构建方式。

  • 快速迭代:

移动 App 特有的流程元素决定了开源的 CI/CD 服务不能完全满足移动 App 快速迭代的场景诉求。另一方面持续交付流程与云上的后端服务存在大量的交互,云化的持续交付 / 研发支撑平台将会是移动 App 生命周期管理的终极杀器。

  • 按需扩展:

移动 App 的流量波动将更剧烈和频繁,按需扩展、弹性伸缩的基础服务支撑将有助于灵活的业务运营和成本的降低。

我们把基于上述云计算模型构建的移动 App 称为云原生 App。在大家比较熟悉的概念中,围绕移动 App 衍生的一个很典型的云计算架构即 Serverless。

Serverless

Serverless 是当前软件架构领域非常火热的话题。从字面上看,大家或许会比较困惑,没有服务器,如何来托管服务实体?事实上 Serverless 是从用户视角出发的一种应用架构范式,即基于云服务的计算模型实现对业务逻辑的抽象封装、管理,而无需关心底层资源的运维管理和扩展。我们所熟知的 BaaS(Backend as a Service)以及 FaaS(Function as a Service)即是 Serverless 架构模型的实体化服务形态。比如,当你想创建一个天气服务,方便自己的应用或第三方的应用能够很方便的获取即时的天气数据时,你就可以基于 FaaS + API Gateway 快速构建一个独立的天气微服务,并对外开放,这就是一种非常典型的 Serverless 服务场景。

Serverless 架构模型的核心价值体现在三个方面:

  • 成本:

传统的研发支出模型需要预先购置一批服务器设备,并按照使用周期内的预估业务峰值来量化预算的大小,不确定性因素较多,服务器资源的空置也会带来非常巨大的成本浪费。而 Serverless 的架构模型则实现了按需扩展、按量付费的弹性模型,让企业成本更高效可控。由于 Serverless 服务粒度的进一步打细,基于高效的 bin-packing 算法甚至可以获得对比弹性伸缩的虚拟机集群更高的使用效率。

  • 运维:

开发者不必再关心底层计算资源的容量与日常运维问题,所有基础设施维护将会由云计算服务商负责解决并对开发者透明。

  • 效率:

细粒度的 Serverless 计算模型非常适用运算密集型的场景,能够低成本地实现瞬时高强度脉冲计算能力。而传统架构为这样的脉冲计算场景则需要付出高昂成本的准备工作,环境搭建、容量压测、计算存储扩容、应用上线部署等等,这些隐性的时间资源成本更佐证了 Serverless 的核心价值。

Serverless 意图把服务运行时封装在服务本身的交付体系中,面向开发者屏蔽与业务无关的基础环境支撑细节,是你能想象到的对应用逻辑最高等级的抽象。

云原生 App 对比传统研发架构的收益

基于 Serverless 的介绍,我们应该已经能看到云原生架构范式带来的不同,接下来我们一起系统化地对比一下云原生 App 与传统研发模型的核心差异点。

阿里云对云原生 App 的支持

目前国内真正能够提供云原生 App 完整技术栈支持的供应商并不多,绝大多数都是以 BaaS 形态进行服务的垂直厂商。由于缺少 App 研发支撑解决方案以及和 IaaS 层的联动,这种类型的服务无法彻底利用移动 App 开发强内聚的场景特性,沦为单点的工具支撑,为开发者带来的效率提升也是相对有限和独立的。

阿里巴巴在移动互联网领域有近 7 年的研发经验积累,在移动技术不断深化的同时,移动开发范式也在快速演进,以支撑整个阿里巴巴体系内移动 App 的快速迭代和品质保障。下图展示了阿里巴巴 Cloud Native App 的架构范式。除了端 + 云的硬能力栈支撑外,阿里巴巴也开放了包括 Android/iOS 平台研发规约,移动研发 DevOps 规约在内的一系列软能力栈。软、硬能力栈背后蕴含的是对移动行业的深层认知与理解,绝非一朝之功。

阿里云平台上,我们很高兴通过 ApsaraMobile(移动云)为大家开放阿里巴巴 Cloud Native App 的完整能力栈。阿里云 ApsaraMobile(移动云)是阿里巴巴移动技术的开放平台,沉淀了阿里巴巴多年移动互联网系统架构积累,近期也和阿里百川进行了深度整合,是阿里生态移动技术与理念对外输出的主窗口。ApsaraMobile 目前向开发者开放的能力如下图所示,已基本覆盖完整了云原生 App 的核心中轴。

跨平台 UI 开发框架:WEEX-based MADP(Mobile App Development Platform)

WEEX 是阿里巴巴开源的跨平台移动 UI 开发框架,并于 16 年底正式捐赠给 Apache 基金会进行孵化。WEEX 具备一次开发,三端(Android,iOS,H5)运行的能力,相对于 H5 来说,在使用相同的 web 化开发模式,保持较高的研发效率、较低的研发成本的同时,又具备接近 Native 的性能体验,非常适合需要快速迭代又对性能体验有一定要求的 APP 开发者。

移动 App 应用容器:Atlas

Atlas 是阿里巴巴开源的 Android 端应用容器,提供解耦的组件化 / 插件化模块框架及动态化支持。帮助工程师解决在工程编码期、Apk 运行期以及运维修复期面临的各种棘手问题。

  • 在工程期,实现工程独立开发,调试的功能,工程模块独立。
  • 在运行期,实现完整的组件生命周期的映射,类隔离等机制。
  • 在运维期,提供快速增量的更新修复能力,快速升级。

目前,Atlas 在阿里巴巴体系内部的应用十分广泛,手淘自身超过 60+ 业务组件、20 个协作团队,以及百万行级别代码都在 Atlas 上运行,其快速迭代能力让应用的发布周期从每月到每周再到随时发布,在过去半年里就发布了 446 次。另外 Atlas 本身非常轻量,只有 90 多个类,支持大小型 App 开发,从大型的手淘到相对小型的阿里健康等都在使用该框,其稳定性也接受了考验,兼容 Android 4.x 以上系统版本。整体手淘的 Crash 率一直维持在万分之五左右,因为容器导致的 crash 占比小于百分之一。

研发支撑平台:MobileHub

对于企业而言,单纯的购买虚机替代传统的物理机仅仅实现了基础资源的云化,这是云计算最初阶的使用模式。企业互联网 + 的真正标志应该是研发体系的互联网化,如何通过敏捷、DevOps、容器、分布式、Serverless 等互联网形态的思维和架构来真正影响企业内部的产品体系结构和研发的日常运转形态,这才是云计算更高阶的价值传递。

MobileHub 是阿里巴巴多年移动互联网行业沉淀、打磨的移动 App 研发支撑平台,支撑了阿里巴巴数个亿级 App 的完整生命周期全流程管理,从项目管理、持续集成、持续构建到自动化测试、版本管理、灰度发布、监控运维、用户运营等环节,整个工作流融入了阿里巴巴在移动互联网领域的深层认知与理解,是移动 App 研发体系中软能力栈的几个关键元素(机制、流程、方法论)的重要载体。

移动中间件与 BaaS 服务矩阵

移动中间件与 BaaS 服务负责了移动 App 基础设施能力的支撑,与 App 业务解耦,适合以云服务的形态帮助业务快速完成从 0 至 1 的基础建设。云化的移动中间件与 BaaS 服务本质上即是移动 App Serverless 架构的具象化实现。ApsaraMobile 按照组件职能范畴把移动中间件划分为 5 个具体的职能域,如下图所示。

对于绝大多数企业而言,中间件的建设并非位于业务的核心发展路径上,缺少持续深耕的源生动力。而云服务则可以通过规模化的服务来平摊基础技术研发的成本,在人才聚敛、资源投入、产品稳定性与性能等方面都具备绝对的优势,是整个移动生态分工细化和生产效率提升的重要表现。阿里巴巴在移动网络、移动高可用、消息、移动数据等领域积累了大量的场景能力,可以有效地帮助企业规避重复的能力建设和繁重的维护、演进成本。

结语

移动超越 PC 成为第一大流量入口,业务移动化已经成为几乎所有企业的核心战略之一,如何抓住时间窗口,以最快速度把产品推向市场,往往成为决定产品最终命运的关键元素。云计算带来的研发模式变化是巨大的,对于快速成长期的团队和企业而言,云原生的研发范式将带来较低的试错创新成本,真正助力创业进入“快消时代”。在整个移动开发生态的自然进化选择中,云原生势必将成为一种主流形态。

本文已获原文作者方授权发布。

原文链接: https://yq.aliyun.com/articles/217376


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-10-22 19:003167

评论

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

NumPy之:理解广播

程序那些事

Python Numpy 程序那些事

anyRTC 六周年 打造全网最低音视频价格

anyRTC开发者

音视频 WebRTC RTC sdk

Gradle学习笔记

ES_her0

5月日更

编程思考路径2条

顿晓

5月日更 思考路径

【LeetCode】子数组异或查询Java题解

Albert

算法 LeetCode 5月日更

Amazon Glue 版本 2.0 将作业启动时间缩短了 10 倍,现已全面开放!

亚马逊云科技 (Amazon Web Services)

技术笔记(语音识别-语音噪声分类)

攻城先森

噪声 5月日更 技术笔记

零基础学习NLP-DAY2

Qien Z.

nlp 5月日更

iMazing比iTunes好用在哪些地方

懒得勤快

流量变现业务概论——Linkedmall流量变现业务初步分析及系统设计概要

关贺宇

Nginx负载均衡配置误区

运维研习社

nginx 负载均衡 5月日更

Windows自带的功能这么好用,还装什么第三方软件?

彭宏豪95

windows 5月日更

源码解析之Seata项目中的分布式ID生成算法

Coder的技术之路

分布式 分布式ID

如何高效地存储与检索大规模的图谱数据?

华为云开发者联盟

存储 知识图谱 检索 图结构 表结构

Ansible AD-Hoc

耳东@Erdong

ansible 5月日更

将自媒体玩得风生水起的不一定是前总统,还有可能是艺术家

zhoo299

艺术 自媒体 5月日更

传统BI如何转大数据数仓

数据社

大数据 BI 5月日更

人证一体机产品设计

lenka

5月日更

再学习一个 Golang 专栏

escray

学习 极客时间 Go 语言 5月日更

学习笔记:02 | 第一个程序:教你输出彩色的文字

Nydia

学习

关于组件,你真的了解么?

架构精进之路

组件化 5月日更

华为云PB级数据库GaussDB(for Redis)揭秘第十期:GaussDB(for Redis)迁移系列(上)

华为云开发者联盟

数据仓库 华为云 数据迁移 GaussDB(for Redis) PB级数据库

“云演唱会”也有仪式感!能检票、可转赠,爱奇艺“云票”如何重构线上购票逻辑

爱奇艺技术产品团队

防治肥胖,AI转向

脑极体

网络协议之HTTP:HTTP 1.1与HTTP 2

程序员架构进阶

HTTP2.0 28天写作 HTTP协议 5月日更

揭秘 Amazon Go 无人商店是如何炼成的!

亚马逊云科技 (Amazon Web Services)

【图片旋转】十五分钟挑战鸿蒙Codelab组件

liuzhen007

鸿蒙 5月日更

Spring Cloud Alibaba 生态学习

风翱

spring cloud alibaba 5月日更

你认识镜子里的那个自己吗?

小天同学

原则 认知 5月日更

由高频护网设备漏洞引发的供应链浅思

Thrash

安全

网络攻防学习笔记 Day11

穿过生命散发芬芳

5月日更 网络攻防

Cloud Native App:阿里推出的移动开发新范式_语言 & 开发_Apsara Mobile_InfoQ精选文章