不要把能否胜任与自己开发还是外部购买或者与核心决策还是上下文决策的问题相混淆。你可以购买解决方案,但仍然要能胜任去部署和维护它们。事实上,客户也要求你如此做。
也许你认为这条原则是不言而喻的:“对于我们所做的来说,我们当然是能胜任的,否则我们如何保持业务?”为了说明这个原则,我们假设你有一个因特网产品,如某种SaS平台、电子商务产品或其他在因特网上交付的解决方案。
你的团队对你采用的负载均衡器真正了解多少呢?你多久请求一次外部帮助来解决这些负载均衡器的问题或者实现新功能呢?你的数据库又如何呢?你的开发人员或DBA知道如何判断哪些表需要索引,哪个查询运行得比梦愒四?你知道如何担表移到文件系统上,减少争用,提高整体生产力吗?你的应用服务器又如何?谁是处理这些问题的专家?也许,你对所有这些问题的反应是,你并不需要亲自做这些事情。你可能从其他人写的书中读到过,应该发现自己具有与众不同的能力的领域,并专注于这些领域。然而判定一个组件是否“非核心”或者该组件究竟应该从外部购买还是自己开发,这并不应该与判断团队是否有相应的能力来掌控所购技术相混淆。使用第三方或开源数据库绝对没有问题,但这并不意味着你就不必了解数据库,不必具备对它进行操作和故障检修的相应能力。
你的客户期望你交付给他们的是一个服务,而你开发一个独一无二的软件来创建这个服务只是实现目的的手段。归根结底你是在一个服务业,这一点不要理解错了。这是一种必需的心态,如果缺乏这种心态,事实证明这会造成公司退化甚至毁灭。 Friendster过于关注“朋友圈”(F-graph),这是一种用来计算社交网络中人际关系的复杂解决方案,可能是它在个人社交网络竟争中败给 Facebook的原因之一。这种关注背后是一种态度,一种许多软件商店都持有的态度,即“朋友圈”所提出出的难题必须得到解决。这种关注会造成站点服务中断或者响应缓慢,因为系统在实时计算人际关系时会变得缓慢乃至停止运行。与之相反的是关注服务,即可用性和响应时间比任何特殊功能都重要。软件只不过是提供服务的一种手段而已。
但在我们的世界中,你所需要的不只是软件。基础设施对以高可用性的方式按时处理事务来说也很重要。就像我们可能会过于关注解决方案中的一个问题一样,我们也可能会忽略用来提供服务的架构中的其他组件。如果说,为了顺利提供服务,我们必须在软件方面能胜任,同样我们必须在与此相关的其他方面也做到如此。客户期望得到的是优秀的中的组1件出了故障,他们不会体谅你并不是井友者也不是这方面的专家,而且也不会关心这些。
因此,虽然你不必开发解决方案中的每一部分(事实上我们也不应该开发每一部分),但却要对每一部分都有所了解。对于我们采用的任何东西,我们都要能够正确地加以使用和维护,并在它们发生故障时,能够迅速地予以恢复。通过在自己的网站设计团队内发展这些技能或者寻求合作伙伴的支持,可以帮助我们做到这一点。团队越大,对某个组件依赖越多,我们就越应该具有自己的专家。而团队越小,相应组件的重要性越低,我们就越应该将事情交付给外包专家去做。但如果依赖合作伙伴提供帮助,那么你们之间的关系就应该不止于大多数设备供应商所提供的。这些服务供应商必须与你共担风险。换句话说,他们需要在你的服务发生故障时,切身感受到你和你的客户的痛苦。当客户因为服务出现问题而对你大吼大叫时,你绝不能让自己陷入这样的境地,一方面要在这些供应商的等待队列中苦苦等待,另一方面最终等到的却不是高水准的支持。
本文地址://www.gogoparty.cc//article/3526.html