写点什么

Serverless 最佳实践:如何在两周内开发出用户量过亿的微信小程序

  • 2019-07-01
  • 本文字数:2632 字

    阅读完需:约 9 分钟

Serverless最佳实践:如何在两周内开发出用户量过亿的微信小程序

一切好的产品都是从一个绝妙的创意开始!


腾讯相册前身是空间相册,而且空间相册已经在手机 APP 端,网页端都有了入口。为了增加用户活跃,让客户在各个软件中都能快速触达,腾讯相册团队推出了微信小程序形式的腾讯相册。本文将从开发背景、技术需求与落地实践三个维度出发,还原腾讯相册小程序的开发历程,以及 Serverless 是如何助力腾讯相册团队在两周内,开发出承载过亿用户量的微信小程序。


注:文章内容整理自腾讯云产品经理方坤丁和高级架构师卢萌凯在 Kubecon 2019 上的演讲,演讲主题为《Serverless 云上最佳实践 :如何在两周内开发出用户量过亿的微信小程序》,感兴趣的读者可点击阅读原文下载讲师完整 PDF。

腾讯相册微信小程序开发背景说明

在 2019 年 Q1,微信和 WeChat 的合并活跃用户为 11.12 亿,而小程序的活跃用户从 17 年初发布后,在 18 年底增长到了 2.3 亿。小程序主要有以下几个特点:


  • 速度快。无需下载安装,加载速度快于 app HTML5,随时可用

  • 无适配。一次开发,多端兼容,免除了对各种手机机型的适配

  • 可分享。支持图文分享、支持分享给微信好友和群聊

  • 体验好。可达到近乎与原生 app 相同的操作体验和流畅度

  • 易获取。支持扫码、微信搜索、好友推荐等发起场景

  • 低门槛。基于微信的生态。已有公众号的组织可快速注册、可快速生成小程序



微信小程序的这些特性,能够与腾讯相册这类社交性工具完美结合。那么,这个小程序应该怎样设计?作为一名产品经理,我们想到了如下几个需求:


  • 基本能力:图片及视频获取、展示、管理、上传、下载、图片集

  • 社交属性:点赞、评论

  • 传播能力:分享

  • 用户规模:千万级

  • 上线时间:4 周。时间对于产品占领用户的心来说十分重要,因此,时间目标定了 4 周上线。



需求明确之后,就是怎样用高效、快速并省成本的方式实现腾讯相册小程序。

腾讯相册小程序基于 Serverless 落地实践

传统模式开发流程

产品的开发需求非常明确,总结 4 个字就是“多快好省”。承载千万级用户的小程序,对后台架构的性能和稳定性要求非常高,如果有足够的时间和资源,这些都不是问题。但是想要在 4 周的时间内完成开发并上线,压力非常大。如果按照传统的开发模式下,这样一款小程序需要


  1. 项目人员准备:至少 1 个前端工程师,2 个后台工程师,加一个测试和 2 个运维。

  2. 当人员 Ready 后,开始着手环境搭建,需要运维购买资源,如主机,数据库,负载均衡等,并协助部署运行环境、域名备案、搭建监控告警系统等。

  3. 环境 Ready 后,前端和后台开始开发,然后测试介入、运维完成线上部署,最后申请发布。


即使顺利的情况下,整套流程都很顺利的走完,也需要至少 8 周的时间,如果人员不到位,需要的时间更久。可以发现,耗时主要是在环境搭建和开发流程当中,而且人力耗费也在这一块。



在开发流程这块,后端开发除了需要关注核心业务逻辑之外,还需要做框架选型,了解数据库和文件存储等。并且还需要耗费精力对性能进行优化,比如高并发。那么必然也要去了解底层的运行机制,比如容器服务。同时运维也要花大量的时间来保障安全和容灾等能力。



因此,自上而下,对团队成员的专业技能要求越来越高。同时,花费的时间也越来越多。


环境和开发工作全部完成后,需要进行架构维护,不仅需要维护业务集群,还需要关注各个组件的稳定性。测试方面,除了产品功能验证外,还需要压测各个组件的性能。最后,还需要随时保障整个系统的稳定性和安全性。


基于 Serverless 模式的开发流程

如果将刚才提到的和核心业务逻辑不相关的事情都交给微信和腾讯云,系统架构将会大大简化,而且能够节省不少人力。最终,只需要关注的只剩下小程序端+核心业务,整个开发流程将会变得无比简洁。通过 Serverless,这种想法可以得以实现。Serverless 其实是一种架构理念,他是把底层资源抽象成 API 的形式对用户提供服务。



在去年年初,微信团队和腾讯云团队开始尝试将 Serverless 和小程序开发结合起来并提供一套小程序 · 云开发解决方案,这还要归功于 Faas 在国内的兴起。有了 Faas 之后,用户核心计算逻辑的承载平台真正实现了 Serverless 化。



  • 首先云开发封装了用户需要用到的云函数、数据库和文件存储资源,开发不用再去关心环境问题;

  • 其次,从小程序端到云开发后台的请求,走的是微信和腾讯云之间的专线,并且用的是私有协议,所以用户也不用担心安全问题;

  • 最后,云开发整个后台提供了完善的监控和日志系统,也省去了运维同学的部分工作。因此,新的方案不仅省去了很多运维的工作,同时也有效的加速了开发流程。



如何使用


