写点什么

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:002933

评论

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

2023 Bonree ONE 秋季产品发布会:亮点抢先看!

博睿数据

运维 可观测性

兼顾集群与个人实践环境,和鲸聚焦 AI4S 科研算力高效调度管理

ModelWhale

人工智能 算力 数据驱动 AI for Science 计算资源

2024工业皮带展|2024广州国际传输设备展会

秋硕展览

展会 输送装置

秋招上岸“我”都做对了哪些事?

王磊

Java java面试

pycharm pro for mac(Python编辑开发软件) v2023.2.1中文激活版

mac

pycharm 苹果mac Windows软件 集成开发软件

产品解读 | 数据服务平台:KDP

KaiwuDB

开辟ICT新视野 直通华为云专家:一堂华为云Astro低代码启蒙课 ——华为云HCSD校园沙龙之西安站

华为云PaaS服务小智

云计算 软件开发 低代码 华为云

何为CI/CD,何为DevOps?8个方面全面对比解析

爱吃小舅的鱼

DevOps 软件开发 CI/CD

重磅发布|博睿数据IT运维最佳实践白皮书

博睿数据

运维 可观测性 白皮书

基于低代码平台少量编码完成软件开发

互联网工科生

系统开发 低代码开发 JNPF

兴业数金:基于悦数图数据库的智能大数据云平台获 “2023 IDC中国 未来企业大奖”

最新动态

一文教你理解Kafka offset

越长大越悲伤

kafka

公共卫生的未来:智慧公厕来了

光明源智慧厕所

智慧厕所 智慧公厕

测试流程复现第二弹!IoTDB 在国际数据库性能测试排行榜结果如何?

Apache IoTDB

攀登数字化高峰,中小企业如何找“搭子”?

脑极体

华为云

企业沟通平台私有部署,让沟通更高效数据更安全

WorkPlus

Docker 入门教程(简明易懂、零基础篇)

程序员万金游

#运维 #后端 #docker

低代码开发框架 助力企业打造新时代技术底座

力软低代码开发平台

腾讯云 Cloud Studio 实战训练营结营&活动获奖公示

CODING DevOps

语音识别技术的应用及未来发展

来自四九城儿

2500 万美元基金、完成 1.5 升级,Casper Network 构建企业级区块链的野望

股市老人

IM系统,WorkPlus如何成为企业即时通讯协作的首选?

WorkPlus

IM聊天系统

玩转 CODING 自动化助手,助力高效研发!

CODING DevOps

如何选择适合企业的移动应用管理平台?

WorkPlus

语音识别技术:深度理解与前沿趋势

来自四九城儿

袋鼠云代码检查服务,揭秘高质量代码背后的秘密

袋鼠云数栈

大数据 数据中台 代码检查

语音识别技术的挑战与应对策略

来自四九城儿

基于Java+vue开发的企业级人力资源管理系统

金陵老街

专业私有化视频会议软件,WorkPlus Meet助力企业构建高效协作的沟通平台

WorkPlus

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