软件设计的一个共同目标似乎是构建一个应用程序,以便更改影响最少量的组件(即编译的程序集),然后可以单独发布。应用依赖性倒置原则使得稳定的组件不依赖于易失性组件,类再次以一种方式打包以将部署限制为最小的组件集。
所以我的问题是,对于每次更改,完整地发布整个应用程序有什么问题?特别是如果发布是完全自动化的单击解决方案。当然,单独部署组件意味着我必须单独版本和管理它们作为具有自己的依赖项的迷你项目?很大一部分“好设计”似乎依旧于这一原则,即分别发布每个组件是一件好事,但为什么呢?
答案 0 :(得分:1)
完整地发布整个应用程序有什么问题 对于每次改变?
如果你能管理它,我认为没有任何错误。这似乎是Facebook所采用的approach:
因为Facebook的整个代码库被编译成单一的 二进制可执行文件,该公司的部署过程是完全不同的 从您在PHP环境中通常所期望的。罗西告诉我 表示整个Facebook应用程序的二进制文件是 大约1.5GB。当Facebook更新其代码时 生成一个新的构建,新的二进制文件必须推送到所有的 公司的服务器。
部分部署有时可以用于维护组件团队之间的一定程度的自治,但如果未对特定版本组件组合进行测试,则可能会导致意外行为。
然而,模块化设计的动机更多的是易于改变(可演化性,可维护性,低耦合性,高内聚性),而不是部分部署的能力。