创新 从云开始
微软公司全球资深副总裁,微软亚太研发集团主席/张亚勤博士
经过多年的积淀和持续的探索,云计算开始成为全球信息产业发展的主流,这是行业变革水到渠成的结果。新兴的移动互联网技术、不断提高的计算能力,以及快速普及的数字化通讯推动产业变革并催生新的商业模式,重塑着经济发展和商业竞争的格局。
云计算能够成为IT创新实践的主流要归功于如下三方面的因素:
首先,过去十几年来,技术的进步让大规模、集中化计算的构想渐渐化为现实--CPU、GPU的多核进化及虚拟化技术的日趋完善,为信息系统的高性能和低功耗找到了重要的突破点;更大的互联网带宽则使实时的、多元的、复杂的计算应用成为可能;海量存储、数据挖掘、人工智能等技术的不断发展也带来了更快捷、更精确、更人本化的互联网服务。
其次,我说过,云计算是被逼出来的。随着数据越来越多,软件越来越复杂,终端越来越多样,计算量越来越大,服务器和PC客户端已经不能满足用户需求,云计算应运而生,海量数据成为新的生产要素。在未来的5~10年,数据大爆炸仍将持续。据统计,到2015年就将有250亿台联网的设备,包括智能电表、智能汽车、智能建筑、智能电视、平板电脑、智能手机、移动健康监测设备和传统PC等,它们每年将产生1.6ZB以上的数据,这是目前全球网络年度流量(130EB)的12倍。因此,产业必须依靠云计算才能发展下去。
最后,新商业模式的涌现,让个人和企业用户看到了不同于以往的趋势和可能。2001年,我曾撰文指出,“服务化”将成为软件产业的一个趋势,现在看来,这个趋势无疑更加明显。软件不再只是封装(或预装)好的“商品”,还可以通过在线服务、随需租用、附带广告的免费版本等多种多样的形式来获取。此外,P2P资源分享、视频点播、信息搜索、LBS(基于位置的服务),这些都是传统软件不易实现的功能,必须依赖“云”之上的大规模计算资源。
云计算作为新一代信息技术、物联网、移动互联网的神经中枢,一些发达国家和跨国企业已经投入巨资,积极部署云计算的基础架构、操作系统、应用开发平台,以吸引开发者
构建弹性云应用
创新 从云开始开发出大量的应用和服务。
这一切都指向一个关键性事实,即“云和端”的操作系统,都势必会成为兵家必争之地--在智能终端上,操作系统已迈进属于iOS、Android和Windows 的三国时代;而在云计算领域,具有完整的知识产权储备、久经验证的、性能强大的操作系统内核、开放的框架、开发环境与语言、开发者社区等生态系统的企业和组织,也只有微软、亚马逊、谷歌等寥寥数家。
而微软的优势在于不仅能在“云和端”两个层面都具有完整的生态系统优势,更在于前瞻性的战略思考与先行一步的战略优势。在此,我们不妨先回顾一下Windows Azure平台诞生的始末。
微软的战略转型,始于1995年。那一年,比尔·盖茨发表了《互联网浪潮》 (The Internet Tidal Wave)的备忘录,引起全球业界的极大关注。同期,微软收购了Hotmail,并开始提供MSN服务,从那时起,微软开始自己运营互联网数据中心和互联网服务,并逐渐积累了丰富的数据中心建设、部署、配置、监控、安全方面的经验,以及互联网服务的开发和运维经验。
而微软真正开始云战略的规划,则是积累了十年经验后的厚积薄发。2005年10月,当时作为微软首席技术官的Ray Ozzie写了一份名为《互联网服务时代来临》 (The Internet Services Disruption)的备忘录,其要点在于推动微软整体向互联网服务转型。这一备忘录同样和10年前的那份一样,在微软内部和全球业界也引起了极大反响,从此微软开始转向“软件+服务”的战略。
2006年6月,微软成立了内部代号为“Red Dog”的项目,开始着手建立一个面向全球的互联网应用服务平台,这一团队囊括了微软多位技术院士和杰出工程师,其中包括Dave Cutler (Windows NT和VMS之父),以及被称为内核专家的Mark Russinovich。经过两年的全球性内部调研、研发和测试,这一项目最终在2008年10月的专业开发者大会上,作为微软的云计算平台正式公开,并拥有了一个人们耳熟能详的名字--Windows Azure(蓝天)平台。2012年9月,微软发布了云操作系统,向客户提供跨越私有云、托管云和公有云的现代化IT架构,能够轻松支持数以十亿计的、互联互通的各种设备,同时实现对大数据的洞察,让用户能够提供永不间断的企业级服务。
如今,微软公司已经在全球范围内投资逾23亿美元,先后建立了十多个世界级的云数据中心,为90多个国家的组织和个人提供Windows Azure平台服务。截至2012年6月, Windows Azure平台的总体运算性能相当于816000台服务器,超过了1999年全球全部服务器的运算能力(当年这一数字为787262台). Windows Azure平台上有近十万家企业级用户,而且增长仍在不断加速--Windows Azure的计算使用量在过去6个月中翻了一番,存储在过去2个月中增加了一倍,而企业订购在过去6个月中增加了56%. 以Windows Server和Windows Azure为核心的微软云操作系统提供了全面、一致和灵活的开发环境、管理工具、虚拟化、身份认证、数据洞察。
在Windows Azure平台上,微软还为全球100多个国家和地区的十多亿用户,提供超过200项云服务,并创造了许多令人惊艳的数字,比如,每个月有2.8亿用户使用Skype进行通话和视频,在2012年一季度,总计通话时长超过1000亿分钟;Outlook.com上线后,两周内聚集了1000万用户;每月超过1700万人使用SkyDrive存储和分享在线内容;每月Windows Update向全球数百万服务器和十数亿电脑提供的 1PB 以上的更新; LiveMeeting每年处理500万次以上的在线会议记录;Forefront for Exchange 每月过滤10亿封邮件;Xbox Live在35个国家拥有超过4000万用户……
在对中国云计算市场的重视程度上,微软同样领先于业界。2012年11月,微软成为了第一个将公有云平台带入中国市场的跨国企业。可以说,微软把握住了云计算发展的大趋势,尤其是云计算在中国已经步入实践期的时代脉搏。对本书的读者而言,尤为重要的是,Windows Azure平台的落地,将带来更多创新的自由和展露潜能的机会。
《云迁移技术》、《云应用开发》、《构建弹性云应用》、《构建混合云应用》系列丛书的内容由浅入深,囊括了从应用迁移、架构设计,应用开发、应用集成等内容,为设计、构建或操作云应用和云服务的架构师、开发人员、信息技术专业人士,以及有志于从事云计算应用开发的在校学生们提供了非常好的指引和参考。
在此,特别感谢上海交通大学的邹恒明教授、清华大学出版社和微软中国云计算创新中心的同仁,在该书翻译出版中付出的卓越努力。
最后,祝愿本系列丛书的读者们,能把握云计算带来的重大创新与机遇,与微软共创云的未来。序--Amitabh Srivastava
上百万的人正在使用微软的云服务。微软正全身投入到云计算中。作为一个从一开始就一直参与Windows Azure项目的人,看到其结出果实自然心感满意。对于仍然在探索云计算的意义的用户,由微软的模式和实践团队推出的本书能够回答许多问题。微软对云计算执著、认真,并进行了大量投入,目的就是为确保用户可以在Windows Azure平台上成功开发新的应用程序或将现有的应用迁移到云端。读者手上的本书就是这大量投入的一部分。
熟悉.NET和微软其他平台的开发人员可以使用现有的技能来快速构建云应用或将现有应用迁移到云上,并利用云所提供的能力来扩展应用程序以支持上百万的用户和达到世界上的每一个人。尽管如此,Windows Azure是一个开放的平台,可以与其他技术或应用程序和谐共存,给用户提供选择的多样性和灵活性。用户可以根据自己的需要将尽可能多的业务迁移到云上,也可以将很少的业务迁移到云上,还可以在迁移实施中间调整迁移量的多寡,而无须从头来过。
本书采取的论述方式为基于应用场景的分析。对于想从事云计算的人来说,本书是一个很好的起点。
真诚的,
Amitabh Srivastava
Windows Azure资深副总裁序--Yousef Khalidi
微软公司最近发布的Windows Azure平台是一个用来开发、托管和管理云服务的操作环境。用户可以通过Windows Azure所提供的支持方便地将应用程序从业务所在地迁移到云平台上。使用Windows Azure带来的好处包括高灵活性、高扩展性和低运营成本。
微软的云战略遵守以下三个广义的原则。
(1) 根据业务需求发布服务的灵活性。
(2) 可用、可靠和安全的企业级服务。
(3) 跨设备、跨平台的一致性体验。
而Windows Azure是微软云战略的关键组成部分。
Windows Azure的基石是微软多年运行在线服务的经验和长期为开发人员构建平台的历史。这些在线服务的用户达数百万之多。微软专注于为程序员和IT专业人士提供服务,以简化业务所在地到云平台的迁移为己任: 开发人员现有的技能和经验正是开始使用Windows Azure平台所需要的技能和经验。
Windows Azure是微软的一项长期投入。微软将密切关注各种企业使用Windows Azure的情况,无论是企业,还是独立软件供应商。随着对用户使用Windows Azure方式的了解,微软将不断对Windows Azure进行扩充和改进。而能够快速引入创新是在线平台的一个优点。
我很高兴向读者引介微软模式和实践团队编写的第一本云系列指导书籍。这是微软致力于帮助用户在Windows Azure平台上取得成功的明证。不管是刚接触Windows Azure的新手,还是已经在使用Windows Azure的用户,本书都是难得的参考资料。我敦促读者即刻开始探索微软的公有云平台,并密切关注模式和实践团队推出的其他Windows Azure的指导手册(或书籍).
真诚的,
Yousef Khalidi
Windows Azure杰出工程师《微软云计算系列丛书》译者序
愚妄者故作高深,智慧人求于至简
这是云计算的时代,这是物联网的时代,这是虚拟化的时代。
虚拟上的虚拟,万般皆是虚拟;云上的云服务,一切都是浮云。 在万物成为“浮云”的时代,所有的人也都“浮上”了云端。人们热议云计算、人们调侃云服务、人们论说云存储、人们讨论云平台,一时间,似乎人人都成了云专家。开发移动终端应用的人说自己做的是云计算,开办IT外包呼叫中心的人说自己做的是云计算,建立数据中心的人当然也说自己做的是云计算,研究一点Map/Reduce或者Hadoop的人更声称自己做的是云计算,就连从事高性能计算,似乎耐得住寂寞的人也不能免俗,也辩说自己的工作是云计算或者与云计算相关。一句话,只要是与IT沾点关系的人,都说自己从事的是云计算或者与云计算相关的工作。不过,在这浮华虚夸的背后,留下的却是众多的问题。
到底什么是云计算呢?如果去听这些人的解释,则很有可能在听完之后就堕入云里雾里,不知所云了。如果再问得细一点,问题就更多了: 云计算是一种技术模式,还是一种商业模式,或者二者兼而有之?云计算的本体是什么?云到底给个人和企业如何带来何种具体和可量化的好处?是否人人都真的需要云?云是如何让应用程序进行伸缩的?又是如何让应用程序更具弹性?如何才能开发出性能卓越的云应用程序?如何才能构建起真正的具有商业应用的云架构(或曰云平台)?掌握云计算或开发云应用需要什么新知识和新技能,又可以使用哪些现有的知识和技能?开发云应用和开发其他应用有何不同?
面对上述众多的“云”问题时,很多的“云专家”恐怕就答不上来了。
如果读者想求助于市面上出版的各种关于云计算的书籍的话,恐怕也会是打错了算盘。市面上的“云”书籍非但未能向自己的读者解释清楚云计算的要义,甚至还助长了各种误解和混乱。大部分书对云计算的阐述大同小异、流于肤浅、缺乏逻辑、术语堆积、甚至误导繁多。从某种程度上说,这些书不过就是各种技术或商业术语如SaaS、PaaS、IaaS、Hadoop等的堆砌,对于如何克服读者在实际使用、开发或管理云计算平台和应用方面所面临的具体障碍没有什么有价值的指导。以至于不少人以为,云计算就是一次新的规模更大的忽悠,大可不必理会。
就是在这种混乱和误解中,云计算却真真实实地在一步一步地往前迈进,甚至有一部分人士正在经历云计算所带来的变化和阵痛。随着软件作为服务(SaaS,云计算中的一种可能模式)这种模式的不断推进,越来越多的企业发现已经难以像过去那样,将商业软件作为商品来购买。但由于其业务性质,这些企业又不能直接使用SaaS模型,从而被迫陷入到架构软件的开发和私有云的构建中。这种发展趋势对人员的素质提出了很高要求,相关人员必须对云的架构、云的平台、云的生态环境、云上面的软件开发、布置和管理有着正确和深刻的理解。
无论是为了消除云计算上的误解和混乱,还是为了满足有识之士对云计算理念、技术和实践的强烈渴望,都需要精良的书籍来为大众指点迷津。
就是在这个时刻,微软公司恰如其时地推出了一套精良的云计算系列丛书。这套系列云计算丛书对上述的部分问题做出了回答。剩下的部分没有做答的问题,这套丛书也提供了有益的理解背景,读者可以在这些背景的基础上更容易获得一个正确或接近正确的答案。
构建弹性云应用
《微软云计算系列丛书》译者序该套丛书以庖丁解牛般的手法阐述了云计算的理念、平台、架构和应用。该套书以微软的云平台Windows Azure为基础,以云应用为核心,展示如何迁移、开发云应用,及如何让云应用更具弹性,对云计算的多个方面进行了深入浅出的讨论,为大众释疑解惑。
全套丛书目前由四部分组成,分别是《云迁移技术》、《云应用开发》、《构建弹性云应用》和《构建混合云应用》. 《云迁移技术》是系列丛书的第一部,讨论如何将一个机构现有的业务迁移到云平台上。该书以一家虚构公司Adatum为例,以场景分析的方式,详细论述了如何对公司的费用跟踪和分期偿还应用程序进行修改,一步一步地展示应用迁移的步骤和迁移过程中的注意事项,如身份验证和授权、数据访问、会话管理、应用部署、部署生命周期和运行成本分析,最终达到让应用程序平滑部署到Windows Azure云平台上并顺利运行的状态,从而将读者逐步带入到云迁移的境界里,不知不觉中掌握云迁移的关键技术。
《云应用开发》是系列丛书的第二部,讨论如何在Windows Azure云平台上从零开始创建一个多租户的SaaS应用程序,内容包括如何在云平台上进行应用程序开发,如何对云应用进行调试、发布和维护,以降低成本、提高可用性和业务的灵活性。该书以虚构的Tailspin公司为例,围绕其民意调查应用业务,构造一个可以大幅伸缩的民意调查应用程序,引导读者一步一步地构造出为云而设计、适合云环境的、面向多租户的可伸缩的云应用解决方案。
云系列丛书的第三部是《构建弹性云应用》。该书讨论如何使用Windows Azure平台里的企业库集成包(Enterprise Library Integration Pack)来提升现有Windows Azure应用程序的可维护性、管理性、扩展性、稳定性和伸展性。本书在上本书《云应用开发》的Tailspin公司的民意调查应用程序基础上,一步一步将该程序的伸缩能力进行提升,使其成为一个能够充分利用云平台各种功能和优势的弹性云应用程序。
《构建混合云应用》为云系列丛书的第四部。该书讨论的是企业在向云计算过渡时所面临的一个非常实际的问题。除非是新创企业,否则都会有大量的现有业务所在地应用。这些应用不可能一次性全部迁移到云上,而只能是逐个迁移。这样就会存在一种既有云应用,又有业务所在地应用的一种混合场景。即使对于新创企业,出于安全或者法律法规方面的考虑,可能会选择只将部分业务部署在云端。这样,如何构建合理、安全、高效、富有弹性的混合云应用就是大多数向往云的企业所不得不面对的一个问题。本书就是为解答这个问题而撰写的。该书以虚构的Trey Research公司为例,一步一步地教导读者如何将该公司的订单应用程序构造成一个混合应用的典范,从而既享受云计算的巨大优势,又避免云计算的些许不足。
全套丛书的最大特点是实践性强。全套丛书中的每一部都以一个虚拟公司为例,以与实际情况非常贴切的场景为背景,以动手操作为推手,以实际代码为讨论对象,将云计算的各种实战技术娓娓道来,非常易于理解和消化。读者只要顺着书的讲解,并配合运行和分析其附带的代码,即可手到擒来地开发或构造出相应性质的云应用程序。
本套丛书的第二个特点是案例成套、完整,可以发布到Windows Azure云平台上运行,从而与其他论述云计算的书籍有所区别。读者可以从这样的实际运行中获得更深入的理解。
本套丛书的第三个特点是采用了专家点评的方式。在讲述之间穿插各种专家对方案的点评,在细微处画龙点睛,给人豁然开朗的欣然感受。
本套丛书的读者群为需要设计、构建或维护云应用或云交互应用的架构师、开发人员或信息技术专业人员。同时,本套丛书也非常适用于高等院校相关方向的学生阅读。
本套丛书不是泛泛地谈一些概念,而是内容具体、步骤可复制、讲解清楚、对实际指导作用强,是云计算领域开发人员及参与人员不可多得的一套好书。如果读者还在市面或网络上寻找精良的云计算书籍,请不用再找了。阅读微软的这套云计算系列丛书吧。你对云的理解误区将会大幅度减少,你会真的融入云计算的世界。相信我,你不会失望的。
邹恒明2012年10月于上海莘庄序
随着人类社会对数据中心所提供的计算和存储能力的依赖性不断增长,IT领域的能耗增长速度也超越了任何其他领域的能耗增长速度。不幸的是,高耗能低效率的设备、过时的操作实践和缺乏革新动力导致传统数据中心的大部分能源都被浪费掉了。
绝大多数提高IT能耗效率的努力都关注于物理架构上。这些努力包括: 使用更加节能的计算机硬件和冷却系统、使用操作系统的能耗管理功能、通过硬件虚拟化来减少数据中心的服务器数量等。
但传统数据中心的大部分能源浪费并不是来自硬件,而是取决于应用程序的设计和操作模式。多数的应用程序都会申请比其实际需要多得多的IT资源,以便能够确保所谓的“可接受的性能表现”和应对可能的失效。通常情况下,几乎没有人对应用程序的实际资源需要进行度量、分析或者评估。
应用程序一旦发布,并且其所获得的资源超过其正常运行所需要的水平,应用程序的开发者将很难有动力来为应用程序设计度量机制以方便系统的容量规划。当用户抱怨应用程序的反应速度很慢时,给应用程序分配更多的资源就成为一种更容易(也更便宜)的选择。这些被额外分配的资源基本上不会被回收,即使在对应用程序的需求消退之后也不例外。
云计算则有可能打破这种超额配置应用资源的怪圈。由于云平台如Windows Azure对资源的收费是增量式的,按照用多少付费多少的模式进行计费,开发人员对IT成本及其相关的资源的使用就能够发挥直接和可控制的影响。
如果将应用程序设计为根据实际和预期需求的变化来动态增减资源的使用,则不仅其运行成本会降低,其使用资源的效率也将比传统应用程序使用资源的效率大大提高。开发人员还可以通过让后台程序在闲暇时间段运行以降低托管成本。在闲暇时段,分配给应用程序的资源通常是最少的。
虽然云计算提供了节约托管成本的巨大的机会,但开发使用云服务的云应用却充满挑战。一个非常引人注目的问题是开发人员必须要处理所谓的“瞬时故障”。虽然瞬时故障发生的频率不一定很高,但应用程序必须能够容忍网络连接的断断续续和响应迟缓的问题,才能够提供可靠和良好的用户体验。
直到现在,开发Windows Azure应用的开发人员需要自行开发这些能力(译者按: 指处理“瞬时故障”的能力)。随着Windows Azure企业库集成包的发布,开发人员现在可以很容易地构建健壮的资源节约型应用程序,这些应用程序可以自由地伸缩、收缩和紧缩,并从容应对云平台所固有的瞬时故障。
集成包所包含的首要构件是自动伸缩应用块(Autoscaling Application Block) ,也称为Windows Azure ABi。该应用块能够通过动态资源配置来自动伸缩Windows Azure里面的Web角色和Worker角色实例的数量,也可以删除多余的角色实例,从而帮助开发人员改善应用程序的响应时间和控制运行Windows Azure应用程序的成本。Windows Azure ABi同时还提供一种应用紧缩机制,可以在不改变角色实例数量的情况下控制资源的使用。开发人员可以使用自动伸缩应用块来对后台任务进行智能调度,以将角色实例的数量控制在特定的范围内,并充分利用闲暇时间段的空余资源。
构建弹性云应用
序Windows Azure ABi的一个主要优点是其伸展性。这种伸展性让解决方案更加灵活。此外,Windows Azure ABi还提供一种机制,让用户集成自己定制的度量标准和定制行为。有了这种伸展性,用户设计的规则集合就可以将特定的商业场景纳入到应用块里,而不被局限于只能使用Windows Azure诊断所提供的标准性能计数器数据。
集成包里的优化稳定器能够确保伸缩操作不会过早结束。它还能确保伸缩操作在按时计费的模式下达到最优。对于那些需要很多角色实例的应用来说,自动伸缩应用块能够帮助开发人员节省托管成本,同时改善应用的“绿色信用”。当然,自动伸缩应用块同时也能帮助应用程序满足服务质量协议(Service Level Agreement, SLA)的目标。
Windows Azure企业库集成包里的另一个主要构件是瞬时故障处理应用块,也称为“Topaz" 。该应用块提供几种云服务中常见的瞬时故障条件的侦测能力,并备有逻辑机制对这些故障进行处理,从而帮助开发人员开发出健壮性更高的应用程序。
与以往不同,或者比以往更甚,开发人员在不降低应用程序可靠性的前提下控制IT成本和改善IT能耗效率上发挥着重要作用。Windows Azure企业库集成包可以帮助开发人员快速构建性能可靠、资源节约、成本节约的基于Windows Azure的应用。本书是由设计和开发Windows Azure企业库集成包的工程师团队所撰写,里面充斥着各种有用的指导原则和小贴士,可帮助读者快速学习。更为重要的是,本书的内容不仅是各种概念的陈述,更包括具体的实施步骤,一步一步地展示如何将本书附带的参考实现(Tailspin民意调查应用)变得更具伸展性、更加健壮和更具弹性。
当然,微软的模式和实践团队所提供的技术指导并没有全部包含在本书及其参考实现里。由于企业库集成包里包含源代码和所有的单元测试,读者可以从这些内容中学习到很多。
最后,我把Windows Azure企业库集成包和本书强烈推荐给架构师、软件开发人员、系统管理员、所有需要设计开发新的Windows Azure应用的开发者和拥有者或需要把现有的应用移植到Windows Azure上的人员。本书所包含的非常实际的建议可以帮助读者把应用变得更具伸缩性和健壮性。
Mark Aggar,高级总监
微软环境可持续性部前 言
Windows AzureTM技术平台提供了令人激动的新机遇。利用Windows Azure,公司和开发人员可以构建运行在云中的大型、复杂的应用。Windows Azure提供按用量计费的模式,能够为应用程序架构和随需计算资源的管理提供更多的方便和灵活性。
微软现有的企业库应用块能够帮助用户设计出健壮性高、可配置、易管理的应用程序,新开发的几个应用块则是专门为云而设计。如果将原来的应用块和新开发的应用块结合使用,用户将可以充分利用Windows Azure所提供的优势,创建高扩展性、高健壮性的应用。
本书虚构了一个Tailspin公司。该公司使用微软企业库里新增加的自动伸缩应用块和瞬时故障处理应用块对其现有的Windows Azure托管应用进行了改进。这里讨论的Tailspin公司的Windows Azure应用是一个民意调查应用程序,该应用程序在Windows Azure系列书籍的《开发云应用》一书里进行了详细描述。
本书附带有一个参考实现。我们敦促读者对该参考实现进行研究和实验,以便更好地理解这些新应用块是如何使用的。
除了对Windows Azure应用程序及这些应用程序如何使用企业库应用块进行描述之外,本书还讨论了新应用块的关键功能,并对如何在实际应用中使用这些功能提出诸多建议。
在阅读完本书后,读者将熟悉如何在Windows Azure应用程序中使用自动伸缩应用块和瞬时故障处理应用块来改善应用程序的健壮性和扩展性。
本书的读者群
本书展示了如何在现有的Windows Azure应用里使用Windows Azure企业库集成包来改进应用程序的可维护性、可管理性、伸缩性、稳定性和扩展性。本书的目标读者群包括设计、构建或操作云应用和云服务的架构师、开发人员、信息技术专业人士,也包括那些想学习如何在云应用中使用企业库功能的人士。读者在阅读本书前应该熟悉Windows Azure、微软的.NET框架和Visual C#,以便能够从本书中获取最大收益。
本书的适时性
云已经成为应用程序面向广大客户的一种有效桥梁。读者可能已经使用过Visual Studio所提供的工具和针对.NET的Windows Azure SDK开发和发布过Windows Azure应用。正如企业库可以帮助处理业务所在地应用程序的一些普遍的横切关注点问题(如日志记录和异常管理), Windows Azure企业库集成包及其相关的指导手册则能够帮助处理云应用所面对的一些共同问题和横切关注点。这里的某些横切关注点可能与业务所在地应用里的横切关注点一样,如异常处理和缓存;而另外一些横切关注点则有可能不同,如果用来满足伸缩需求的自动伸缩。本书将告诉读者如何在一种普遍场景下处理这些关注点: 对现有的Windows Azure应用程序进行改进以增加应用的伸缩性和弹性。
构建弹性云应用
前言本书的结构
本书的结构如图1所示。
图1 本书结构
运行本书源代码的系统需求
运行本书所带的Tailspin民意调查应用程序源代码需要具备下面的条件。
一台运行Visual Studio 2010开发系统SP1的计算机。
所有必需的Windows升级补丁。
NuGet软件包管理器(更多信息可参阅http://nuget.codeplex.com/ ).
至少能容纳两个托管服务的Windows Azure订购服务 (如果想在Windows Azure上运行Tailspin民意调查应用程序、自动伸缩器主机和管理Web应用程序).
Windows Azure存储账户。
依赖条件检查器,用于验证所有需要的软件包都已经安装,并在没有安装的情况下自动安装所需软件。
Visual Studio 2010.
MVC 3框架。
Windows Azure SDK for .NET和Windows Azure Tools for Microsoft Visual Studio--2011 年11月发布版本。
Windows Identity Foundation Runtime.
可选项: Internet Information Services 7(IIS)--如果想在模拟模式下运行管理站点或者在本地发布自动伸缩器角色,则需要本模块。
谁是谁
如前所述,本书通过场景分析来展示如何在一个参考实现中使用Windows Azure企业库集成包。一组专家将对整个开发过程进行点评。该组专家包括一位云专家、一位业务经理、一位软件架构师、一位熟悉企业库的软件开发人员、一位不熟悉企业库的软件开发人员和一位IT专业人士。这些专家将针对书中描述的场景从自己的视角进行点评。下面列出的是这些场景分析专家的简介。
Bharath是一位云专家。他的责任是确保云解决方案符合公司的实际,并能够提供可见的收益。因为这个缘故,Bharath处事谨慎。
Bharath: 为云平台开发单个应用比较容易。但从基于云平台的解决方案中实现最大收益却不是那么直截了当。
Jana是软件架构师。她的责任是对整个应用的结构进行规划。她的观点既务实又具有战略眼光。换句话说,她不仅考虑何种技术方案是今天所需的,同时还考虑公司的未来方向。Jana曾在需要使用企业库的多个项目上工作过。
Jana: 在公司、用户、IT机构、开发者和我们所依赖的技术平台之间进行平衡并不容易。
Markus是一位资深软件开发人员。企业库对他是一个新鲜事物。Markus喜欢分析、注重细节、一丝不苟。他一直专注于其手头的工作: 开发一个强大的云应用。Markus知道,他就是最终要对代码负责的人。
Markus: 不管使用何种平台来运行应用,我的责任是让它能够运行。
Ed是一位经验丰富的软件开发人员和企业库专家。作为一个真正的专业人士,Ed对开发人员在构建企业的业务应用时面临的横切关注点非常熟悉。过去他曾经编写过自己的库函数来满足这些关注点。但在过去的几年里,他大多数时候使用企业库。
Ed: 我们的应用程序使用企业库来应对横切关注点。这种做法在所有系统之间建立了统一性,也使应用的支持和维护变得容易。我们已经在业务所在地的应用里投入了大量人力和物力。
Poe是一位IT专业人士,是一位发布和运行云应用的专家。Poe对实际解决方案饶有兴趣。毕竟,当出现问题时,他就是那个在凌晨3点接到通知的人。
Poe: 在云中迁移应用面临的挑战和管理业务所在地应用所面临的挑战不同。我的责任就是确保我们的云应用像业务所在地应用一样安全和可靠。
Beth是一位业务经理。她帮助公司规划业务开发。她对公司所在的市场非常熟悉,对公司所拥有的资源很清楚,对公司的目标心中有数。她既具备战略眼光,也对公司的日常运作饶有兴趣。
Beth: 机构面临许多互相冲突的资源需求。我的责任是在这些需求之间进行平衡,制订合理的业务计划,以确保公司的中长期成功。
如果读者对某个特定视角有兴趣,可以参考与自己兴趣相同或接近的专家的点评。致 谢
将本书带到读者手中的团队
作者: Dominic Betts, Jérémi Bourgault, Julian Dominguez, Ercenk Keresteci, Grigori Melnik, Fernando Simonazzi, Erwin van der Valk
技术审阅: Neil Mackenzie, Valery Mizonov, Eugenio Pace, Pawel Wilkosz, Michael Wood
制图: Katie Niemer
编辑: RoAnn Corbisier, Nelly Delgado, and Nancy Michell
Windows Azure企业库集成包开发团队
产品/过程管理: Grigori Melnik (Microsoft Corporation)
架构开发: Julian Dominguez (Microsoft Corporation), Fernando Simonazzi (Clarius Consulting), Jérémi Bourgault (nVentive Inc.), and Ercenk Keresteci Full Scale 180 Inc)
测试: Mani KrishnasWindows Azuremi and Carlos Farre (Microsoft Corporation), Neeraj Jain, Murugesh Muthuvilavan, Karthick Natarajan, Thamilarasi Nataraj and Rathi Velusamy (Infosys Technologies Ltd.)
用户体验/文档: Dominic Betts (Content Master Ltd.), Rick Carr (DCB SoftWindows Azurere Testing, Inc.), Nelly Delgado (Microsoft Corporation) and Erwin van der Valk (Erwin van der Valk)
发布管理: Richard Burte (ChannelCatalyst.com, Inc.), Grigori Melnik (Microsoft Corporation), and Jérémi Bourgault (nVentive Inc.)
后勤支持: Kerstin Scott (Microsoft Corporation)
顾问
很多人为本书做出了贡献,谨向他们致敬。
顾问委员会成员
Nikolai Blackie (Adaptiv), Ivan Bodyagin (ABBYY), Federico Boerr (Southworks), Leandro Boffi (Tellago), Michael Collier (Independent), Hans De Graaf (New Day at Work), Jason De Oliveira (Capgemini Sogeti), Dave Fellows (GreenButton), Stefan Filip (HPC Consulting), Sam Fold (Arkadium), Nuno Filipe Godinho (Independent), Neil Mackenzie (Independent), Daniel Piessens (ZyWindows Azureve), Marc Remmers (42windmills), Keith Stobie (Independent), Franois Tanguay (nVentive), Mihai Tataran (HPC Consulting), Stas Tkachenko (Arkadium), Trent Swenson (Full Scale 180), Gabriel Szletchman (3mellons), Philippe Vialatte (Independent), Guido Vilarino (3mellons/Disney), Oleg Volkov (New Day At Work), Pawel Wilkosz (Motorola Solution Systems), Michael Wood (Cumulux Inc.), and our Microsoft colleagues: Mark Aggar, David Aiken, Kashif Alam, Jaime Alva Bravo, Cihan Biyikoglu, Jim Davis, John Dawson, Scott Densmore, Lenny Fenster, Danny Garber, Rick Hines, Tom Hollander, Dmitri Martynov, Steve Marx, Tony Meleg, Suren Machiraju, Ade Miller, Valery Mizonov, Windows Azurelter Myers, Masashi Narumoto, Bhushan Nene, Eugenio Pace, Curt Peterson, James Podgorski, Srilatha Rayasam, Paolo Salvatori, Marc Schweigert, Mark Simms, Eric Slippern, Vijay Sen, and Tim Wieman.
Valery Mizonov和AppFabric客户顾问团(CAT)所做的贡献尤其值得一提。瞬时故障处理应用块来源于AppFabric CAT团队所开发的侦测和重试模块。改进的瞬时故障处理应用块则是模式和实践团队和AppFabric CAT团队共同合作的结晶。
特别感谢微软咨询服务部门(Lenny Fenster, Danny Garber, Rick Hines, Windows Azurelter Myers, and Marc Schweigert)的精彩合作。他们提供的定期反馈让本书的编写过程脚踏实地。感谢你们,使我们没有忽略许多重要的问题。
社区
感谢Rahul Rai, Sudhakar Reddy D V, Maarten Baaliauw, Zoiner Tejada和所有在Backlog站点上投票、对早期代码发布进行Beta测试和提供有价值反馈的人士。同时,还感谢模式和实践讨论会、TechReady和TechEd会议的参会者,他们提供了大量的非正式的反馈意见。
构建弹性云应用
致谢