QCon第一天见闻

Posted on Fri 23 April 2010 in it

今天是非常充实的一天:早上7点起床,8点出发,9点进场,上午2场下午4场主题演讲听得非常过瘾,到家后头脑还非常兴奋,开始准备整理一下思维,记录一下今天听讲的感想。

一开场,主持人就告诉大家一个消息,Erich Gamma因为冰岛的火山灰原因,无法出席本次QCon了,他自己深表歉意,并承诺,下次他来北京演讲,本次参加的人都可以去免费听,作为补偿。

Michael Nygard - 《失败来临的征兆》-四星

这是第一个演讲,当时坐得有点儿远看不清楚ppt,听得有些云山雾罩。这里有人做了笔记,回来仔细看了看,觉得很不错。

首先给了两个假设: 1. 用户关注功能而不是你使用什么软件硬件; 2. 失败和错误总会发生。然后引出了工程化失败模型。

工程化失败模式(Engineering Failure Modes)

  1. 容忍:将震荡吸收,而不是传递它
  2. 服务能力:功能缩水而不是整个损坏
  3. 恢复能力:允许组件重启,而不是让整个世界“重新启动”
  4. 弹性:能够从瞬时性(Transient)的影响中恢复
通过这几点来保障功能的可用性。
    然后介绍会对稳定性造成影响的因素: 1. 系统间集成的点; 2. 连锁反应; 3. 某些用户行为。很多线上的情况都是之前无法预测的。

    最后给出了很多有益的建议:

    1. 尽可能完善的测试;
    2. 控制错误传播的范围;
    3. 降低服务间的耦合性以及服务间的依赖关系;
    4. 在SOA的体系中要有所谓的严重错误Breaker机制来预防蝴蝶效应带来的一系列严重后果。
    此人在架构设计方面非常有经验,他的Blog以后可以常看看。

    Paul King的《动态语言的敏捷开发实践》-四星

    第二个我就吸取教训了,跑到第一排过道去听了一个过瘾。下午还听了他另外一场《Groovy中的强大功能》。这个家伙在动态语言上造诣颇深,对推广Groovy上贡献非常大,下午被他的Groovy实例代码惊得够戗:简明的语法能把百十行的java代码变成几行;强化的功能包括Closure/DSL/对测试的支持等;还有奇幻的Grab方式的import maven类库,不禁让人摩拳擦掌。

    麦天志《如何在团队中有效实施TDD》- 三星

    下午第一场。麦天志是来自香港的敏捷专家。有几点经验觉得很不错,和大家分享:

    1. 怎么判断是不是重构?重构需要保证不能改变系统的外部行为,需要有单元测试保护;如果没有足够全面的单元测试保护外部行为不被改变的,叫做重写。

    2. 好的单元测试的标准: 快、可读、一个测试测尽可能少的功能,甚至达到一个测试只有一个断言

    3. 持续集成: 测试代码覆盖度显示放在CI中,激励大家增加测试代码

    徐春好《SOA技术架构和平台实践》- 三星

    下午第二场是来自普元的徐春好讲《SOA技术架构和平台实践》,也非常不错。虽然他也在推广普元的产品,但对企业架构的问题分析总能搔到痒处,并且提供方法级的解决思路。

    Groovy中的强大功能》-四星

    第三场就是Groovy的了,听得相当兴奋。

    第四场是蔡学镛讲《Rebol漫谈》,是我今天听到的最不认真的一个演讲。他自己写在ppt中的代码自己都讲不清楚,听了10分钟就换到另外一个会议室,去听张矩讲《构建高扩展性云平台的十大举措》了。

    张矩《构建高扩展性云平台的十大举措》- 四星

    讲得真挺不错的,虽然十大举措就听到后几个,觉得挺有道理的:

    1. 规划时要区分数据的重要性,以便分别存储;

    2. 监控的最高目标是:提高系统在运行过程中的可见性;

    3. 自动化的重要性: 自动化高的系统维护部门,一个人可以维护5000台服务器!

    在回答问题时,能看出来这个人很谦虚机敏,在一个回答中讲到一个设计原则:计算成本越来越便宜,传输成本没有这么明显的降幅,所以计算要尽量离数据近,降低传输成本。