写点什么

同样的能力,为什么开发小程序要比 App 简单 100 倍?

  • 2020-11-26
  • 本文字数:3584 字

    阅读完需:约 12 分钟

同样的能力,为什么开发小程序要比App简单100倍?

“在红海中博杀是没有前途的,所有的成功企业都是不同的。”这是 Paypal 创始人 Peter Thiel 在作品《从 0 到 1》中写下的结论。


过去互联网产品的快速发展得益于人口红利,前几年只要把握好流量就可以实现产品增长,而今天,用户说产品好才是增长的核心,市场已从流量驱动转为创新驱动。APP 作为用户接入移动互联网世界的桥梁和入口,无论对于传统企业还是互联网企业,都是市场营销的重要战场。但是,传统的 APP 开发模式的门槛高、成本高、开发周期长、无法快速迭代,很难在应用交付上有突破性创新。


2017 年 1 月,微信小程序正式上线。小程序是微信基于 xml 和 js 定义的一套标记语言、全新的生态、一个轻 OS,开发工具和 UI 框架都是腾讯自己做的,它依附微信、无需下载,也是一座流量富矿。


传统 APP 开发 vs 小程序开发


尽管,大部分团队已经意识到创新和高效很重要,但却依旧难以”敏捷“起来。在传统 APP 开发方式下,应用交付需要经历这样的过程:


  • 一个 APP 从 idea 到上架商店,要经历 8 个步骤:设计流程→设计原型→设计 UI→前端代码→后端服务器搭建→后端代码→后端部署→测试→上架。由于是代码级开发,开发和测试周期都很长,成本高,调试出错率也高,开发好的应用也需要一定时间磨合才能稳定。在这个过程中若需要使用外部商业化 API,还需要支付昂贵的费用。


  • 过程中参与的人员至少包括 5 个人:Android + iOS + 后台 + 产品经理 + 美工。这对开发人才的要求很高,分别需要精通编程语言、数据库等。无论是物理托管,还是云主机维护,都需要投入较多人力物力,成本无上限。


  • 前后端联调、资源存储、部署等操作繁杂,上线流程耗时长。


  • 上线后需时刻关注环境运行情况,且由于维护时代码级修改导致产品新问题出现,调试过程也非常麻烦。


这些因素导致各环节和部门总体的效率不高,包括持续发布能力低、需求响应周期长、交付吞吐率低、交付过程质量低、交付质量低,业务部门提出的创新性需求也很难及时响应。


微信小程序的交付过程是这样的:


  • 一般小程序从 idea 到发布,也要经历 8 个步骤:安装微信开发者工具→创建一个小程序→编译→前端代码→后端服务器搭建→后端代码→后端部署→发布。小程序框架本身所具有的快速加载和快速渲染能力,加之配套的云能力、运维能力和数据汇总能力,可以释放开发者的精力。且在语言上,小程序的前端开发学习成本较低。


  • 过程中依旧需要前端和后端开发的参与。


  • 提供丰富的微信原生 API,调用微信能力比较方便。相对于传统 APP 开发,微信小程序官方的开发文档较为丰富,开发语言门槛低,从组件到 API 都很全面,开发难度适中。且网络上有丰富的开源项目,方便开发者获取和比较。


再看用云开发构建小程序的过程:


  • 从 idea 到上线,需要经历 5 个步骤:安装微信开发者工具→新建一个模板小程序→开通云开发服务→编译→发布,且整个过程为可视化操作,只需写核心逻辑代码即可。


  • 仅需 1 人即可完成开发。


  • 平台一体化,开发者无需关心服务器搭建和管理;项目一体化,前后端可以在同一项目内开发和维护。


  • 按请求数和资源的运行收费,投入按需付费。


如此看来,相对于大型互联网公司来说,中小型企业更希望低成本、低人力投入、快速上线和迭代的产品,可以优先考虑通过云开发构建小程序来承载。


为什么开发小程序没有繁重的后台问题?


这几年高频的技术换新让开发者又爱又恨,所谓的“学不动了”,不单单包括语言,框架、工具还有很多理念思维上的内容。但若学无所用,它的性价比就会下降。那么,腾讯如何帮助开发者最大化实现技术先进、研发高效和投入成本低?


