远见与创新

2006-06-25

SOA in Amazon

毕业于Cornell、在高可用、可扩展系统研究方面科班出身的Amazon CTO Werner Vogels的Blog名字就象他在Amazon追求的一样:All Things Distributed

2006年5月,ACM 图灵奖获得者,微软技术院院士Jim Gray拜访了Vogels,然后在ACM Queue发表了他们的谈话。他的这篇文章,让我对Amazon刮目相看。

让我侧目的原因是,根据Vogels的说法,Amazon已经在5年前就开始将它的平台结构全面转向SOA(Service-Oriented Architecture),至今已经取得了5年开发、运营的成功经验。

所有活跃在当今国际舞台上的外国巨型公司都知道,面对象联想、华为这样的厂商,他们存活的唯一希望就在于他们对大规模、可扩展、高性能、高可用系统的技术的把握。这,就是真正的核心技术。

1996年,Amazon起家时,在它的后面是一台网络服务器和一个数据库。到了2001年,随着越来越大的系统规模,Amazon系统的可扩展性已经到了极限。

可扩展性和可维护性是软件业永恒的难题。对此,所有的开发者都有着切身体会。面对数十年来延续下来的、全球化团队平行开发、超过百万行的代码和纠缠不清的数据结构,真是令人疯狂,哪才是正确的出路?

2001年,面对同样的问题,聪明的Amazon人坐了下来。经过一段严肃的思考,他们开始了世界上第一次大规模的SOA旅程。历史将记住这个时刻。

5年以后,微软CTO比尔.盖茨宣布即将退位,他委以重任的接班人正是SOA技术专家Ray Ozzie,由此可见SOA在当今世界的地位。

对SOA的定义,下面是Vogels的原话,非常中肯。

"For us service orientation means encapsulating the data with the business logic that operates on the data, with the only access through a published service interface. No direct database access is allowed from outside the service, and there's no data sharing among the services."

目前,Amazon已经这样封装、实现、维护和运营着数百个这样的业务。5年来,Amazon已经从当初的前端网络服务器+后端数据库的两层结构变成了"a fully-distributed, decentralized, services platform serving many different applications",支撑起了5千5百万用户和1百万合作伙伴。Vogels坦言这一SOA平台是Amazon的战略优势

Vogels说,严格的面向业务设计和SOA是获得功能模块隔离(isolation),从而获得可扩展性的杰出方法,能够给开发、运营带来前所未有的Ownership和控制,也给加入更高级的系统可扩展技术以提高整个系统性能,如decentralized request routing 或 distributed request tracking带来了方便。

目前,Amazon主要采用的是业务使用-提供这一模式。在Amazon Service内部采用了WSDL之类标准,但使用了优化的传输和marshalling方法,以提高CPU和网络使用效率,对外部客户使用XML feed接口和REST、SOAP接口。据他们统计,使用REST接入Amazon service的客户端一般是基于LAMP的系统,而使用SOAP的一般是基于Java或.NET平台的系统。

对于最近比较热门的self-describing XML documents flowing around技术,他坦言:"We are on our way to using this in a number of cases, but we are not there yet. There are advantages, especially when you aggregate services into new services, or when you compose pipelines of services that operate on a message floating through the pipeline. But in many of our cases the contract between consumer and producer clearly defines the messages that will be exchanged, and we can optimize by not using self-describing features"。说明作为一个公司,Amazon更切重实际。

令人震撼的是,Amazon不仅将SOA当作其平台的技术架构,更将其整个业务开发流程围绕SOA展开。

Vogels直言,这样做非常困难。他提到的几个典型问题是:"How do you make sure that developers are productive in this large distributed service-oriented architecture? If you have this decentralized organization where everybody is developing things in parallel, how can you make sure that all the pieces work together as intended, now and in the future?"。他还特别谈到测试。对此我深有同感。好的测试是软件系统成功的一半,大规模软件系统的测试一直是公司质量和成本管理上巨大的难题,而分布式系统的测试更是一个历史上空前的挑战。

