软件服务化的首要问题---沟通

Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations. - Melvin Conway(1967)

50年已经过去了,康威定律依然适用。

应用早期,应用单体,团队成员之间沟通方便,随着系统演进,对单体应用进行服务拆分,每个服务有独立的团队进行开发、维护,不同服务之间的依赖关系错综复杂,不同服务的成员之间首要面对的问题就是沟通。

1、服务增多,人员沟通成本,不确定因素变多(原来的单体应用,到现在多服务,多集群)当然同时也带来了性能上的极大提升。

2、单体服务对外依赖越来越重,联调需要协调一堆的人,搭建一堆服务。这样就很难得到一个既稳定又快速响应的环境。而且同一个服务可能有不同的版本同时在线,所以也有可能调用不到自己想调用的服务。

产生问题的原因,就是对远程服务的依赖太过。

解决的关键:在本地构建远程服务的模拟。

1.传统方法:通过mock把本地服务队远程的调用全mock掉,并且随着业务逻辑不断变化,还要不断的写mock代码,并且等到其他的服务上线了,还需要把mock的连接层去掉。调测语句的需要在开发过程中不断的修改。还有就是如果某一个服务的接口变了,或服务内的实现变了,没有通知到你,那么只有部署到环境上才会知道这个变化。

2.如果自己打一套完整的环境,沟通协调搭建成本太高。

3 .构建一套mock系统,将服务的所有对外请求消息转发到mock系统,mock系统再返回其想要的结果。(由于其复杂度,在这里不做过多),要处理的场景比多,消息只是一种,还有数据库,kafka之类的服务。或者是公司自己的框架系统

下面列出了在服务化过程中的常见问题:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,686评论 25 708
  • (git上的源码:https://gitee.com/rain7564/spring_microservices_...
    sprainkle阅读 15,148评论 17 20
  • 上周,广大果粉翘首以盼的iPhone6携手姊妹iPhonePlus空降人间。原以为具有少男少女杀手称号的“爱疯”同...
    叨叨叨叨叨叨斋阅读 231评论 0 1
  • by:孤鸟差鱼 心老了 心动 就很难被挑拨 那是个稀罕物 不再容易拥有
    孤鸟差鱼阅读 247评论 0 1