"伤得起"的云计算应用——对云端应用之架构的思考
2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。
该内容已经被标记书签!
标记书签错误,请重试!
作者 李剑 发布于 2008年1月21日
上周六(1月19日),InfoQ中文站与ThoughtWorks、BJUG、AgileChina、BPUG等社区共同举办了一场Open Party活动,场地设在ThoughtWorks北京办公室,大约四十多人参加了本次聚会。来自ThoughtWorks的咨询师路宁为参会者献上了一 场精彩演讲:Lean Thinking With Examples,详细分析了实施精益或者敏捷过程中最大的阻力,以及如何识别和消除浪费。
活动从一个简单的Stand-up meeting(站立会议)开始,之后是半个多小时的沟通交流和所有主题的票选。当天的主题包括了开源社区发展、GPE、Mingle和Erlang等众 多精彩内容。在进行分会场会议时还发生了一个有趣的小插曲,Matrix的clever pig(刘丹)和Peter Cheng(程勇)的“开源社区发展”吸引了大多数人的注意,从而导致其他两个同时进行的主题因为人数过少被迫暂时中止。
之后,路宁在分会场进行了题为“Lean Thinking With Examples”的演讲(演讲PDF文件下载)。他从丰田生产系统(Toyota Production System)和精益(Lean)的历史谈起,分析了在企业或公司实施精益或敏捷的最大阻力——大规模生产时代在人们思想中形成的那些“看似合理但实则不 然”的思维定势(量产时代后遗症)。他还谈到了丰田如何扭转思维,大刀阔斧地探索自己独特的生产体系,最终在国际竞争中脱颖而出的故事。他说道:Lean就是识别和消除浪费(不产生附加价值的活动)的技术。随后,他举例说明了如何利用精益的5个原则(注:见新闻底部附注)来识别和消除浪费,同时还列出了几个常常与浪费结对出现的典型现象:
未完成的工作都涉嫌浪费。精益或敏捷就是将未完成的工作(浪费)减少到最小的技术。按照这个说法,就连所有正在编写的代码都属于浪费。乍一听真的匪夷所思,如果不编写代码,我们拿什么东西给客户交付?价值又从何而来?这又怎么能说成浪费呢?
上个月在InfoQ中文站一篇名为“抛砖引玉——重构是必要的浪费”的新闻中,Amr Elssamadisy提到过:
精益定义了两种类型的浪费:“纯粹的浪费”和“必要的浪费”。“纯粹的浪费”指的是那种既不能给开发团队也不能给客户带来好处的做法。“必要的浪费”是指某些行为,即便它不能给客户创造价值,但也是在我们所知的范围内完成一项工作的最佳方式。
路宁在演讲时也针对精益所定义的浪费进行了重点论述,并且对后者进行了更为详尽的说明:在软件开发中,测试、集成、重构和管理都属于这种浪费。他还总结了为减少这种无可避免的浪费常常应用的几个有趣的Pattern:
李剑 李剑──ThoughtWorks高级咨询师,在持续集成、重构等领域具有丰富的经验;多次为国内大型企业敏捷组织转型提供咨询和培训服务。
可以评选当天互动最激烈的Topic了吧,严重延时,^-^
汗……这个确实没的说,被Tin同学和cleverpig催了很多次:)
是啊!我称之为“柏拉图式的Topic”。不过,我个人非常喜欢这种freestyle。
“柏拉图式的Topic”,有意思的提法,Topic中的内容确实容易让人感觉到理想与现实间存在的差距,但丰田、法拉利、CFM国际公司(航空发动机生产厂商)等企业都已经经过自己不懈的努力证实了丰田生产方式的威力,它们在一步步走进理想,并在过程中享受着市场的回报。Agile也在软件领域中也有些“柏拉图”的味道,但重要的是有一些团队或公司正在脚踏实地地实践和享受着这种逼近“极限”的感觉。
理想和现实还是有一定距离的,每个企业的基本环境不一样,不要想着一步到位,丰田也是经过漫长的摸索和创新才有这样的境界。
就像企业一样,如果连电脑都没有,怎么上信息化。
嗯,距离是一定有的,只要我们比竞争对手距离理想更近一点就好了。
Kent Beck在他的新书《实现模式》总结了三条编程中的价值观:沟通、简单和灵活。
而他自己也说到了在“灵活”这一点中存在有争议。该做到怎样才算灵活呢?需要去估计未来在什么地方可能发生变化么?不去估计的话,怎样保证这种设计足够灵活呢?去做了估计,又怎么可能保证你的估计会正好和未来的变化相吻合?如果不吻合的话,那这种做法就增加了代码的复杂度却没有增加价值——而这一点往往是占了很大比例的。
精益生产不适合于软件生产
应该是不适合"量产"的软件生成, 例如外包.
2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。
12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011。
篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011。
本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。
随着JDK 7的发布,字节码指令集终于迎来了第一位新成员——invokedynamic指令。这条新增加的指令是JDK 7实现“动态类型语言(Dynamically Typed Language)”支持而进行的改进之一,也是为JDK 8可以顺利实现Lambda表达式做技术准备。在这篇文章中,我们将去了解JDK 7这项新特性的出现前因后果和它的意义。
随着互联网应用的发展,Java分布式远程服务技术受到越来越多的关注,本文将对各种相关实现以示例的形式逐一介绍,并总结其中的优缺点,使读者能够在技术选型时有所准备。这是文章的下篇。
《精通HTML5和CSS3设计模式》一书记录了目前HTML5应用程序的许多常见设计模式。InfoQ对该书作者之一Dionysios Synodinos进行了采访,谈到了该书以及HTML5应用的相关内容。
9 条回复
关注此讨论 回复