任何有些许大规模软件开发经验的人员都知道,Amazon过去5年来组织和实施这样多达数百个业务的大规模开发、维护和运营,意味着怎样的挑战。勇气、决心、远见、创新、智慧、组织管理技巧,这一切都只是家常便饭,无法保证它的最终成功。

Vogels将这称为"混沌"(Chaos) 的挑战。他用"生活本不是决定性的"这一哲学思考来进行理解,得到"混沌"不可避免,也无需逃避的结论。他说:"From the outside, the services in our platform may appear chaotic, but chaotic in a good sense-in that we try not to impose a rigid structure on the different functional pieces, but we expect there to be order when looking at it from a different dimension. Thinking about this whole system as a big deterministic system would be unrealistic. Life is not deterministic, and a large-scale distributed system such as Amazon has many organic and emerging properties that can come to life only if you do not constrain it."。

为此,一方面,Vogels要求能够进入Amazon的员工主动、有高度责任感。他说:"The Amazon development environment requires engineers and architects to be very independent creative thinkers. We are building things that nobody else has done before, so you need to be able to think outside the box. You need to have a strong sense of ownership, because in the small teams in which you will work at Amazon, your colleagues will count on you to pull your weight-especially when it comes to operating the service that you have built. Can you take responsibility for making this the best it can be?"。

而另一方面,Vogels们一定有他们的实现方式,当然,这是他们的核心商业秘密,他没有透露。

因为"混沌",过去5年Amazon做的一切,本可以轻而易举地变成一场噩梦,但Amazon取得了最后的胜利。为此,它赢得了我的尊重。

作为负责技术的官员,和在本是技术访谈的讨论中,Vogels谈论最多的竟是客户,令人对Amazon更加充满信心。在这里,又是SOA使Amazon的技术开发和客户需求几乎完全结合,达到了软件工程需求管理方面的新高度。

大多数软件开发人员都知道,对于大规模软件来说,开发人员自己去直接面对客户在客观上、管理上和实现上都几乎难以实现。公司内部必须有详细的分工,才能最后保证高质量地完成哪怕最小的客户需求。而Amazon 的SOA使这一要求成为可能,非常令人启发。

为此,他一方面要求Amazon的员工具有强烈的客户意识,并将技术人员两年轮换做客服。他说:"A very important point is whether candidates think the right way about customers and technology. Technology is useless if not used for the greater good of serving the customer. We are a strongly customer-oriented company, and we often use the "working from the customer backwards" approach. This means that in your thought process, you start with the customer and work your way backwards until you have found the simple and minimal technology that you need to satisfy the new customer requirement. It is important that engineers who come to work at Amazon understand that we do not build technology for technology's sake, but to support the customer."

另一方面,因为Amazon通过将其系统和业务分解为数百个Service展开独立开发和运营管理,使这些Service直接面对终端客户成为可能。具体来说,对于一个新的业务想法,Amazon会首先定义好测量这项业务成功的检验参数,(我想可能是诸如:使客户在网站上的停留时间延长10分钟,购物平均消费提高5%,之类的参数),然后开始以小组的方式进行敏捷开发,迅速开发出系统原型,然后开始回归。他们"try to go into prototype mode pretty quickly, and then you start iterating on that until you feel that you understand your business problem"。在此,SOA的松散耦合业务模型是他们敏捷开发的关键,用Vogels的原话是:"This fast response to new ideas is enabled through the loosely coupled services model, both in technology and at the developer and operations level"。在原型开发完成后,便是疯狂地根据前面定义的测量参数进行无情的测量,以决定新业务的改良和生死。据Vogels说,这导致Service的开发团队极具有创造力。

此外,Vogels个人对开发具有足够的尊重和深刻的理解,他说:"Developers are like artists; they produce their best work if they have the freedom to do so"。能够有人这么说,也值得庆幸了。

注:请原谅引用了这么多的英文,因为有些字词难以轻松转译。如有需要,请与我联系。

Technorati : ,

标签:

2006-06-19

向加泰罗尼亚致敬

《向加泰罗尼亚致敬》,乔治.奥威尔,江苏人民,7214039818,189页