1、拥抱 Serverless 设计理念。 云开发是一个入口,目标是为了让开发者以更低的门槛,更小的成本接入云计算服务,实现应用快速开发。同时这也是服务上 BaaS(后端即服务)+FaaS(函数即服务)的体现,尤其是云函数的设计,可根据请求量弹性横向扩展,开发者只需关注核心代码,不再参与基础设施架构设计。


2、从产品生态方面来说,云开发和微信生态打通,技术拥抱产品生态,打通了客户端和云资源的链路,一个云端服务支撑多端应用,实现一次开发,多端运行。


3、工具丰富,从数据库,存储服务,API 到云函数,云托管基本上涵盖了所有的开发流程节点,每一个上手门槛都很低,只需浏览文档对应模块即可。


4、可视化程度高,云开发正在朝着无代码或者低代码设计微信小程序的趋势发展,这样非开发人员可以直接设计应用,进一步降低门槛。


(传统开发模式与云开发模式的对比)


在传统开发模式下,开发者需要更多关注文件存储、备份、容灾等,但是云开发模式下就只需要关注与业务逻辑相关的数据库、文件存储、云函数。目前,小程序开发主要采用云开发的模式。


现在,我们整体对比下,实现同样的功能,APP 开发者和小程序开发者需要解决的问题。



很明显,如果一个全栈工程师沉浸在繁重的编程和运维上,那么,遇到具体业务问题时,还怎么有充足的精力和经验来解决,面对新的需求还怎么快速响应。


我们先不去讨论全面自动化或零代码有没有可能,从这几年的发展趋势来看,拥抱 Severless、低代码、可视化,已经稳稳抓住了程序员和企业技术架构的痛点。小程序云开发已成为软件开发效率提升的突破点,越来越多的业务需求可以得到有效解决。


哪些团队适合使用小程序云开发?


云开发可以真正意义上实现前后端包揽的“全栈”,用在以下这几个场景尤其合适:


1) 传统企业 / 存量业务需要快速迁移上云时,不希望改造代码或重构业务的,云开发可以提供免运维的后端云服务,适用于传统企业、存量业务;


2) SaaS 厂商需要多租户隔离时,云开发可以支持环境级别资源隔离,每个环境有独立的一套后端云服务;


3) 中小企业希望享受自动化运维和托管服务时,可以使用云开发的后台服务托管, 实现可视化操作,释放运维压力;


4) 初创企业或是企业内部创新孵化时,希望可以快速验证商业模式,可以使用云开发快速部署和上线


For example:


1、10 个月发布 349 次版本:微信读书


微信读书小程序继承了微信读书 APP 最核心的阅读功能,并作为 APP 最核心的对外分享和运营渠道。上线 10 个月以来,微信小程序已发布 349 次版本,开发效率分别是对应的 APP 和 H5 的 4 倍与 2 倍,累计获客数千万,日均 PV 过千万。


微信读书为什么用小程序云开发?原因有三,一是团队在小程序开发方面经验不足,积累的 Node 框架也需更新,因此导致上线流程较为繁琐,速度也不太可观。二是团队人力不足,这也是比较客观也比较难解决的一个问题。三是考虑了性价比问题,云开发要比自己搭建 Node 服务器划算。


通过云开发模式,微信读书小程序的前端代码和服务端代码共存在一个项目中,同样的技术栈、同样的 IDE 环境,可以调试开发更高效。同时,云函数支持动态扩容,可以完美支持瞬间增长的运营类业务。此外,云开发还让其团队的分工和成员能力发生了显著变化。以前其团队按照前端开发、Node 开发和运维人员进行分工,现在前端负责全栈开发。团队成员除了前端技术,还更关注服务性能和稳定性,资源利用率(如云函数耗时、云数据库连接数等)。



微信读书使用云开发的具体逻辑如下图,从小程序端获取的数据通过云函数、云存储等功能传输到 Server 后台,并生成业务发展数据的报表,相当于一套从后台到前端的完整服务。


2、1 人 2 周完成的亿级项目:腾讯相册


腾讯相册的产品定位是帮助用户在微信中能无限量存储照片,快速与好友分享照片进行互动,对照片富媒体化编辑等基础能力,让用户在微信场景点开即看。这里有 4 个关键词:存储,分享,互动,富媒体化编辑。腾讯相册小程序团队仅投入 1 名前端开发工程师,2 周内就快速完成了“评论点赞”社交功能以及小程序内部二维码的快速优化升级。


3、让海外用户访问性能提升 42%


