分布式系统架构:架构策略与难题求解
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 永不过时的软件架构建议

软件开发生态系统持续且混乱地转变和发展。几年前风靡一时的话题不是被生态系统吞噬掉,就是消失了,或是被不同的或更好的东西取代了。例如,10年前盛行的大型企业级架构风格是编排驱动、面向服务的架构,现在基本上没人再用这种架构风格了(稍后将解释其原因),现在备受分布式系统青睐的是微服务。这种转变是何时因何发生的?

当架构师审视一种特定的风格(尤其是过去的风格),必须考虑让这种架构走向主导地位的那些限制。彼时,很多公司正在合并成为大型企业,伴随转型而来的是整合问题。

此外,开源对大公司来说还不是可选项(通常是政治原因而不是技术问题)。因此,架构师强调共享资源和集中编排作为一种解决方案。

不过在这几年间,开源和Linux成为可行的选项,让操作系统在商用上免费。然而,真正的转折点发生于Linux在运行上变得更加自由灵活,随着Puppet和Chef这样的工具诞生,开发团队可以把启动环境作为自动化构建的一部分。一旦具备这项能力,便引发了架构变革,包括微服务和快速涌现的容器化基础设施,以及Kubernetes等编排工具。

这说明软件开发生态系统在以完全不可预料的方式进行扩展和演进。一个新功能导致另外一个新功能,你不知道它会创造出什么新的功能。随着时间推移,这个生态系统一点一点地把自己完全置换掉了。

这给技术(特别是软件架构)书籍作者提出了一个问题——如何让我们写的内容不会马上过时?

我们在本书中不关注技术和实现细节,而是重点关注决策制定和其中的权衡。我们使用当下的场景和例子来提供细节和上下文,但基本原则着眼于在遇到新问题时的权衡分析和决策制定。