即使70年后,乔治.奥威尔依旧能够通过他简洁、生动而至情的描述,一把就把人拉进上个世纪30年代火热的西班牙革命中。那无数迷人的细节让人不由自主地着迷,鼻子里似乎已经闻到了那里的气息,而心里,充满了想要和他们同甘共苦、患难与共的强烈愿望。

是什么力量,使英国一位正在大学悠然求学的年轻人,能在泥泞、肮脏、物质条件如地狱般的西班牙前线,安之若素,视生死于不顾?是什么力量,使比利时一位预备役军人,冒着被自己国家军法处置的危险,来到西班牙前线不顾劳苦地来往奔波?是什么力量,使原本来采访的奥威尔,毅然拿起枪,加入前线,子弹贯穿脖子,而又受到己方的怀疑、迫害,依旧不悔?又是什么力量,使全欧洲的工人为西班牙革命的成败牵肠挂肚,再也顾不了自己的妻儿和生命了,去西班牙战斗?

是追求"平等"的力量,是要求"尊严"的呼声,是"理想主义"的号召。

去这样一个地方,所有的人们都互相称呼同志,在再大的官员、老板面前,也可以平等视之,尽可以畅所欲言,而如果熟络的话,更可以拍着对方的肩膀,打成一片;去这样一个地方,没有贫贱富贵,甚至富人都迫不及待地穿上工人的衣服,试图和你称兄道弟;去这样一个地方,向一个刚认识三分钟的同志要求来一支烟,他就不容分说把一整包一把塞进你的口袋;去这样一个地方,当焦急期盼的满载军火的军车终于到达的时候,在副驾驶的位子上坐着一位美丽的姑娘,腿上放着一支冲锋枪。。。1936,西班牙,工人、劳动者、自由知识分子心中的天堂。

每一个人心中都有天堂,这是我再也不会怀疑的了。在令人震撼的电影《盲井》中,除了心存怜悯的杀手,邮局外面和女孩偶遇的那一瞬间更令人震撼。这一刻,具有让人震服的力量,这一刻,具有能够改变一个人对整个世界看法的力量。这就是人们追求自己天堂的方式么?是的,去面对吧,心里充满怜悯。

Technorati : ,

标签:

2006-06-11

陈升

99年的时候,偶然和几个远在上海复旦的朋友认识,知道了陈升。其中一位朋友的生花妙笔令人难忘,当时他热情洋溢地为陈升做了一个网站。而在另一位朋友的描述中,有一天他在去上班的路上从出租车上下来,泪流满面,因为在当时的空气中,正回绕着一首陈升歌曲的旋律。震惊于他们的着迷,我开始听陈升的歌。

当年的朋友早已杳无音信,可毋庸置疑的是,他们一定还在听陈升的歌。而我,只要到了歌厅,总会不自觉地翻到陈升的那一页,点上几个曲子,唱,合唱,或者看着人唱。听陈升,是一种全身心的享受。

在和刘若英的那期《桃色蛋白质》里,不仅场上的刘若英和候佩岑眼泪狂飞,场下也是泪如雨下。面对刘若英饱含热情的倾诉和候佩岑不动声色的问题,陈升,以一个男人的外表,缓慢、镇定、严肃、坦诚、却极其无情地进行回答。他是如此地不动声色,冷酷至极,但他开始唱了,开始回到他的本来面目了。他开始唱,《风筝》、《纯情青春梦》、《然而》。当悠扬的曲声响起,当他内心奔涌的热情、自我压抑的痛苦、理智与情感的挣扎、爱慕、怜惜、忌妒、温情、一切的一切从歌声中喷涌而出时,我终于体会到了当年朋友踏下出租车时那一刻的感情。

注:这一期《桃色蛋白质》在BT China可以下到。

Technorati :

标签:

2006-06-05

“招财进宝”的意义

淘宝最近推出的"招财进宝"服务引起了一片争议之声。在我们看来,淘宝善意的解释是真诚的,而它最后通过用户投票这一非常的方式来解决这一问题,也体现了淘宝对用户的诚意。淘宝,依旧和广大用户站在一起。

