分布式系统架构设计 – 第8式 - 技术思维模型

前言

注:本思维模型系列文章已被infoq采纳并推荐至首页:https://www.infoq.cn/article/JjycubQz3YTBgozaZ4G9

日拱一卒,功不唐捐,一个知识领域里的 “道 法 术 器” 这四个境界需要从 微观、中观以及宏观 三个角度来把握。微观是实践,中观讲套路,宏观靠领悟。本系列文章我把它命名为《分布式系统架构设计36式》,讲诉分布式系统里最重要的三十六个的中观套路,而微服务的本质也是分布式,因此搞明白这三十六个最重要的知识点也就同时能搞明白微服务。

“兵者,国之大事,死生之地,存亡之道,不可不察也”,这句话对企业来讲,兵即产品,国即企业,察即研究探讨,产品关系到企业的存亡,所以不可以不慎重地加以研究探讨。

我们知道一个产品的成功不只是技术的成功,它还包括商业、创新、管理、资本、运营以及销售等的成功。当打造一个产品的时候,通常来说工程人员往往会比较关注技术层面的东西: 方案、功能、难点、亮点以及如何实现等,深度有余但高度与广度往往不足 。一般有点经验的工程人员都可以从点或线的层面考虑一个产品的实现,但往往缺乏从面及体的层面看待一个产品的能力。

因此,如果说技术思维是架构师的一根DNA螺旋线,那么产品思维、创新思维以及商业思维等就是架构师的另外一根DNA螺旋线,只有两根DNA螺旋线俱全才能有机会进化出新物种。

动机

人的知识与能力可以从“时空”这两个角度进行评价,其可分为四个维度:深度、广度、高度以及跨度。空间角度指的是深度、广度、高度,时间角度指的是跨度。深度靠专研,广度靠学习,高度靠抽象,而跨度靠长久地积累经验。这四个维度组合成了一个人的知识与能力的时空度。

万事万物逃脱不出“不易、简易、变易”这三个层次,金庸先生的《天龙八部》里少林寺有72技,其每一技又千变万化,想要样样精通,今生无望,然而练就“小无相功”却可以以这功法催动不同的“技”,甚至可以比原版更具威力,以“不易 简易”之功施展“变易”之术。那么对于技术开发人员来说技术也是“变易”的,更新快,领域多,复杂度高,样样精通也是今生无望,那么需要的就是找出适合自己的“功”,技术思维模型、产品思维模型、创新思维模型、商业思维模型就是这样的“功”。

因此本系列文章提出了技术、产品、创新与商业这四个思维模型,这一系列文章不是为了解决具体的某个分布式系统设计里的难题,它提出了一种思维框架,从技术、产品、创新以及商业的角度,给工程人员以一种系统性的分析分布式系统设计难题的模型,这也是一种系统思维的体现。

技术思维模型

技术思维模型很多,适合自己的才是最好的,这里提出“火箭技术思维模型”以抛砖引玉,如下图:

技术思维模型

火箭思维

在这个技术思维模型里,产品被看作一个圆,技术是一个三角形火箭,它包括“势 道 法 术 器 界”这六个要素。其中技术只是产品当中的一个子集,在产品圆内还有企业文化、企业制度以及组织关系,这也是影响产品的几个非常重要的因素。

在这个技术思维模型中的火箭也体现了一种产品开发思维,开发产品的时候应该先确定好大概的方向(趋势),这时并不需要非常精确但是方向一定要对,然后发射(开工),在过程中不断矫正迭代更新,使得短期目标与长期目标相符合,在这个火箭模型中每一级都都是上一级的动力,一级一级地推动,直至最终命中目标(产品满足市场需求,从而获取商业上的成功)。

技术与产品匹配(TPF: Technology-Product Fit)

在做产品的时候第一步讲的是产品需要与市场匹配 (PMF: Product-Market Fit),找出与市场匹配的产品,然后进行最小可行性验证(MVP: Minimal Viable Product)。同样在做技术的时候,技术需要与产品匹配,这里提出一个新的概念TPF:Technology-Product Fit, 即技术与产品匹配。在技术思维模型里,当技术三角大于产品圆时,技术领先与产品需求,当技术三角小于圆时,技术落后于产品需求,但技术三角的三个点与圆刚好相交时,技术与产品达到最佳匹配,匹配合适度的评判标准是看是否符合下面的“五看三定六要素”的商业思维模型里的输出。

“势、道、法、术、器、界“ 六元组

狭义上的技术通常指的是技能属于“术”的范畴,而广义的技术则是市场趋势、自己的优势与劣势、产品设计理念、工程方法论、技术技能、工程工具以及约束限制这几个方面的组合体,抽象成工程哲学即“势、道、法、术、器、界”这六个字 ,简称技术思维六元组。

势:时势,是市场趋势、是产品定位同时也是自我的优势与劣势

“天时、地利、人和”,打造的产品必须符合市场趋势、准确定位客户需求,同时也要看看自己团队的优势与劣势。例如:依据市场的趋势判断,未来IOT 以及 IT运维市场是处于快速增长状态的,这可以成为为这两个市场提供数据存储服务的决策支持。同时,也要看清自我团队的优势与劣势,是否有能力打造这样的产品。

道:本质,是“不变”的范畴,是一个产品的灵魂、设计理念以及价值观

“能工摹其形,巧匠摄其魂”,代码本身是没有灵魂、没有设计理念、没有价值观的,由打造它的人铸其形而赋其神。如同雕塑与画画一般,好的匠人与宗师可以赋予作品以灵魂。同样的产品由不同的人打造,不同的设计理念体现了不同的产品灵魂,这跟打造它的人相关、也跟企业制度、企业文化、组织结构等相关。

分布式流存储从工程哲学以及设计理念的角度定义了自己的产品灵魂,工程哲学体现在“Best of Breed” 即“最佳物种”这句话,专门为物联网以及日志场景下的流式数据而设计,产品与市场适配,技术与产品适配。而它的设计理念又涵盖了:可度量化的高质量,云原生、微服务架构,软件定义存储,资源自动伸缩,消除数据冗余,数据无限存储,开箱即用,安全等。

法:方法论,是”简变“的范畴,是工程的套路方法

方法论体现在产品的设计原则、产品创新、产品交付以及功能与非功能特性的定义。 分布式流存储的设计原则是最佳物种的工程哲学方法论以及以客户为中心的设计理念,产品创新依据是 ”奇点创新“三部曲:破坏、下移、重生,这一点在”奇点创新思维模型”这一章里会讲述。产品交付依从“持续交付2.0” ,探索环与验证环互补互利、互为驱动。功能特性:分布式流存储系统的核心功能就一个:提供分布式流存储服务,而非功能特性可以一分为二:质量与约束。

术:技能,是”易变”的范畴,狭义上的技术,通常指的就是这一点

术,指的是技术上的设计方案与实现,在产品里占据了最大的一块版图。分布式流存储里的术可分为:

  • 架构视图:通常架构可以分为场景、物理、逻辑、数据处理以及开发这五个架构视图。分布式流存储最为朴素的数据处理架构视图即为抽象缓存与2层存储资源为流资源,实时性的读和写都在缓存里,数据恢复采用分布式日志系统,而长期存储采用了2层分布式文件存储系统,这也是分布式流存储最重要的一个设计理念。

  • 控制面:分布式流存储的控制面最重要的两个工作就是:流管理与集群管理。流管理负责流的抽象、流的生命周期管理,而集群管理体现在集群状态管理以及集群的可服务管理。

  • 数据面:数据面最重要的职责是数据“段“的抽象与管理:创建、删除、修改、使用。

  • 高级企业特性:分布式流存储也提供了多租户、安全、监控告警、事务、读群组、状态同步器以及保序等企业级特性。

器:工具,也是”易变”的范畴, “工欲善其事,必先利其器”

工具的使用对人类的进化起到至关重要的作用,生产工具是人类进步的一大要素,用好“器”可以事半功倍。在分布式流存储里采用的器可分为:

  • 构建与运维工具:k8s、Docker, 部署,版本回滚、升级、发布,监控、告警等组件;

  • 测试验证工具:集成测试的Jenkins, 单元测试的 Mock , 以及A/B测试的方法论等;

  • 此外企业平台提供的资源支持也可以属于器的范畴。

界:是约束,也是限制

技术思维模型里的三角形的三条边代表着“界” ,是技术边界也是技术约束与技术限制,对市场来说它是技术壁垒,对产品来说它是法律法规、是功能约束,对团队来说它是资源约束、是自我能力约束。分布式流存储的最大的技术优势也是最大的技术约束就是它是为 物联网、IT日志这样的数据格式而设计的,不是所有的数据类型存储都适用。

小结

本系列文章讲述了四个思维模型: “技术思维模型、创新思维模型、商业思维模型以及产品思维模型”,再结合分布式流存储做了简单的举例分析。本文讲述”技术思维模型“,日拱一卒,功不唐捐,分享是最好的学习,与其跟随不如创新,希望这几个思维模型对大家有用。另作者能力与认知都有限,”我讲的,可能都是错的“[1],欢迎大家拍砖留念。

作者简介

常平,中科大硕,DELL EMC 资深首席工程师,主要从事分布式产品的交付、架构设计以及开发工作。

版权申明

本文的版权协议为 CC-BY-NC-ND license:https://creativecommons.org/licenses/by-nc-nd/3.0/deed.zh

在遵循署名、非商业使用(以获利为准)以及禁止演绎的前提下可以自由阅读、分享、转发、复制、分发等。

参考资料

[1]《第二曲线创新》 李善友

[2]《如何在一分钟内用5个问题讲清你的商业模式》 中欧商业评论,关苏哲

[3] Pravega.io