关于服务拆分的一些想法
今天下午开了一个分享会,同事的主题是服务拆分,主要是讲怎样定义服务边界,合理拆分服务。业务中财务这部分是由他负责拆分的,所以这次分享他的经验。
整个听下来,他是先定义这个服务是做什么,划分服务的业务范围,然后再看数据库表。因为拆分服务的同时需要拆表,所以需要一种折中的方法去拆表。
然后新增加的接口应该怎样定义呢?是应该放在哪个服务呢?他认为还是要看业务的相关度,比如这次拆分的是财务,那么支付就应该放在财务服务里;再说查询,要看查询的主体,然后看主体所在的服务,这次查询可能会有一些附加信息需要从其他服务取。
而我想到了《重构》这本书中讲的,关于类之间关系的重构。如果把服务看作类,那么服务拆分就是将一个类拆为两个类,服务的接口就像是类方法,服务的数据就像是类属性,将相关属性和方法移到新类。
这里肯定会遇到一个问题,有些方法同时需要两个类的属性,或者说新增加的方法好像放在哪个类都挺合理。《重构》中好像是暂时进行一个选择,看方法对哪个类依赖更多,包括类的属性和方法,那么就可以暂时将这个方法放到该方法更加依赖的类。如果以后这个方法对另一个类依赖更多了,那么就将这个方法移到另一个类中,重构是随时进行的。
网友评论