1

单人开发产品,你们觉得是否应该上微服务? 先说下我个人的独立开发历程

 2 years ago
source link: https://www.v2ex.com/t/822364
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  程序员

单人开发产品,你们觉得是否应该上微服务? 先说下我个人的独立开发历程

  sorakylin · 1 天前 · 1257 次点击

其实我自个做产品已经经历了两个阶段,前两个阶段有什么坑有什么好处自己都基本明白。

现在算是第三个阶段。

又开始纠结了……

先说下我业余做东西的心路历程:

我要上业界最前沿的技术!

然后就是用上了各种压根没啥人用的新框架,架构就是分布式微服务(细粒度拆分,觉得自己代码写的是真他吗优雅,可维护性可拓展性拉满了)、搞个前后端分离、然后缓存搜索消息各种中间件全部 balabala 怼上去……

结果是那个产品没运转起来,周期太长导致我踏马一个人维护不动开发不动了……

倒不是技术不行,其实我还是可以 cover 的,新技术新框架查查官方文档、debug 看下源码,都能解决。

就是坑太鸡儿多了,尤其是 WebFlex 和 SpringSecurityOAuth2 有几个坑我都要看源码看的很深才能解决,真实折腾。

服务又多,窗口 /屏幕切来切去麻烦的我要死。

产品 demo 都没出来,就先在“基础设施”这一块折腾了三个多月。

后面直接放弃。

反思:

《黑客与画家》说的是对的,圣母玛利亚式开发没有好结果。

大而全没什么卵用, 直接做个最小功能集上线然后慢慢加东西就挺好。

适合小团队 /单人的还就真是快速迭代这个搞法。

吸收了阶段一的经验。

决定采用巨石架构,搞的就是单体服务,直接一个 SpringBoot 怼上去就完事了。

中间件选型就一个 Postgres 直接把 SQL 、NoSQL 、时序、图、搜索 balabala 全部 cover ,是真的完美。

然后把之前那个死掉的项目的尸体拿过来消化了一下,基础设施复制复制改改还能用。

然后就是一周上线,实际投入生产环境。

好家伙,这项目一做就是一年多,慢慢的也就开始有收益了。

反思:

巨石架构是真的好用,你哪有那么多用户、那么多功能、那么多人手来整微服务那套东西。

开发方便快速就不说了,部署也是简单的很。

说白了就算是一般公司那几十百把万用户甚至都没必要上微服务。作为个人开发者的体量就更不用谈了。

还有一个很关键的点就是:就算你最初版功能再怎么少也好,有没有上线 /有没有用户,对于一个独立开发者的心态而言真的是完全不一样的。

现在想要开发一个新的东西……

那问题就来了,诸如 [用户系统] [认证鉴权] [主题 /文章 /帖子等 UGC 模块] [回复中心 /消息中心] [用户动态] [第三方服务对接] [图片存储 /处理] ……等等等等“基础服务”实际上是属于你无论开啥 APP 都可以用上、有机会用上的。

我要是新的产品也保持巨石架构,那就不得不全部一股脑复制过去。

但又由于业务肯定不同,要针对性修改也感觉怪麻烦的。

后期的话随着迭代的加深,我各个产品线的基础服务甚至都可能会变得不太一样,到时候同时维护多个产品估摸着也会有些消耗心智。

所以我又想着捡起微服务了…… 给自己做一套 SAAS 是不是挺不错的?

  • 先用 RBAC 做一套统一的 Auth 服务。

  • 然后把基础设施抽取出来,不进行更细粒度的拆分直接把常用的基础服务打包到一起。

  • 然后考虑拆一个专门的对接服务用来和第三方打交道。

  • 底层数据模型就类似多租户的模式,做 APP 隔离。

  • 中间件准备在加一个,在 Postgres 外添加个 Redis ,够了。

那么在这几个服务的支持下, 我在开新的软件、新产品 就快速方便很多了。

至于多个服务用一套基础服务的性能问题,我是完全不考虑的。 现在我那个单体项目的 DB 配置也就 1c1g ,还天天 CPU 10%。


差不多就这样了……

不知道我的考虑是否正常,想法是否正确?

上面就权当抛砖引玉, 看看各位老哥有没有啥经验,还请多多指导我。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK