2.7 购买还是自建
传统IT架构会大量使用第三方软件组件,如数据库软件和系统管理软件,把精力集中在开发专门的业务软件上以提供产品直接的价值,例如运行在应用服务器和数据库引擎上的商业逻辑就属于这类软件。而Google这样的大型互联网服务供应商则通常采用不同的做法:应用层特定的逻辑以及很多集群级基础架构软件均自行开发,平台层软件则采用第三方组件,但也都是开源的,在需要的时候可以自行修改。所以,Google整个软件栈的绝大部分是在服务开发者掌控之下的。
这种方式增加了大量的软件开发和维护工作,但却有利于程序的灵活性并节约成本。灵活性的重要性体现在当关键功能或性能出现漏洞必须马上解决时,程序可以在各开发层级间快速周转以修复漏洞,并可以提供解决问题的多种选择,从而解决复杂的系统问题。例如,一个不必要的网络行为在应用层级可能不好处理,但在RPC库的层面却相对容易解决,反之亦然。
从历史上来看,一个自建而不是购买的主要原因是,当时需要的仓储规模的软件基础架构根本没有商业产品。此外,除非第三方软件供应商自己维护集群,否则充分测试这样规模的软件是很难做到的。最后,自开发的软件可能更简单和迅速,因为可以设计仅满足很小部分的服务需求,因此在该领域中可以更加高效。例如,BigTable为了满足预期应用场景的更高吞吐量和可扩展性需求,就略去了一些传统SQL数据库的核心功能,GFS也是因为相同原因不再提供完整的Posix兼容文件系统。
时间: 2024-10-24 14:29:46