上一篇文案,我摘录了《程序员的呐喊》。这本书有趣的内容太多,今天再摘录一段。
1、
亚马逊机构不仅是世界最大的网络书店,还是世界最大的云服务商。它是怎么实现从电商到云商的转变呢?
一切都是CEO杰夫·贝索斯促成的,他对市场有着超乎一般人的理解和预见。
2、
2000年前后,贝索斯有一次在员工大会上说到,各样办公工具、书籍、影音制品都能够数字化,因此亦寓意着很容易盗版。数字制品可能会利润越来越低,火速就再也不产生任何收入了。
所有的民用工业品亦都很不妙,服装和电子消费品的消费周期越来越短。连烤炉这种东西,亦没人想要去年的型号。总之,卖这些东西,看上去亦不太会赚大钱。
亚马逊将来靠什么挣钱,贝索斯不仅忧心忡忡。
3、
2002年,贝索斯忽然向全机构发布了一道指令。
(1)从今天起,所有的团队都要以服务接口的方式,供给数据和各样功能。
(2)团队之间必须经过接口来通信。
(3)不准许任何其他形式的互操作:不准许直接链接,不准许直接读其他团队的数据,不准许共享内存,不准许任何形式的后门。独一许可的通信方式,便是经过网络调用服务。
(4)详细的实现技术不做规定,HTTP、Corba、PubSub、自定义协议皆可。
(5)所有的服务接口,必须从一起始就以能够公开做为设计导向,无例外。这便是说,在设计接口的时候,就默认这个接口能够对外边人员开放,无讨价还价的余地。
(6)不遵守上面规定,就开除。
他认识到,亚马逊现有的卖书送书的基本设备,其实能够变成一个非常出色、可定制的计算平台,让用户付费运用。然则前提是,全部基本设备必须改导致面向服务的架构。
4.
接下来的几年里,亚马逊全机构都转向了面向服务的架构(SOA)。这个过程中,工程师们得到了海量的经验教训。
教训一:SOA架构的错误定位,非常麻烦。
一个请求可能要经过20次服务器调用,才可找到问题的真正所在。一般,单单是问题的定位就要花费15分钟到几个小时,除非搭建海量的外围监控和报警办法。
教训二:同事亦是潜在的 DOS 攻击者。
机构内部某个小组,会忽然对你的服务发起海量请求。除非每一个服务都设有严格的用量和限量办法,否则基本没法保准可用性。
教训三:监控和质量保证(QA)是两回事。
监控一个服务的时候,可能会得到"一切正常"的回复。然则特别有可能,全部服务独一还正常工作的部分,便是这个回复"一切正常"的模块。仅有完整地调用服务,才可确定服务是正常的。
这寓意着,真正监控一个服务,必须做到对所有的服务和数据进行完整的语意检测,否则是看不出问题的。倘若做到了这一点,本质上便是在做自动化 QA 了。
教训四:必须有服务发掘机制。
面对成百上千的服务时,无服务发掘机制是不可想象的。这又离不开服务注册机制,而它本身亦是一个服务。亚马逊有一套统一的服务注册机制,能够经过编程的方式找到所有服务,包含一个服务有那些API,日前是不是运行正常,在什么位置等。
教训五:必须有沙箱用来调试
倘若代码中调用了他人服务,查询问题的难度要高非常多,除非有统一的方式在沙箱里运行所有服务,否则几乎不可能进行任何调试。
教训六:不可信任任何人
团队采用服务的方式进行合作以后,基本上就不可信任其他团队了,正如不可信任第三方工程师同样。
原文位置:http://www.ruanyifeng.com/blog/2016/09/how_amazon_take_soa.html
.NET社区资讯,深度好文,微X中搜索dotNET跨平台或扫描二维码关注
|