刚刚完成个人项目的上线 www.feezfi.com ,从产品设计到落地实现和部署上线,用时一个月左右。期间遇到了很多阻碍,做一些记录。
一、确定产品主线思路
feezfi 是个专门做虚拟卡在线销售的网站,简单的看就是个购物网站,只不过不需要物流。所以很快确认了产品的任务模块:
- 前端展示:虚拟卡成列 → 详情 → 下单 → 付款 → 邮件给用户
- 管理后台: 有商品,就需要做库存管理,订单管理,所以必须有个管理后台
- 服务端:用户信息,订单等逻辑处理。
- Saas 工具,方便做一些文档输出,机器人通知等服务。
二、技术选型
个人开发,优先考虑的就是效率 + 成本,所以都从我熟悉的技术开始,不过中途也有些变动。
2.1 前端开发框架和部署
开始向基于 React 直接开发,然后找个 OSS 实现静态部署,后来看了看 React 官网,发现他们自己推荐使用 Next.js,于是开始了 Next.js 的尝试;最后挺不下来了,使用了 next.js,选 next.js 的主要原因:
- 可以实现 SSG,特别是对 SEO 优化。
- 可以直接无缝部署到 Vercel,节省了一笔 OSS 静态部署的费用。
所以先就开始了趟 Next.js + Vercel 的部署,先把逻辑走通。于是赶紧到 AWS 购买了域名,部署了一个空壳 Next.js 应用到 Vercel 上,然后用 AWS 的 Route 53 解析了域名;很好,国内可以访问。到此前端开发框架和部署已经敲定,接下来就快速开发业务架构。
2.2 边学 Next.js 边开发
我倾向于边学习,边开发,先花了 1.5 天看了一遍 Next.js 的官方文档,有之前 React 的一些基础,很快就开始写业务,然后再边写边查。样式这块,我选择了 Tailwind CSS,原因是它的风格既不是很原始,也不是高度封装,处于自由定制和便利的平衡点上;都敲定后,开始搭建前端的基础 UI 架子,总共用时 3 天左右。
2.3 后端技术选型和部署
自然也是从我熟悉的领域出发,实现快速实现和部署,后端采用 golang + aws 部署。由于之前做过 golang 的 AWS 自动化部署,比较熟悉,很快把后端服务搭起来。这里可以展开说很多,这里简单介绍,后边打算用一遍完整的博客介绍:
- 使用 AWS Codebuild + ECR 实现自动化构建和镜像存储
- 数据库单独跑在一台 EC2 上
- 定义安全组,入站和出栈规则
- 使用 ECS 的 Task 实现滚动部署,接入 ELB 负载均衡,把 ELB 负载均衡作为入口,分发任务到 ECS 的底层实例上。
由于 AWS 的有一年的免费额度,上述这些,除了域名注册,其他的均可免费实现。
三、其他服务的技术方案选定
基础的前后端服务搭建好后,开始分割各个大的功能模块,其中登录注册模块,使用的是邮箱。所以需要一个给用户发送邮件的服务,这里选定了 Lark 的邮件服务,好处就是免费,能快速接入。只需要创建一个 Lark 组织,就可以开公共邮箱,起 SMTP 服务,进行邮件功能的接入。
通知模块,用户下单,或者库存不足的时候,我希望程序能自动给我发送通知,搜了下 Lark Developer,果然有机器人的功能,并且开发接入也很快。
支付模块,我选择了支付宝个人支付接口,申请好后,快速接入,测试,支付模块完成。
四、开发核心业务逻辑
4.1 全部都搭建好,就可以开始实现业务逻辑了,数据整个流程,设计数据库,实现接口。
4.2 最先实现的是管理后台,管理后台的前端管理界面同样使用 Next.js + Vercel。
4.3 做好管理后台,就可以快速实现前端功能。
4.4 测试,前后端联调,反复调整。
部署上线,done。
总结
虽然写下来后,看起来很顺畅,但当身处在开发中的时候,会遇到各种各样的问题。最开始的障碍是 AWS 部署,设置安全组,还有 IAM 角色,提取环境变量等,稍有差错,就会整个逻辑不通。
虽然一路坎坷,但最终都解决了,回头来看,一个人开发一个小产品,有时候效率是可以抵得上一个团队的。业务初期的小产品,就适合一两个人来开发实现。减少决策,能快速打通产品逻辑,上线,面见客户。