语境
软件工程具有软件设计模式(例如GoF),它描述了常见编码问题的解决方案 - 通常在代码级别;同样,也有架构模式(例如Fowler)来处理一般的系统架构(虽然这些架构模式处理纯代码之外的考虑因素,但它们似乎往往更多地关注软件工程问题而不是基础设施问题)。
我还注意到像微软这样的平台提供商推出了“云设计模式”。
基础设施即代码 (IoC) 是进一步的复杂因素,其中软件/编码级别的考虑开始变得重要。
具体问题
在基础设施领域,面向基础设施的模式真的存在吗?如果存在,那么是否有任何相对权威的、为基础设施社区广泛理解的模式集合?或者你只是“借用”系统架构模式?
顺便说一句,假设上述问题的答案大致是“是”,那么云基础设施模式是否被视为这些模式的一部分或扩展 - 或者被视为单独的集合?
供参考
我是一名解决方案架构师,有软件开发背景,而不是基础设施背景。当我说“基础设施”时,我指的是网络、物理和虚拟服务器及其部署架构、容量和卷规划、服务器和网络安全等 - 基本上是“软件”架构师可能依赖但自己不明确设计的任何内容。
更新 - 定义
为了让稍后阅读本文的人更清楚:
“模式”是一个广义的术语,并不是特定于学科的……
在软件工程中,软件设计模式是针对常见代码级问题的特定解决方案(很像配方)。这些类型的模式通常与技术无关,但可能特定于编程语言范式(例如面向对象与替代)。
(系统/应用)架构模式,涵盖常见的系统级架构和设计问题,包括:内部组件结构、组件级角色和职责、跨切方面(如身份验证和授权)、错误处理和可观察性、数据持久性。
对于简单的评论来说太长了:
我的直觉是,“基于模式的设计”是源自软件工程(特别是《设计模式》一书)的术语,而不是该领域之外常用的术语。
正如您所提到的,越来越多的基础设施变得“软件定义”,软件工程师越来越多地用他们自己的术语记录他们的工具和功能,这就是为什么我们现在看到像“云设计模式”这样的标题。
在网络设计领域(借用了图论数学领域的许多术语),您可以找到经典的“设计模式”,称为网络拓扑,这些拓扑可能听起来很熟悉,例如轮辐式或星型网络拓扑、环形网络拓扑、网状网络和其他广泛部署且可立即识别的网络拓扑。
除此之外,我没有什么可以立即想到的,除了“形式服从功能”。
与需要挑战和/或在全球范围内运营的应用程序或服务(例如 Netflix、Google、Facebook 等)相比,单一的单体应用程序在合适的基础架构方面几乎无法提供那么多的自由度。了解这些全球企业如何解决类似的挑战,可以发现它们几乎没有共同点,而是各自找到了自己的解决方案,而且这些解决方案通常是从头开始构建的。
比 IT 基础设施更广泛的,也许不是您直接询问的是最佳实践的主体、框架和相关术语,例如ITIL、ASL或TOGAF等。
在寻找设计模式时,最后要考虑货物崇拜的陷阱:
https://en.wikipedia.org/wiki/Cargo_cult_programming
对于给定的现成软件产品,供应商可能会提供参考实现。如果您计划部署 Active Directory,MS 会提供指导,帮助您处理诸如远程办公室物理安全性差或数据链接速度慢等复杂情况。一些供应商会提供扩展和性能指南,例如拆分 2 层或 3 层架构以及如何扩展每一层(如果需要)。
不幸的是,简短的回答是“是”和“否”。
更长的回答,先从“是”部分开始:
构建基础设施的许多方面都是公式化的(实际上任何工作都是如此)。例如,隔离网络段(例如员工 PC 和本地服务器)并过滤它们之间的流量是非常常见的,也是意料之中的,因为这是一种良好的安全做法,也使网络管理变得更容易一些。这是一个简单的例子,但存在许多这样的“模式”,如果你指的是这个的话。在大多数情况下,这种模式被简单地视为“最佳实践”,尤其是在安全问题上。
其他答案在某种程度上提到了另一种模式,但并不完全如此:硬件供应商在配置中提供了硬件的参考实现,这些配置据称是针对最佳性能进行了优化的,主要用于演示目的。
作为客户,您可以简单地订购此参考配置并安装它。它并不完全是主流,因为优秀的架构师将能够看到硬件供应商在不需要的地方包括顶级组件来创造额外利润,因此内部设计基础设施通常更省钱(但不是时间)(再次强调,根据最佳实践进行设计)。
同样,我曾经为一家在世界各地设有工厂的客户提供支持。他们为每个工厂设计了(或承包设计,我不知道具体细节)一个“标准”基础设施核心,具有完全相同的硬件规格、虚拟化堆栈和通用基础设施软件。与定制基础设施相比,这大大降低了培训难度,因为我们承包支持的部分始终相同。
另一方面,除了遵循最佳实践(这些最佳实践通常涉及相对次要的细节或不够清晰,不能算作一种模式)之外,事实上,基础设施不仅仅是“拥有服务器”。很明显,基础设施工作的很大一部分与基础设施特有的事情有关。
此外,基础设施本质上有很多技术债务(硬件昂贵且占用物理空间),因此很容易出现过去的最佳实践在现在不再有意义的情况,但是,服务器可以运行,所以我们不会马上更换它们。