服务设计思考:平台化

简介: 服务设计思考:平台化

平台是一套完整的服务。也是一套内部自洽的系统。核心在于分离,业务与通用服务隔离,业务与通用功能隔离。

总览

目标:

  • 对需求方: 快速响应。可以敏捷地进行需求迭代。
  • 对第三方业务方: 以产品的方式提供服务。所见即所得。所有功能对业务方透明。
  • 对测试方: 简易明了的测试方式。利于自动化测试,灰度测试。
  • 对运维方: 持续集成,自动化编排,自动化部署。
  • 数据方: 提供多维度,详尽的服务数据。可以给数据方提供简便的数据分析。
  • 内部开发: 敏捷开发。迅速集成。

关系

实现:

  • 如何实现需求的快速响应?明确的方向,清晰的边界。确认通用语言,核心领域。敏捷开发,快速迭代。AB 测试。
  • 如何为第三方提供产品式的服务?
    所见即所得。详尽的文档。第三方调试平台,第三方管理平台。
  • mock 服务,自动化测试,swagger 文档。
  • Devops,CI,DI 等持续集成,服务监控。
  • 业务数据与分析数据异构存储。提供易于分析的数据服务。
  • 组内服务负责制度,人类最佳的合作人数是 2-3 人。所以两人维护一个项目,一人主导,一人辅助,两人交叉合作是一个很好的团队合作模式。如图形成一个网状模式(红色线代表主导,黑色线辅助)。这样每一个项目都将有两个熟悉的人。

团队合作

原则

  1. 单一职责。
  2. 业务关注业务,功能关注功能。
  3. 确认边界,确认核心领域。
  4. 所见即所得。

实施

如何推进业务开发快速响应?
  1. 抽离变化与不变。形成基础服务
    如下面一套用户体系,将服务抽离,将变与不变隔离。
    **用户 api:**主要提供用户相关的接口,变化大,更偏向于业务;
    **用户中心:**主要管理用户核心领域,变动不大,需稳定高可用的服务;
    鉴权授权中心: 变动不大,主要管理用户凭证核心领域;

  1. 抽离通用功能。
    那些非业务的通用功能应隔离于业务之外:组件化工具化服务化
    来源监控接口限流日志分析应用监控服务依赖配置管理系统部署等(业务人员不必关心这些功能相关的事情,只需要关注于具体的业务领域)。关注点分离。
    如上面所涉及的,从Spring Cloud的各大组件可以看出,最终的方案都将走上相近的道路。
  2. 领域上下文划分。划分微服务项目。业务隔离,数据去中心化。服务组件化。
    Spring cloud 技术栈:
  • 服务治理: 注册中心,服务调用,衍生的容错(熔断器)
  • api 网关: 来源监控,接口限流(Spring Cloud gateway、zuul)
  • **配置中心:** 配置管理(Apollo)
  • 自动化部署: Jenkins、docker、k8s
  • 日志与监控: prometheus、influxdb、skywalking、elk
  • 数据可视化: druid、kylin、superset
  1. 细节管控
    接口版本管理, gitflow 管理,项目迭代 release 版本管理,标准化,敏捷开发。


相关文章
|
1月前
|
前端开发
通过建立功能模型来实现通用低代码软件平台
通过建立功能模型来实现通用低代码软件平台
|
3月前
|
开发框架 网络安全 数据库
典型应用集成技术
【1月更文挑战第11天】典型应用集成技术。
21 0
|
9月前
|
Kubernetes 算法 安全
隐语1.0设计理念深度解读:让产品易用,让研发也易用。
隐语1.0设计理念深度解读:让产品易用,让研发也易用。
644 0
|
Java
开发中遇到的问题&解决方案(八)
以前的一个老项目里使用过ZXing进行会员和门店二维码的生成操作,当时出现过Java版本升级后不兼容的问题,很是麻烦,于是替换成了hutool里的二维码生成,下面我们来看看具体的实现。
175 0
开发中遇到的问题&解决方案(八)
|
数据安全/隐私保护
开发中遇到的问题&解决方案(五)
在开发过程中,图片是必不可少的,除了图片的上传下载以外,图片压缩也是很常见的。 下面我们来看看hutool工具类里图片压缩的方法。
269 0
开发中遇到的问题&解决方案(五)
|
SQL NoSQL Oracle
开发中遇到的问题&解决方案(二)
一个软件系统最重要的是什么?毫无疑问是数据,那什么是数据的'运载体',什么作为后端与数据库的桥梁和沟通者呢,是SQL。我是Java开发出身,大学课程当时学习的是SQL Server,而且后面工作中实际用到过Oracle,DB2以及使用的最普遍的My SQL,至于No SQL 这一类下的常用的就是Redis和MongoDB了,这些后面再详细举例说明。今天讲的案列与表情相关,那么接下来进入今天的主题。
136 0
开发中遇到的问题&解决方案(二)
|
Java 数据库 微服务
开发中遇到的问题&解决方案(三)
我们在日常的开发中会使用到很多工具类,比如最常用的Http请求的,或者日期工具类,处理时间差或者对日期进行特殊处理的,还有就是图片上传类的,比如阿里云或者腾讯云得SSO图片上传,以及Excel文件的导入导出。那这些工具类基本上都是跟着项目的,就是每个项目都写各自的工具类,如果分工明确细化到小组那重复代码就多了,那把工具类集成成一个项目类呢,由一个人去维护这个工具类工程,如果是微服务项目就是一个工具类的微服务,这样做的好处就很明显了,至少公司的研发部在使用到常用的工具类时不必再去网上找到。
245 0
开发中遇到的问题&解决方案(三)
开发中遇到的问题&解决方案(四)
今天继续hutool工具类的认识,废话不多说下面直接进入主题。
254 0
开发中遇到的问题&解决方案(四)
|
设计模式 前端开发 Java
开发中遇到的问题&解决方案(一)
在开发过程在我们往往会遇到很多的开发阻碍或者因为原生框架的不支持导致的一系列问题或者有的不是问题,是我们使用普通的大量的复制粘贴改改就能用的代码去实现功能,这样使得代码很冗余,我们能不能去尝试找一些好的方案比如采用设计模式这些去优化我们的代码,实现代码简洁明了,易扩展呢?答案是肯定的。这个系列文章会使用案列加解决方案的形式为大家讲解,那下面我们开始吧。
676 0
开发中遇到的问题&解决方案(一)
|
Java Linux 数据安全/隐私保护
开发中遇到的问题&解决方案(六)
之前的项目里有用到FTP,需要使用FTP把图片及一些必要文件上传到第三方的FTP服务器上,所以会涉及FTP连接,创建用户,创建文件夹,文件上传等,项目里选用的还是hutool包装的FTP工具类,下面来看看这些功能的在hutool里是怎么包装的。
462 0
开发中遇到的问题&解决方案(六)