对于"招财进宝"这一新兴事物,我们想从产业的角度来表示我们的支持。这项服务从创意和模式两方面来看都是一种值得鼓励的创新。

自互联网作为一种媒体出现以来,事实已经证明了以免费服务为主体、广告收入为服务手段的运营可行性。但是,互联网作为新媒体,也逃脱不了需要解决广告业面临的两个经典问题:一、谁看到广告(即受众的问题);二、广告受众是否真正认真读过广告,即广告的效果。

目前,以Google AdWords为代表的搜索关键字竞价广告模式,在一定程度上解决了谁看到广告的问题。只有点击过,才被认为一次成功的广告。因为在这个问题上面的突破,Google Adwords得到大家的接受,得以支撑起Google目前傲人的市值。

但直到目前,第二个问题依旧没有足够好的进展。一些信息表明,Google在进行这方面的努力,比如传说中的Google Pay。所以,当我们看到,淘宝正在以"招财进宝"这一实际行动试图对这个问题进行解答的时候,心情非常激动。"招财进宝"按效果付费的这种广告模式,是对互联网广告的一种重要创新。如果这一模式能够成功,将是淘宝对电子商务业界一项极为重要的贡献。

从马云先生的解释来看,淘宝并不期望以"招财进宝"获得利润,而只是一种探索。从这种角度出发,我们要对马云先生及其团队做出这一创新尝试所需要的勇气和智慧表示支持。

目前的情况表明,淘宝的这一尝试面临着困难。在表面的纷扰下面,我们感到当前的局面更多反映了淘宝进行这一尝试所需要面对的对上下游资源控制、调配能力的巨大挑战。

在这个时候,我们感到业界应该给予足够的鼓励和响应,用户应该给予应有的理解和支持,而淘宝,也需要反思自己是否真正具备了实现自己理想的能力。事实上,虽然淘宝在电子商务、交易、支付方面已经打下了很好的基础,但要达到这样远大的目标,还需要在搜索、平台开放等方面进行更加深入的工作。

我们始终支持对中国互联网创新的尝试,希望能看到更多象"招财进宝"这样能够给人带来惊喜的创新。

两只蜜蜂(Stephen,Yishuai
http://www.daowap.com/

Technorati : ,

标签:

2006-06-04

Ajax Hack

Ajax Hacks, Bruce W. Perry, O'Reilly, March 2006, ISBN-10: 0-596-10169-4, ISBN-13: 978-0-59-610169-5, Pages: 438

从基本的XMLHttpRequest请求调用,到自定义函数库、JSON Script Request库、Prototype直接DOM引用/Updater/Observer库、Rico registerRequest/拖拉库;

从Plain Javascript代码,到Rails高度精练的脚本集成、DWR强大的服务器端和客户端 Java/Javabean集成;

从简单数据请求显示,到纯客户端Javascript全文本搜索、script.aculo.us 漂亮的DOM shake/fade/pulsate/puff视觉效果,简单直观的autocompleter/inplaceeditor DOM控件;

从传统表单结构的数据格式验证/递交,到隐藏的Tag值、XForms的高度格式化的描述;

从直接嵌入Google、Yahoo Map,到服务器端Java servlet代理、Appache mod_rewrite模块代理,浏览器Bookmarklet workaround;

从普通字符串/数字返回,到XML数据返回、JSON数据返回;

从简单显示文本/修改DOM,到利用CSS动态改变网页风格,利用div和span显示服务器端数据(如RSS Reader);

从Firefox DOM Inspector工具,到客户端cookie操作、AMASS客户端存储、浏览器本地信息(如语言)访问、客户端Cache;

从iframe历史记录的利用,到bbfix返回库、RSH历史记录库;

从setTimeout函数,到代码压缩、模糊化处理、利用Bach进行文件合并、版本控制、减少调用DOM的性能优化讨论。

真是蔚为大观,值得一读,并作为Ajax开发的案头参考。

Technorati :

标签: