复盘自研产品,总结技术实践
![复盘自研产品,总结技术实践](https://static001.geekbang.org/infoq/d0/d078262b7683635394bae40e5b9376f6.jpeg)
简介: 一个小小的产品,它的发展会见证很多变革,有行业的,有技术的,但是当你回顾过去,更多印象的反而是一群奋斗的人。每个人的工作有高峰底估,每个产品也是一样,但是只要你具有信念,坚持不懈,持续迭代,就算不是 ChatGPT 这种划时代产品,一个小而美的小产品也是很赞的,重要的是持续帮助服务一撮人。
产品背景
回到 2013 年,那时候淘宝开发平台招开发商,给商家做软件产品。
偶然机会,我做了一个大转盘抽奖的产品放到淘宝服务市场给商家用,不到 2 天,就有很多用户来咨询,我感受到了一丝兴奋,于是快马加鞭的迭代开发,也有很多朋友的帮助,每天编程到午夜 2 点。随之而来的大量用户,我确定了方向,电商平台需要有个性化的营销工具,抽奖就是最简单最清晰的首选工具。
一周后我的新产品抽奖靠手上线了,主要提供帮助商家设置抽奖营销,商家可以服务他们的用户。
技术选型实践
![](https://static001.geekbang.org/infoq/48/48c353335cccad7ee8c33fc719d91a7e.png)
开发语言实践
2013 年时候,我们从最早.net 平台 c# 开发,因为我之前是做这方面的程序员。
2016 年左右,后来逐步迭代了 PHP 后台,前端采用原生 JavaScript 的模式。
大概这个时候是
2019 年左右,后来迭代成了 PHP 逻辑端,消费者前端采用了淘宝小程序;商家后端和管理员端采用了 VUE 的技术。
2023 年左右,目前逻辑层和后端代码还是采用 PHP 的 thinkphp 框架。前端没有变化。
![](https://static001.geekbang.org/infoq/da/dade597b9d95d6d31dbced7c7d88cd85.png)
数据库实践
数据库方面,早期是 SQL Server 到后来的 MYSQL 和 Redis 的模式。
过程中想换过 MongoDB,但是一方面从商业营收来看,还有开发资源来看,成本比较高,就放弃了,其实这种抽奖类 Node.js + MongoDB 的开发组合是最适合的。大并发是必须的。后面讲采用 MySql 和 Redis 怎样来解决大并发问题。
上面的技术产品,都采用的是阿里云的商家聚石塔的产品。ECS,RDS,Redis,OSS 等。
架构设计实践
架构演变
架构上从早期的 2 层。.net asp.net 页面逻辑+数据库的模式。
后来逐步变成了 PHP 逻辑层 API 模式,前端 VUE,小程序,MySql,云函数等多层组合。
![](https://static001.geekbang.org/infoq/ee/ee080fcff76c6dabf123f1564e429c65.png)
现在的架构图
![](https://static001.geekbang.org/infoq/ed/edda97eba7ed7ccf8fd9bde4e6c3c606.png)
因为前些年淘宝生态发展很繁荣,很多电商平台也都在学习解决,比如京东也再发展自己的生态商家平台,我们当然也直接入驻了。下面是我们针对京东商家平台做的架构设计,大家可以参考了解,欢迎一起交流学习。
其他平台架构图
![](https://static001.geekbang.org/infoq/26/261d941cf7159c6a215dcd64a2fe4ea0.png)
产品前端实践
历经迭代,我们产品目前前端技术主要采用手淘小程序的消费者端,千牛小程序的商家电脑活动配置端,VUE 开发的 Web 管理员端。
![](https://static001.geekbang.org/infoq/7c/7c23d57a8d287402aa770d9b4153ce51.png)
成本优化实践
再展示一些目前云计算的产品场景图,便于大家更好的理解。
云产品技术升级带来的成本优化
这里云计算给我们的成本优化帮助很大。比如从原始的 ECS,到后来的云函数/Serverless 的模式,从原来的 RDS,到后来的云数据库的模式。
云产品订购升级带来的成本优化
从早期我们年购 ECS,RDS,到后来根据不同云产品,进行分期购买,到后来的按量购买。最典型的就是双 11 压力大的时候我们要采买多台,这个时候只需要购买 1 个月即可。包括到现在后期产品使用量变小了,我们变成的按流量购买的形式,这些都是对我们在产品成本上的优化。
下面一些图是淘宝聚石塔提供给我们的 CI/CD 工具,展示了我们针对不同场景的调整,可以做到快速一键切换。
问题解决实践
高并发问题的解决
![](https://static001.geekbang.org/infoq/78/786c6593de4ee05f7b857136beb23fd4.png)
讲下高并发的问题,因为其实抽奖,裂变这种互动应用,高 QPS,高并发是一个常见的问题,也是一个棘手的问题,很多新手容易抓瞎,在 2013 年那个时候我们就因为突然的大规模流量导致频繁宕机,淘宝的流量不是盖的。但是在早期,这些高并发都需要自己去解决,伴随着互联网云计算的发展,现在的技术朋友轻松很多,用容器负载技术,Serverless 技术就能轻松解决并发问题,而且费用还便宜,1 个人就能搞定全部。
我们的高并发大概经历的过程是这样的:
● 分表分库,优化 Web Server。我们从早期 SQL Server 迁移到开源 MySQL 中。比如把商家 ID 做分成,根据业务逻辑拆分不同商家编号,不同层次的放入不同的表中,每个表的数据量控制在 15 万条以内。
● 增加 ECS 做负载均衡,加入 Redis,加入队列等。Redis 这里解决了我们很大的问题,比如加载商家抽奖布局和消费者基础信息的,不用直接读 MySQL,先去判断 Redis。
● 使用容器技术,包括轻容器 Docker,到资源池,K8 容器,SLB 等云资源编排。容器方面我们最多扩展到 10 个做负责均衡的处理,这里就是要利用用 CI/CD 的功能,做好灰色发布,分层发布的模式。
● 使用 Serverless 技术,包括云函数,云数据库。其中我们用云函数分布了一些并发量大的功能点,做 API 的处理模式。
未来我们将继续迭代,包括开发运维采用 GitOps 等等。有没有觉得透过这么小的产品迭代,也能清晰看到互联网技术的不断演进。我猜测未来类似我们这种小产品,将会更容易开发和迭代,也许 1 个人从产品开发到部署运维,可以轻松全部搞定。
产品思考
![](https://static001.geekbang.org/infoq/13/13fb1e9aa049c040f233fc709aebecd7.jpeg?x-oss-process=image%2Fresize%2Cp_80%2Fauto-orient%2C1)
一个小小的产品,它的发展会见证很多变革,有行业的,有技术的,但是当你回顾过去,更多印象的反而是一群奋斗的人。
每个人的工作有高峰底估,每个产品也是一样,但是只要你具有信念,坚持不懈,持续迭代,就算不是 ChatGPT 这种划时代产品,一个小而美的小产品也是很赞的,重要的是持续帮助服务一撮人。
版权声明: 本文为 InfoQ 作者【小院里的霍大侠】的原创文章。
原文链接:【http://xie.infoq.cn/article/626b86ea4b66fc377b9f54078】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论