博主从事了三年的saas产品开发,这三年的时间都在这一个saas产品上。该产品基本的架构是采取了微服务架构,后段采用java加Spring以及maven,前端使用的是jquery,UI5,数据库则各个模块各自使用自己需要的数据库,主要是postgresql,以及mongodb。中间件则是使用的rabbitmq。部署在aws云平台上面。
后端
后端主要处理项目的核心业务逻辑。后端需要考虑下面这些:
- API versioning即暴露的接口的版本控制。为什么需要考虑这个问题,原因在于我们的接口一旦暴露给客户使用之后,就必须保证接口的稳定性,不能因为升级新功能导致老的接口就无法使用,这样的产品是无法获得用户的好感的。因此,当有新的功能且这个功能需会改变接口的逻辑时,保留当前的接口,而提供一个新版本的接口就是一个很好的办法。例如:老的接口为:api/v1/customer. 新的接口为:api/v2/customer。以此类推,但是需要主要的是,只有当必要的时候才应该去升级版本。
- Authorization访问权限控制->即当调用api时需要提供的用户名和密码。可以考虑vault来进行管理。
- 不同service之间的依赖关系->contract保证
- log日志格式,以及存储位置,以及查看方法。比较常用的日志查看工具有kibana
- 项目用到的构建工具,包管理->maven。对于java项目而言比较常用的还有gradle
- 代码管理->github,使用branch管理代码,要merge代码到master branch需要人进行code review
- 代码质量常见问题,例如code smell,security问题->sonar,v