前言

从我写出第一个HTML网页到现在,已经过去10年多的时间了,回顾过去的Web开发经历,我曾经尝试过各种不同的技术,与此同时,我和我的团队也犯了很多的错误,但我们为此感到自豪。是的,成长是需要不断付出代价的,每次的挫折都会让我更加深刻地看到隐藏在深处的本质,为什么不把这些内容分享出来呢?于是便有了《构建高性能Web站点》这本书。

10年来,我们见证了互联网有史以来最快速的发展,商业应用层出不穷,业务逻辑不断复杂,对用户体验的要求也不断提升,随之而来的是应用技术和开发语言的日新月异,开发者永不停息地学习新技术。同样,在Web站点性能方面,我们一直在跟时间赛跑,社交网站和微博客成为大众的主流应用,带来了更加快速、实时的信息传递,更多的站点意识到开放的重要性,数据访问和计算无处不在,每秒数以万次的数据传递和读写正在我们身边进行。

但是,构建Web站点的基础技术几乎多年来从未改变,比如诞生于20世纪80年代的TCP,如今依旧是网络数据传输的主宰者,而HTTP则更与我们息息相关,可是你真的认真学习过它们吗?人们始终在做的事情就是在这些基础技术之上一层一层地封装概念,不断地诞生新的技术。加上商业化产品的市场竞争和炒作,.NET和Java阵营中的概念让我眼花缭乱却又无可奈何。它们已经成为营销用语,有时候过度会让事情变得更加复杂,让开发者迷失方向。

不论你是一名从事Web开发的工程师,还是一名关心Web性能的架构师,都应该更多地关注各种技术和架构的本质。

从哲学意义上讲,对本质的研究属于形而上学的范畴,但是在自然科学中,我们从来不缺乏对本质的探索,因为只有认识事物的本质才能做出正确的决策,并且真正地驾驭它们,这是毫无争议的。

也许你曾经被商家的促销活动所打动。是的,我们往往只看到事物的表面现象,而经济学家却看到了事物的本质,这正是他们的高明之处。技术和架构同样如此,你要明白任何收获都是有代价的,天下没有免费的午餐,很多时候,你完全可以用成本经济学的知识来思考技术的合理性,你甚至可以像经济学家一样思考技术问题。

当然,仅仅理解本质是远远不够的,因为在庞大的架构体系中,涉及太多的部件,而影响整体性能的因素究竟有哪些呢?你也许会感到扑朔迷离,但你必须知道瓶颈所在,并且能够意识到何时需要优化性能或者扩展规模。与此同时,系统化的分析方法至关重要,中医理论对人体的系统思辨能力体现了先哲们的智慧,在站点性能不尽如人意的时候,我们能否“对症下药”?这与你对整个系统能否全面把握有着密切的关系。

另一方面,绝对与相对、变化与平衡,是永恒的大道,在很多时候你实际上需要考虑的是如何做出权衡,同时,我们也要铭记变化的道理,系统瓶颈不是一成不变的,久经考验的架构师深知这一点。

道可道,非常道。要将所有的架构之道讲出来实属不易,架构就像艺术品一样,往往无法完全复制,但是独立的技术以及分析的思路是可以学习的,作为优秀的开发者或者架构师,心中的架构才是最有价值的。

如果你希望寻找心中的架构,那么,从本书的绪论开始吧!

读者群

如果你希望学习如何创建一个Web站点,那么这本书可能并不适合你,但是当你对站点的性能开始担忧时,欢迎你的归来。

这本书适合以下读者:

● 编写Web应用程序、关心站点性能,并且希望自己做得更加出色的开发人员

● 关心性能和可用性的Web架构师

● 希望构建高性能Web站点的技术负责人

● 实施Web站点性能优化或者规模扩展的运维人员

● 与Web性能有关的测试人员

的确,整个技术团队的所有成员都适合阅读这本书。另外,高校学生以及个人网站站长也可以阅读,笔者希望本书可以帮助他们开拓视野。

如何阅读

本书涉及大量的软件和工具,由于篇幅有限,书中并没有对它们的具体使用方法展开详细的介绍,你可以通过Google查找相关的在线手册来进行自学,同时,在本书的参考文献列表和配套Blog中,也会提供一些相关链接。

