99%的程序员都不知道这项技术!

2018-10-25 10:21:02 浏览数 (1)

大多技术人都不了解的领域驱动设计

因为微服务,人们似乎才重新发现了领域驱动设计的价值,可惜的是,对于这样一个在国外 IT 圈享有盛誉并行之有效的设计方法学,国内大多数的技术人员却并不了解,也未曾运用到项目实践中。

什么是领域驱动设计

领域驱动设计是针对复杂系统设计的一套软件工程方法;而微服务是一种架构风格,一个大型复杂软件应用是由一个或多个微服务组成的,系统中的各个微服务可被独立部署,各个微服务之间是松耦合的,每个微服务仅关注于完成一件任务并很好地完成该任务。

领域驱动设计中限界上下文与微服务之间的映射关系。假如限界上下文之间需要跨进程通信,并形成一种零共享架构,则每个限界上下文就成为了一个微服务。在微服务架构大行其道的当今,我们面临的一个棘手问题是:如何识别和设计微服务?领域驱动的战略设计恰好可以在一定程度上解决此问题。

为什么要学习领域驱动设计

如果你负责的软件系统并不复杂,如果你已经能设计出美丽优良的软件架构,如果你只希望脚踏实地做一名高效编码的程序员,那么,你确实不用学!领域驱动设计自然不能解决所有疑难杂症,但却能给你带来一些收获:

  • 领域驱动设计是一套完整而系统的设计方法,它能规范你从战略设计到战术设计的过程,使你的设计思路更加清晰规范。
  • 领域驱动设计与微服务架构天生匹配,无论是在新项目中设计微服务架构,还是将系统从单体架构演进到微服务设计,都可以遵循领域驱动设计的架构原则。
  • 善于处理与领域相关的高复杂度业务的产品研发,可以建立一个核心而稳定的领域模型内核,有利于领域知识的传递与传承。
  • 强调对架构与模型的精心打磨,尤其善于处理系统架构的演进设计。
  • 领域驱动设计的思想、原则与模式有助于提高团队成员的面向对象设计能力与架构设计能力。帮助团队建立一个沟通良好的团队组织,构建一致的架构体系。

如何开始学习领域驱动设计的第一步

要掌握领域驱动设计,就要去思索它概念背后蕴含的原理,同时,要学会运用设计原则去解决问题,而非恪守“设计规范”。例如:

  • 思考限界上下文边界的划分,实际上还是“高内聚、低耦合”原则的体现,只是我们需要考虑什么内容才是高内聚的,如何抽象才能做到低耦合?
  • 是否需要提取单独的限界上下文?是为了考虑职责的重用,还是为了它能够独立进化以应对未来的变化?
  • 在分层架构中,各层之间该如何协作?如果出现了依赖,该如何解耦?仍然需要从重用与变化的角度去思考设计决策。
  • 为什么同样遵循领域驱动设计,不同的系统会设计出不同的架构?这是因为不同的场景对架构质量的要求并不一样,我们要学会对架构的关注点做优先级排列,从而得出不同的架构决策。

对于领域驱动设计,我也是经历了太多坎坷与陷阱之后,才走在了大多数开发人员的前面,我尝试着解答领域驱动设计的诸多谜题,期望能从我的思考与实践中发现正确道路的蛛丝马迹。

我写的这门课程正是我跌跌撞撞走过一路的风景拍摄与路径引导,就好似你要去银河系旅游,最好能有一本《银河系漫游指南》在手一样,不至于迷失在浩瀚的星空之中,我期待这门课程能给你带来这样的指导。

0 人点赞