“境外游礼包”是使用”微信“小程序的优惠平台,只需扫店铺海报上的二维码或在 APP 上搜索小程序,即可获取“超优汇率券“及“翻倍折扣券”等店铺专享优惠券。“小程序·云开发”还对数据访问链路做了专门优化,使小程序的数据加载速度更快。借助“小程序·云开发”良好的网络和数据加载性能,境外游礼包小程序开发性能优于传统模式 42%。


云开发模式,不止于小程序


云开发已经得到了很多开发者的认可。上线一年后,“小程序·云开发”注册账户数超过了 23 万,服务了超过 50 万开发者。这标志着云原生理念开始在国内有了大规模的应用落地。


在基础能力之外,“小程序·云开发”还正在进一步封装腾讯云、微信平台的其他能力,提供扩展能力,包括 AI、音视频、订阅消息、微信支付等,让开发者在更多业务场景中可以使用“小程序·云开发”,打造更优质的小程序。


但是,云开发的模式不局限于小程序这一个场景,在 11 月 29 日将要举行的“小程序·云开发”技术峰会上,腾讯云和微信相关负责人,将介绍腾讯云开发在支持公众号网页和 Web 网站时新增的一系列接口及资源互通与共享能力。此外,今年的峰会上,云开发在交付能力和创新模式上有哪些突破性进展,让我们拭目以待!


点击立即报名

2020-11-26 20:424912

评论

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

《分布式系统设计》(1) 从程序思维到系统思维

陈皓07

Coinbase上市在即,这里有你想知道的一切

CECBC

比特币

Linux 下的Zabbix Agent 安装

耳东@Erdong

Linux zabbix 4月日更

余额宝|三年开发|一二三四+HR面面经,已拿offer|

Java架构师迁哥

三分钟热度的你,不会得到你想要的结果

小天同学

坚持 日常感悟 4月日更 专心 个人思考

Python OpenCV 图像处理之图像直方图,取经之旅第 25 天

梦想橡皮擦

Python OpenCV 4月日更

Java流(Stream)操作实例-筛选、映射、查找匹配

Java小咖秀

Java stream java8 日常开发

神秘又强大的@SpringBootApplication注解

vivo互联网技术

Java 后端 springboot 注解分析

Java编辑器

ベ布小禅

4月日更

完美的,从不空口说白话,140个案例带你深入理解微服务

Java架构师迁哥

升级版数字人民币试点在深启动 这次有啥不一样?

CECBC

数字人民币

Spring 类型转换

邱学喆

Converter spring类型转换 GenericConversionService GenericConverter ResolvableType

微信被单删或拉黑?这两个免打扰检测方法你要知道。

彭宏豪95

微信 工具 社交 数据备份 4月日更

《分布式系统设计》(2) 关键概念和基本问题

陈皓07

Spark的动态资源分配

小舰

Spark调优 4月日更

智慧公安情指勤系统搭建,指挥调度平台解决方

13828808769

智慧公安

InheritableThreadLocal源码解析,子线程如何获取父线程的本地变量?

徐同学呀

ThreadLocal Java源码

什么是跨职能合作的关键?

王辉

团队管理 技术管理 沟通

用吃解决生活问题

石云升

读书笔记 好好吃饭 28天写作 4月日更

计算机原理学习笔记 Day4

穿过生命散发芬芳

计算机原理 4月日更

读scss/sass实例项目带你入门

devpoint

SASS scss css预处理器

「MySQL」深入理解事务的来龙去脉

学Java关注我

Java 编程 架构 程序人生 软件架构

Rust从0到1-枚举-定义

rust 枚举 Option

升级JDK到1.8笔记

风翱

jdk8 4月日更

真假敏捷教练

escray

面试 面经 4月日更

微服务中台技术解析之项目环境隔离

小江

kafka 架构 DevOps 后端

区块链商品防伪溯源平台搭建,实现数据信息安全共享

13828808769

区块链 商品溯源 #区块链#

Python模拟MOBA手游(三)

Bob

Python Python 游戏编程 4月日更

JVM-技术专题-MAT解析OOM问题

码界西柚

JVM

树莓派安装pytorch

IT蜗壳-Tango

4月日更

无脑用 react 的 useCallback

sadhu

React Hooks 无脑 useCallback

同样的能力,为什么开发小程序要比App简单100倍?_方法论_Linda_InfoQ精选文章