新的架构或者方案具体该怎么使用呢?之前有提到,整个方案里最核心的是计算模块。当有用户在小程序端发起后台请求的时候,云函数平台会根据用户的请求量动态的伸缩实例,以保证用户的请求能够被及时响应,同时用户可以在云函数里发起数据库以及文件存储的读写操作。下图展示的完整架构是 Serverless 的具体表现形式。用户不再需要部署服务器,通过无服务器云函数即可实现核心业务逻辑。



这一套基于 Serverless 的架构将会具备以下优势:1、无穷的弹性计算能力;2、让用户聚焦核心业务逻辑的编写;3、根据请求自动运行;4、秒级上传部署;5、几乎不需要运维运维。


如何基于 Serverless 实现腾讯相册小程序开发

以最核心的社交功能为例。按照传统的开发模式,研发团队会面临几个挑战,运维人力,开发复杂度,历史包袱等。



借助云开发的能力,架构设计将会变得非常简单。举个例子,按照传统的开发方式,需要花费大量的时间在框架路由设计和安全设计,以及后台的性能优化上面。而基于 Serverless 的方案,只需引用 SDK,就能直接 callfunction,运行业务代码。



再来看下性能方面,根据现网的运行数据,发现无论波峰还是波谷,后台的响应延迟都在 70ms 以下。



可以看到,对比传统的开发模式,需要大约 1 人 10 周的人力完成开发,而借助 Serverless,只需要 1 人 3 周就能完成基础开发和测试。因为,系统架构变的非常简单,并且和原有的空间后台完美兼容,极大的提升了开发效率。


总结

对于公司/个人来说,通过云的 Serverless 架构开发微信小程序,有下面几个非常显著的优势:


  1. 加快了产品的迭代效率

  2. 稳定,高可用,弹性伸缩,完全不需要自己关心底层的运维

  3. 降低了资源的投入,这里包括了人力和财力


腾讯云 Serverless,可以助力微信小程序开发!用户后续在开发小程序,或者有任何想法需要快速落地时,可以想到采用 Serverless 架构来开发 ,非常的惊喜、简单。


本文转载自公众号 ServerlessCloudNative(ID:ServerlessGo)


原文链接


https://mp.weixin.qq.com/s/zzdTAzpu2SUizelhGbzvDQ


2019-07-01 08:007493

评论

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

jquery 事件绑定及取消 bind live delegate on one区别 (超详细且通俗易懂)

Ankiee

jquery 11月月更

刘强东给京东高管降薪:2千多位总监兄弟工资打8折,并拿出100亿保障”兄弟“基础住房

小小怪下士

程序员 京东 刘强东

offset新探索:双管齐下,加速大数据量查询

IT科技苏辞

如何在 Rocky Linux 上安装 Apache Kafka?

wljslmz

Apache kafka 11月月更

为什么要用 Tair 来服务低延时场景 - 从购物车升级说起

阿里技术

内存数据库 低延时

温州有等保测评机构吗?听说没有是吗?

行云管家

等保 等保测评

二面被RocketMQ虐后,狂刷这套实战到源码手册,再战阿里

钟奕礼

Java Java 面试 java程序员 java编程

Zebec开启多链布局,流支付生态持续扩张

西柚子

不懂“数据服务”,聊什么“数据中台”

雨果

数据中台 数据服务

2023年值得学习的云计算技术有哪些?

wljslmz

云计算 11月月更

全面焕新|详解 Grafana v9.0.x 新增功能特性

阿里巴巴云原生

阿里云 云原生 Grafana 新功能

华为云安全亮相世界互联网大会

科技怪授

华为云

kafka实战】分区重分配可能出现的问题和排查问题思路

石臻臻的杂货铺

kafka Kafka实战 11月月更

NFT盲盒链游DAPP系统开发搭建技术

薇電13242772558

web3

华为再次入选2022年Gartner® SIEM魔力象限

科技怪授

华为云

Baklib帮助中心:自助服务指南

Baklib

客户服务 帮助中心

Java岗位必备技能SpringBoot的9道面试题集锦

钟奕礼

Java java程序员 java面试 java编程

HummerRisk V0.5.2:升级对象存储、云检测、云审计和K8s资源态势等

HummerCloud

云原生 k8s #Kubernetes# 云原生安全

集世界杯+GameFi元素的MetaElfLand,为何将在世界杯期间爆发?

鳄鱼视界

华为云GaussDB打造金融行业坚实数据底座,共创数字金融新未来

清欢科技

集世界杯+GameFi元素的MetaElfLand,推出世界杯专场活动

西柚子

5G+云渲染,助力虚拟仿真医学实训

Finovy Cloud

云渲染

Nginx负载均衡配置、限流配置、Https配置详解

C++后台开发

nginx 负载均衡 HTTP 后端开发 C++开发

极客时间架构训练营模块七作业

李晨

架构

使用 Bytebase 管理 Rainbond 上的应用数据库

北京好雨科技有限公司

大厂数据开发老司机送给数据工程师的10条建议,建议先收藏再细品!

雨果

数据开发

DHorse系列文章之镜像制作

tiandizhiguai

云原生 Serverless Kubernetes

Serverless 的前世今生

Serverless Devs

python常用内置函数用法精要(一)

乔乔

11月月更

双机热备与数据备份的关系说明一二

行云管家

数据备份 双机热备

全球6位IT负责人解读数字化转型不断失败的原因

雨果

数字化转型

Serverless最佳实践:如何在两周内开发出用户量过亿的微信小程序_架构_腾讯云中间件_InfoQ精选文章