本书不想在阐释体系上束缚读者的天分,所有内容的安排更像是引导你身处Web站点的各个角落,与影响性能的各种因素自由碰撞,并且一步步地思考和分析问题。所以,你也许不会直接找到一个高性能Web站点的完整解决方案,但是,当你认真地依次阅读完本书的所有章节后,你也许会找到你更想要的东西,并从中获益,我衷心希望如此。

如果没有什么特殊的原因,还是建议你能够按照章节顺序,心平气和地通读一遍,因为在内容组织上,本书有太多的连贯性设计,我担心随机阅读会让你的收益大打折扣。

创作过程

说到这次写书的过程,我同样感到很有意义,各种全新的尝试让创作过程充满乐趣,它们同样值得分享。

不同于传统使用Word编写内容,我使用了快捷的Google在线文档,并使用在线表格保存测试数据,它们支持出色的版本管理,并且提供快速的分享和协作功能。当然,最激动人心的莫过于我可以在任何地点通过浏览器继续我的写作过程,甚至当灵感突如其来时打开Google G1手机便可以写上两句。

对于几十万字的篇幅,一气呵成绝对是不可能的,多次迭代必然贯穿整个写作过程,从灵感到提纲,再从框架到最终文字,虽然没有完善的过程管理,但是我时刻能感觉到敏捷的火花。

为了尽早地获得读者的反馈,我考虑尽早“部署”,于是选择了讨论组和邮件列表的方式,在Google Group上创建了读者讨论组,上传了一些试读章节,收集到了大量的修改意见和想法,这些都是我所需要的,同时也给我带来了鼓励和支持。

整个过程还有很多的花絮,这里就不一一介绍。创作的过程是艰辛的,需要作者的坚持和毅力,虽然创作本身没有捷径,但是我们可以让创作过程更加充满乐趣,让作者和读者更加近距离地接触。

当我将这些过程介绍给一些朋友时,他们感到很有意思,于是我们创立了SmartDeveloper系列,希望能够将这种敏捷写作过程进一步整理和完善,当然,《构建高性能Web站点》将作为该系列的开山之作。

SmartDeveloper的具体内容敬请关注以下地址:

http://smartdeveloper.cn

值得一提的是,为本书撰写推荐序的王速瑜先生在敏捷开发领域有着丰富的经验,并在腾讯公司内部积极推广敏捷开发平台和方法。长久以来,我认为我们都是敏捷原住民,骨子里充满了敏捷的思想和战斗力。不可否认,敏捷给我带来了无法估量的收获。幸运的是,他也计划写一本关于敏捷开发的书,总结他的实战经验,并且加入SmartDeveloper系列,我也非常期待这本书的问世。

延展阅读

由于篇幅和时间的限制,书中的部分内容点到为止,但是我也希望能够在未来继续和读者进行沟通,所以你也可以访问以下站点,来进一步关注其他的延展阅读资料。

http://highperfweb.com

读者讨论组

作为读者讨论和邮件订阅的最佳途径,我仍然选择了以下讨论组,在本书出版后的任何时间,你都可以来这里提出自己的意见和想法,我会对所有的主题给予回复。

http://groups.google.com/group/highperformanceweb

致谢

感谢我的父母,他们在我读初中的时候送给我第一台电脑(Cyrix1.66G的兼容机),让我走进了计算机的世界,并且给予我非常多的支持和鼓励,让我毫无顾虑地追逐梦想。

感谢我的Cris,她为我创作了本书的封面,并且在整个写作过程中毫无抱怨地陪伴我,给予我无尽的支持和灵感。

感谢电子工业出版社的策划编辑李冰和文字编辑江立,她们严谨认真的工作态度以及作为出版商的开放态度让我深感敬佩。

感谢为本书撰写推荐序的王速瑜先生,以及撰写评价的章文嵩博士、张松国先生、沈翔先生、朱鑫先生,他们在繁忙的工作中抽出时间,阅读了本书的样稿并写下了推荐和评价。特别一提的是,章文嵩博士对书中一些内容的理解和建议让我受益匪浅。

感谢对本书提出宝贵修改意见的朋友,他们是蒋琦、丁吉亮、汤文亮、刘健、朱李、周伟强。

感谢在读者讨论组中所有积极阅读试读内容并提出意见的成员。