先虚构一家SimpleBank公司,这是一家有着“改变整个投资领域”的宏大愿景的公司。SimpleBank团队希望,不管一个人有多少钱,他都能够享受到智能化的金融投资服务。他们相信,不管是购买股票、出售基金还是进行外汇交易,都应该像开储蓄账户那样简单。
这是一项令人激动的使命,但并不容易实现。金融产品有多重的复杂之处:需要了解市场规则和错综复杂的法规,同时,它需要与现有的行业系统进行集成,并且要满足严格的精度要求。
SimpleBank公司要构建的功能模型总览,投资工具需要提供的功能远不止那些提供给客户的开户和投资组合管理这样的功能。它还需要管理托管和理财产品设计。这个投资工具需要以客户的名义来持有其资产,并进行转入和转出。它还需要根据客户的需要来制订金融产品策略。所要实现的业务功能:投资组合管理、市场数据集成、订单管理、基金设计和组合分析。每块业务领域都可能是由多个服务组成的,这些服务会相互协作,或者可能会与其他领域的服务进行协作。
不管是设计哪种系统,这种总览类型的领域模型都是不可或缺的第一步,但是在构建微服务时,这一步就显得至关重要。如果不解业务领域,设计人员就可能在划定服务边界时做出错误的决策。没有人希望自己所构建的服务是贫血的——只是执行些琐碎的增删改查(CRUD)操作。这些贫血的服务通常是导致系统内部耦合严重的源头之一。同时,我们要避免将太多的责任放到一个服务中,低内聚的服务会使得修改软件时效率更低,风险更大——而这恰恰是我们试图避免的。
总结,一个公司产品的领域功能模型是基于公司的宏大愿景。一般谈愿景,大家都觉得和自己没关系,自己就是干活的,愿景不如谈工资。“改变整个投资领域”的宏大愿景,SimpleBank希望用户能够享受智能化的金融投资服务,不管是购买股票、出售基金还是进行外汇交易,都应该像开储蓄账户那样简单。
怎样才能实现这一宏大愿景?
1) 需要了解市场规则和错综复杂的法规;
2) 需要与现有的行业系统进行集成,并且要满足严格的精度要求。
3) 构建功能模型总览,产品来重点实现这一愿景:3.1) 远不止提供给客户的开户和投资组合管理的功能。3.2) 还需要管理托管和理财产品设计。以客户的名义来持有其资产,并进行转入和转出。3.3) 还需要根据客户的需求来制订金融产品策略。所要实现的业务功能:投资组合管理、市场数据集成、订单管理、基金设计和组合分析。
摘取自 摩根·布鲁斯和保罗·A.佩雷拉的《微服务实战》
网友评论