福尔斯特说:即将来临的一天,比过去的一年更为悠长。可是这即将来临的一天,无论多么的悠长,终究会流入过去的长河中。把握过去,或许可以成为另一种永恒。回眸过去的2010年,架构的发展或如花开花落如此的相似,却又如人来人往如此的不同!软件技术正是在这样一种变与不变中艰难的演进。透视InfoQ中文站架构社区在这一年中的热点,或许能帮助我们抓住架构发展的脉络。如此,在即将来临的一天,我们才不会产生面对未来的茫然。
1、云计算:依旧灿烂
在过去的几年里,整个IT行业最热的词语无疑首推“云”。凡是与云有关的产品,公司,技术与论题,都会得到极大的关注,或褒或贬,却始终遮不住云计算的灿烂光芒。整体而言,在2010年,业界对云计算的质疑渐行渐远,云也逐渐脱离“云山雾罩”的神秘外衣,人们开始更多地关注云产品的应用,成功的云案例,以及如何规范云计算。这说明云计算已经从纷争的混乱时代开始走向成熟,业界对云的态度更加审慎与理智,不过高浮夸,也不肆意诋毁,而这才是技术发展的正道。个人认为,什么时候当云不再成为热点,就说明云要么已经消亡,要么已经融入我们的生活。正如在破译云计算的7个神话中引用的Serdar对云的概括:云不是神奇的万灵药也不是一场灾难,更不是救世主也不是罪人。它是一个解决问题的新工具。想象在这么几年里,谁还在炒作PC与互联网的概念呢?
在2010年,我们看到了许多云产品或云服务的推出。Rackspace推出开源云平台,为需要创建自有云解决方案的公司提供了IaaS平台。Google向开发者提供云存储,说明Google的云战略依旧在稳步的前进。而VMware也适时地推出了vFabric,它可以说是VMware收购SpringSource之后体现其云愿景的产物。在2010年,Amazon AWS获得ISO 27001认证,标志着Amazon公共云已经真正成熟起来。显然,云计算领域中群雄并起,逐鹿中原的戏码还会继续上演。
与此同时,人们也越来越关注云的成功案例。例如,在云应用的两个案例中就提及了IBM为日本人寿保险公司以及马来西亚信息图形与动画产业构建云平台,并提供云服务。2010 Amazon AWS创业公司挑战赛的获胜者Mike Kavis,则分享了自己在云应用的成功经验,他认为云中成功的关键始于架构。
关于业界对云计算审慎探讨与分析的报道,频频见于InfoQ中文站架构社区。这些内容主要包括云间整合(Cloudstreams: 云间整合的下一个挑战),云的开放(开放的云让业务更“闪亮”),虚拟化(虚拟化发展减缓)、云应用重构(为云应用重构系统)以及云计算标准(云计算标准和开源项目)。
2、NoSQL:众星追捧
突然之间,NoSQL成为了明星,而且是万众瞩目、群星追捧的超级大明星。这一结果,或许作为CAP(即Consistency,Availability,Tolerance of network Partition)理论的提出者Eric Brewer也未曾想到吧。NoSQL(Not only SQL)作为一种迥异于关系数据库的持久化解决方案,以其高性能、分布式、可伸缩性、高可用性的特征,迎合了高速发展的Web应用的需要。NoSQL的诞生与流行,可谓恰逢其时。
2010年,NoSQL产品开始扎堆出现,NoSQL家族逐渐壮大。例如,在3月23日,North Scale宣布NoSQL数据库解决方案Membase的推出。而在10月的Hadoop World大会上,Membase与Cloudera宣布整合了Membase服务器和CDH(Cloudera Distribution for Hadoop)。MongoDB则不断推出新版本,例如在它的1.6版本中就增加了Sharding机制和副本集合特性。可喜的是,我们国内的互联网公司在NoSQL领域很是给力,也推出了自己的NoSQL开源产品,例如淘宝的Tair,天涯的Memlink。其实,在软件领域里,越是新的技术,我们国内的软件企业越有可能取得新的进展,提高自己的竞争力,只要我们拥有创新的精神、开阔的视野和足够的自信心。
比较而言,关系数据库在面对NoSQL咄咄逼人的态势下,显得有些心有余而力不足。例如Digg与Reddit就在2010年3月宣布加入NoSQL阵营,他们都将转向Cassandra。当然,关系数据库的厂商自然也不甘失败,在NoSQL的竞争者这篇新闻中,就提到了不弱于NoSQL的关系型数据库MySQL/HandlerSocket和VoltDB。面对NoSQL这种新类型数据库的流行,工程界人士也开始了SQL之争。在2010年GigaOM结构会议上,与会公司达成了共识,认为传统的数据库在可扩展的云环境中无法有效工作。他们开始了对SQL的声讨。10gen公司的Roger Bodamer认为NoSQL更适合于建模领域,而关系型模式由于涉及到太多的表和关系,所以需要最好的数据建模师才能使其有效发挥作用。Neo Technology公司的Emil Eifrem认为,SQL总是让人头疼,开发者讨厌SQL,并且使用工具来逃避它。
正是因为NoSQL呈现出来的优势与良好态势,越来越多的人开始重视NoSQL,渴望了解NoSQL。我们在对InfoQ中文站2010年的新闻进行点击量统计时,发现排名20位的文章中,与NoSQL有关的文章就包含了4篇,分别位列点击量的3位、9位、11位和19位,它们是:
3、HTML5:Web的未来
毫无疑问,HTML 5将在未来的Web中占有举足轻重的地位。然而,在这其中不知又开始了多少利益的纷争。Microsoft、Adobe、Google以及Apple都在打HTML 5的牌,却又不愿意完全放弃自己原有的前端技术。事实上,Web标准对于他们而言,既是灾难,又充满了巨大的诱惑。如何在未来的Web中分得一杯羹,那就得看他们拥抱HTML 5的态度了。
在评论雾里看花:微软的前端技术战略何去何从中,提及了微软开发者平台产品管理部经理Brad Becker的态度,认为微软将致力于使用Silverlight实现HTML无法完成的解决方案来扩展Web功能。而在微软推出的Internet Explorer 9 Preview 3中,则提供了更好的HTML 5支持。显然,选择Silverlight还是HTML 5,微软的战略有些摇摆不定。Adobe面对HTML 5,已经开始积极地面对。在2010年的开发者大会上,Adobe向公众展示了一款用于HTML5动画制作的IDE。可是在视频方面,Adobe又该如何决策Flash的前途呢?现在,有许多视频网站已经开始从Flash迁移到HTML 5,尤其是在Apple不愿意支持Flash的前提之下。例如,YouTube就发布了HTML 5视频beta版,紧接着Vimeo也发布了HTML 5的beta版。至于Google,也开始布局HTML 5。它的Chrome浏览器目前已经能够支持75%以上的HTML 5特性。而在2010年11月召开的Google开发者日上,Freiheit.com的CTO Stefan Richter 则谈到了使用HTML 5与Google App Engine编写富Internet应用的愿景。虽然这并非官方发言,但Google开发者的声音,可能更草根,态度却也更鲜明。Apple的步伐依然快速。至少在目前,Apple在移动互联网的地位依旧不可撼动。如今,iPhone的Mobile Safari浏览器已经能够支持HTML5的Canvas/Canvas2D、Video、Audio、Geolocation、Local Storage/Session Storage、Application Cache、Web SQL Database等。显然,Apple的HTML 5战略已经落地。毕竟,Apple可不像微软那样,还要为选择自己的技术而犹疑不定。
虽然在2010年InfoQ中文站架构社区中,对HTML 5的关注度似乎还不算高;但InfoQ的作者们对于HTML 5的前景却前所未有的保持一致的肯定态度。Abel Avram撰文称HTML5已经起飞,豆瓣前端工程师张克军则认为前端的HTML5时代来临。当然,我们必须正视HTML 5,了解其本质。正如《HTML 5专业开发》一书的作者Peter Lubbers所说:“HTML5不仅仅是HTML的更新换代,它已经孕育很久了。”或许,正是因为我们等待得太久,才对它充满了期待吧。
4、架构质量:大事件
随着软件系统变得越来越复杂,规模越来越庞大,对架构的质量要求也就变得越来越高。如何改善架构的质量,成为了架构师不能承受之轻。是的,随着相关理论的逐渐完善,我们已经可以罗列出改善架构质量属性的技术矩阵。弓箭与靶已经准备就绪,我们却很难寻找到技艺高超的精灵弓箭手,来射出这有力而精准的一箭。一种好的学习方式是提炼最佳实践,所以在2010年的QCon北京大会上,Twitter与Facebook架构师的演讲才会如此引人瞩目。
纵览2010年InfoQ中文站的架构社区,有两个与架构质量相关的事件值得我们关注。一个是FourSquare的宕机事件,准确地说,应该是FourSquare的MongoDB宕机事件。InfoQ有三篇文章FourSquare经历两次宕机、MongoDB创始人Eliot Horowitz分析FourSquare宕机原因和Foursquare的MongoDB宕机事件报道和分析了此次事件,从不同的角度讨论和剖析了宕机事件的原因、解决办法和带来的教训。将它们串联起来读一读,或能启人深思。
另一个事件就是淘宝的双十一事件,InfoQ中文站对此次事件做了一系列的深度采访,分别就技术和运维的角度剖析双十一事件中淘宝制定的方案与解决办法。这些采访包括:淘宝双十一事件的前中后技术事、康伯谈淘宝双十一事件中的CDN优化和伏威谈淘宝网的高并发处理与压力测试。双十一事件在国内技术圈儿的影响极为深远,相信在很长的时间内,人们还会津津乐道于这一事件。
最佳实践不嫌其多。在2010年InfoQ中文站架构社区,我们可以看到Facebook分享了如何利用BigPipe优化页面加载时间,以及如何使用Hadoop来计算大规模分析;Google则介绍了索引系统Percolator的技术细节,用于大数据集增量更新系统;Zynga的CTO则讨论了如何设计高可扩展性社交游戏;又拍网分享了架构中的分库设计;还有InfoQ自己的案例分析,介绍了InfoQ网站的数据库升级过程。此外,架构社区还深入分析和讨论了架构质量中关键的属性:系统级复用,性能优化与缓存,架构安全、数据恢复与备份、系统集成以及可伸缩系统的设计模式。
5、企业架构:旧事重提
企业架构(Enterprise Architecture)是新玩意儿吗?不是!如果以IT行业的年龄来看,它或许可以称为老古董。在1987年,John Zachman就提出: “为了避免企业分崩离析,信息系统架构已经不再是一个可有可无的选择,而是企业的必需”。从那时起,企业架构的理论就得到了缓慢的发展。那么,它的理论如今已经成熟了吗?很多架构师认为,企业架构的原则仍然缺乏稳固的基础。
随着云计算进入架构师的视野,它与企业架构之间的关系也引起了业内的争执。我注意到该文中的一个观点是“转向云计算为的是敏捷和灵活,企业架构正好与之相反。”这又引申出另外一个话题,那就是敏捷与企业架构的关系。Jean-Jacques Dubray带着疑问的色彩发出呼吁,是否该重新思考企业架构了?敏捷的提出是为了应对软件的变化,而微软的Gabriel Morgan则认为“EA不应该包含面向公司变化的业务功能,而是应该通过正确的方式教育和协助建立这些业务功能。”这么说来,或许敏捷的架构可以作为企业架构的一种补充。整体而言,企业架构关注更多的是企业战略的层面。在对业务架构的进行更合理抽象能成为企业架构的关键吗一文中,Fujitsu的云架构师Ian的基本观点是,在不同抽象层次上建立业务架构的资产,产出一套适合企业环境的方法,从而有利于更全面的决策与实施。
我的眼光还在穿越这悠长的2010年,意犹未尽。我发现还有很多与架构相关的话题值得我们关注,例如REST,例如模型驱动,例如敏捷与架构的关系,例如软件工艺与良好的设计。它们影响着系统的架构,或者作为架构的一部分决定着架构的优劣。
架构不是一天就能建成的,成为软件架构师的路线更是一个渐进的过程。Simon Brown认为:“拥有持续的、跨不同领域的技能、知识和经验构成了软件架构的职责。跨越软件开发者和架构师的界限取决于你自己,但是首先你要明白你的经验水平,才能开始架构师之旅的第一站。”这段话撷取于他在InfoQ发表的文章你是个软件架构师吗,这篇文章是2010年InfoQ中文站架构社区最热最火的一篇文章,一共有21条回复。看起来,软件开发者真的很在意软件架构师这个头衔!架构师的技能必须全面而专业,这就要求我们必须广泛阅读与涉猎架构领域的知识,套用Simon的话,来一句广告,那就是——时刻关注InfoQ架构社区,或许可以成为你开始架构师之旅的第一站。
2010年已经过去,让我们欢迎2011年的到来!个人认为,2011年的架构仍然会逃不出本文所涉及的五个范畴。除此之外,也许我们还会看到有关物联网和移动开发对架构带来的影响。而自敏捷宣言诞生到现在,已经过去了10个年头,或许在2011年会看到更多对敏捷架构的讨论。究竟如何,让我们拭目以待!
本文转自wayfarer51CTO博客,原文链接:http://blog.51cto.com/wayfarer/477659,如需转载请自行联系原作者