京城四月,春暖花开,Qcon北京2011大会如期举行,历时三天(4月8日-4月10日),时间虽短,但是日程安排丰富,大会邀请国内外知名技术专家为开发社区奉献了9场主题演讲和12个专题会议,共计57场讲座,参会者人数超过1200人,创下历史新高。正如InfoQ中文站创始人霍泰稳在致辞中所说,创造可信赖的内容是InfoQ的核心价值观之一,QCon大会也以此为目标。
\闲话少说,为了让读者更好地了解本次Qcon北京2011大会,我们在这里根据专题分类快速回顾一下大会的精彩讲座,希望能够对未参会的朋友有所启发,参会的朋友也可以温故知新。
\知名网站案例分析
\互联网热潮仍不减,知名网站来支招。百姓网技术总监潘晓良从机房选型、速度监控、瓶颈发现、数据分析到优化手段等各个方面讲述了百姓网的优化过程;新浪微博首席架构杨卫华介绍了新浪微博平台的最新技术改进和构建高性能微博系统的必要条件;天涯论坛产品总监王建科分享了天涯论坛十年来的技术进化、为创业团队提供了一线经验;淘宝数据库专家余锋讲述了淘宝商品库从各个层面优化的实际经验。
\企业敏捷转型之路
\敏捷逐渐深入人心,企业转型是否路漫漫?上海贝尔研发能力总监田立新通过五个产品部不同的转型故事分享经验和教训;国际资深敏捷专家、Gordon Pask大奖获得者David Hussman介绍了在企业中实现敏捷采用哪些指导工具,如何产生价值;广联达研发副总裁卢旭东总结了公司两年来在敏捷转型中的收获和经验;腾讯高级经理肖德慧讲述了在产品形态差异大、员工众多的情况下如何实施敏捷。
\深入浅出NoSQL
\NoSQL时代,No,SQL!腾讯资深技术专家胡戊以QQ邮箱为实际案例分享了对NoSQL、MYSQL、及自身开发的SDB存储系统的对比分析; 视觉中国技术总监潘凡详细讲述了人气最旺的NoSQL数据库之一MongoDB的应用开发实践经验。Facebook存储工程师、Hbase开发者之一Nicolas Spiegelberg分享了深入浅出地分析了NoSQL技术;BeansDB作者、豆瓣架构师刘洪清介绍了BeansDB的实现原理和关键技术。
\技术热点是与非
\技术沉浮录,热点抢先看。淘宝架构师廖凯以亲身经历讲述了服务器端JavaScript运行环境Node JS在淘宝的实践应用和前景;支付宝架构师周爱民从语言特性的角度高屋建瓴地分析了JavaScript的发展史以及对开发社区的影响;ThoughtWorks中国区首席技术专家徐昊则从软件架构的角度评说了从远程过程调用(RPC)到SOA再到REST的是是非非;Hibernate创始人Gavin King介绍了ceylon语言的类型系统。
\设计优良的架构
\即使没有银弹,我们还要努力!兴业银行IT工程师周伟然从银行稳定性的角度介绍了负载均衡、高可用性等经验;Spring开发者之一Juergen Hoeller分享了Spring 3.1的现代组件设计;艺龙首席架构师贾志峰讲述了电商类网站的架构设计原则与实际应用;用友集团瑞友科技研究院副院长池建强讨论了企业级软件的组件化和动态化开发实践。
\更有效地做测试
\古老的话题,新鲜的经验。淘宝性能测试负责人吴毓雄详细介绍了淘宝线上线下的性能跟踪体系和容量规划;腾讯互联网测试部助理总经理吴凯华就如何搭建企业自身的自动化测试平台做了论述;IJI China董事总经理吴穹针对某大型保险公司的开发测试团队组织方式以及系统的架构特点,给出了一套分层测试、融合开发测试团队的具体解决方案;国际资深测试技术专家Erik Petersen介绍如何通过整理、调查、预测这三个探索式测试的主要步骤,分析应用程序,发现漏洞并做妥善处理。
\Web性能与扩展
\当小web成长为大WEB,性能问题随之而来。新浪首席DBA 杨海朝分享了MySQL性能优化的实践经验;系统分析师蒋江伟讲述了淘宝前台系统的优化过程和技巧;性能技术专家Adrian Cockcroft侧重介绍了Netflix开发过程中的迁移策略、监控和运维等实践经验;资深网游专家谢廷宝从其多年的网游服务器优化工作中分享了自己的经验。
\下一站:移动开发
\移动开发,你搭上这班车了吗?财帮子创始人陆亦斌重点讲述了开发高质量iOS应用的技巧;台湾软件架构设计大师高焕堂分享 扩展Android框架功能和底层模块的技术要点;睿德英志CTO李亮详细介绍了 iOS4 的新特性以及对开发的影响;知名IT技术专家韩超分析了Android对Linux内核的改造及影响。
\可伸缩性架构设计
\可伸缩性,架构设计的重要一环。Google资深工程师方坤分享了Google的互联网超级云计算平台;米聊技术负责人陈臻探讨了分步式系统架构的取舍和难点;《领域驱动设计——软件核心复杂性应对之道》作者Eric Evans介绍了如何通过领域驱动设计处理遗留系统;阿里巴巴架构师蒋韬分享了跨国交易平台的风控和反欺诈技术。
\来自一线项目的经验
\站在高处太久了,不妨低头看看脚下的路。淘宝技术专家李宇讲述一个互联网团队从几个人到几百人的过程改进之路;百度项目经理路宁向大家展现了 百度持续集成中的工具战争;ThoughtWorks项目经理胡凯讲述了建设全功能团队的是是非非;中兴通讯上海网管开发部部长苏春山探讨了敏捷中用户合作、为用户创造价值的课题。
\HTML 5开发平台
\HTML 5来了,你准备好了吗?HTML 5中文小组主席谢子斌从W3C成员的角度介绍了HTML 5的过去、现在和未来;淘宝前端工程师李晶分享了淘宝实际应用HTML 5技术的宝贵经验;MagnetJoy Games的CTO杜欢从网游的角度分析了HTML 5的优势;来自盛大创新院的贺师俊讲述了HTML 5的兼容性问题以及对策。
\永不宕机的服务器
\永不宕机,看似遥不可及。百度高级工程师肖伟揭秘了百度应用开发引擎(Baidu App Engine)的高可靠性;阿里巴巴架构师张旭升分享了阿里巴巴全球网络基础平台等方面的架构设计以及高效网络运维方面的经验;蓝汛CBU研发总监许伦详细剖析了大型视频网站单点分析与可用性提升问题;美地森科技技术总监王劲凯介绍了基于服务器、集群存储和虚拟机的云服务器实现。
\正如读者所看到的,本次QCon大会的主题范围广泛,涉及软件开发领域的各个方面,目的是希望能够满足参会者的不同需求。大会得到了参会者的热情支持——在许多分会场,由于满座,许多人不顾疲劳站着听完了专家的讲座;在主题演讲时,由于提问太多,主持人不得不中止互动环节,请观众与讲师线下交流;在茶歇时间,观众们围住讲师自由讨论,犹如开技术Party......这一切都是观众对QCon大会内容的肯定和褒奖。
\除了正常的专题讲座之外,QCon利用晚上的时间还组织了讲师见面会、Open Space等,促进参会者与讲师、参会者之间、讲师之间的沟通。以讲师见面会为例,大家可以与感兴趣的讲师进行零距离的交流,讨论的内容没有限制,可能是对讲座内容的疑问,也可能是观众实际问题的求助等等,现场气氛十分热烈,甚至有几位志同道合者聊到半夜.......
\像以前一样,本次QCon大会设置了课程评议制度,参会者可以对每场讲座评分,InfoQ中文站会认真对待大家的反馈并以此改进未来的专题和讲师安排。
\与往年不同的是,QCon北京2011大会设置了观众微博互动项目,大家通过发送的Qcon微博会实时显示在会场外的电子显示屏上,风趣的点评吸引了大批驻足者。截止大会结束,与QCon有关的微博数量超过4000条。
\热心的参会者通过各种形式对QCon大会的内容进行了讨论和记录,其中不乏亮点。
\途我睿的博客对Netflix的云计算性能优化做了精彩的回顾:
\\\Netflix作为一家美国最成功也是最炙手可热的在线视频公司,在过去的几年经历了巨大的转型。Netflix一开始构建自己的data center,后来发现用户增长太快,data center的增长赶不上用户的增长速度,于是采用了Amazon的AWS,从此一发不可收拾,目前主要服务都跑在AWS上,未来会将所有内容和服务都迁移到AWS。Cloud对部署的一个好处是不再存在“升级”。Netflix这样做升级:
\
- 新的代码被集成到AMI中,然后创建一堆新的实例。\
- 老的实例继续提供服务,少数流量被导入到新的实例上观察效果。\
- 如果一切正常,流量全部切换到新的实例上。\
- 稳定一段时间后,老的实例被彻底终止。\
侯伯薇的博文则概括了Qcon大会有关敏捷专题的一些专家观点:
\\\
- 敏捷要快速地响应变化\
- 敏捷的过程中要不停地反思和改进\
- 想要真正改善现状和解决问题,就不能仅仅关注于开发。\
- 对于实施敏捷的团队,领导具备敏捷的意识很重要\
- 只要目的一致,就不会存在不可调和的冲突和矛盾\
- 敏捷会节约成本,包括沟通的成本、反复的成本等等\
Another Java Geek的博客对Twitter的优化原则做了总结:
\\\
- 做得越少越好。\
当然这不是教人偷懒,而是非常明智的折中原则。这不仅适用于性能优化,也适用于产品演进。在面临众多候选的产品特性时,拒绝大而全的诱惑,将精力聚焦于那些关键的功能特性上,做到少而精。Twitter自始至终坚持140字的短消息,没有扩展到1000字、10000字用于写长篇博客,用户关系是简单的 follow和被follow的关系,没有扩展成SNS那种复杂的关系。Twitter的成功也说明了这条原则的正确性。
\ 关注内存的使用。\由于Twitter所有计算的开销都不大,而包括对象分配、Cache等都要占据内存,因此内存成了关键资源,Twitter的很多努力都花在内存的使用上。Twitter的技术方案是基于Ruby on Rails,关于Ruby的GC,Evan讲了很多,Twitter内部自己实现了一个Ruby的垃圾收集器(Garbage Collector),名叫kiji好像。其垃圾收集算法跟Java的类似,不过似乎比Java的简单,堆内存分为Longlife Heap和Eden Heap,Longlife Heap相当于Java的Old Generation或Permanent Generation,Eden Heap相当于Java的Young Generation中的Eden Space。
\ 让代码去做假定。\关于这一点,我的理解是让代码在访问数据之前对各种可能的情况先做假设,而不是等到所有数据收集齐备再做决定,这样能够更快得做出响应,进而提高吞吐量。
\ 以明确地、批量方式访问数据。\
来自5173网站的余波在他的博客【主题点评】一边扯淡,一边QCon中对这次的QCon大会做了深入的总结,里面特别提到他对来自广联达的讲师卢旭东演讲的赞赏:
\这是我最喜欢的一个主题,没有之一。广联达在敏捷转型过程中,非常务实,非常灵活,在困境中背水一战,最终完成了敏捷转型。而且这种转型,是整个公司文化的转型,不光研发过程敏捷起来,整个公司的各项事务都敏捷起来了。以卢总为代表的广联达吃透了敏捷的本质,高屋建瓴,在核心原则的指导下大刀阔斧的进行适应性调整。更让人惊叹的是,他们还建立了很多非常具体的观察点,来验证敏捷实践的效果,方向越做越明确,信心越做越大。更加难能可贵的是,敏捷转型过程中,几乎没有人员流失,就是原来的这群人,摸索出来一条可以轻松点干活的路。\
除此之外,还有Scourgen的QCon演讲点评、秋花寂海的QCon第一天、李三火的QCon见闻、杨灿的QCon大会日志等等,大家从各个方面对Qcon大会做了跟踪和回顾。
\对QCon感兴趣的朋友和参会者,可以通过QCon大会网站下载讲师的幻灯片资料,InfoQ稍后会制作演讲、采访视频放到中文站上。
\感谢所有关心或者参与QCon大会的读者朋友!
\最后预告一下,今年10月下旬QCon杭州2011大会将在美丽的西子湖畔举行,人间天堂,技术盛宴,让我们不见不散!
\给InfoQ中文站投稿或者参与内容翻译工作,请邮件至[email protected]。也欢迎大家加入到InfoQ中文站用户讨论组中与我们的编辑和其他读者朋友交流。