我喜欢把系统架构看作是更大规模的应用程序架构。大多数软件系统实际上是由横跨不同层次和技术的多个应用程序组成。举个例子,你可能有这样一个软件系统,Java EE中间层消费Oracle数据库提供的数据,同时向.NET Silverlight客户端提供Web服务。每个部分都有自己的应用程序架构。
要让整个软件系统工作起来,就要思考如何组合这些单独的应用程序。换句话说,要有端到端软件系统在较高层次上的整体结构。另外,大多数软件系统都不是孤立的,因此系统架构还关注互操作性和与环境中其他系统的集成。
结构单元就是各种软硬件,从编程语言和软件框架到服务器和基础设施。跟应用程序架构相比,系统架构描述为从组件和服务到子系统等更高层次的抽象。系统架构的定义大多数都包括了软件和硬件。毕竟,一个成功的软件系统离不开硬件,即使是云上的虚拟硬件。