这又回到一个事实,任何技术都有其优缺点,作为可交换的商品,并不一定有不同的选项。对于通常被看作是商业化的技术,关系型数据库和Web应用程序框架是两个典型的例子。很多云服务提供商也是如此,即使他们有各自关于部署、监测、管理、成本、持续磁盘访问等方面的权衡。
一天结束时,不论是否与性能、可伸缩性、可维护性、找到有合适经验的人的能力等方面相关,你做出的每一个技术决策都有权衡。理解技术选择也能协助高层次的预测和计划,如果你需要明白是否能用给定的有限预算实现目标,这就很有用。
如果你不明白选择X技术而非Y的权衡,那就不应该做决策。设计软件系统的人要懂技术,这很重要。这就是为什么软件架构师应该是建造大师 。
技术不只是一个“实现细节”,你做出的技术决策跟你分解、安排和设计软件系统的方式同等重要。推迟技术决策,后果自负。