
经典案例学习,是一种直接而有效的学习方法。本书精选全球领先的知名IT与互联网公司在最近一年里所做的大型项目中的软件测试案例进行讲解。在开发团队中,架构和开发,是IT开发人员最重要的环节。全书分成架构篇和开发篇,通过多个精彩案例,并由案例实际参与者、项目团队的负责人亲自解析这些案例,图文并茂、提纲挈领地讲述了这些案例的实现过程与其中的核心技术、要点难点。
序言 近几年来,随着中国互联网产业的高速发展,全球科技节的目光逐渐被北京、杭州、深圳所吸引,无论是科技创新成果还是软件研发团队的标准,都在大跨步地向硅谷看齐。中国软件研发团队的规模不断壮大,水平日益提高,与开源分享的思潮密不可分。过去,我们都在使用国外互联网公司分享的开源软件,而最近几年来,越来越多的国内互联网行业领先企业,开始开放自己的开源产品。 其实,除了将软硬件系统开源分享之外,互联网圈更加注重思想交流与理念互换。不像互联网刚刚起步的那个时期,每家企业都在闭门造车,把每一个新的想法都纳入“保密条例”,生怕被同行业者抢了先机。现在的软件研发团队愈发重视分享的重要性,这一转变在中国的IT行业尤为明显。如同研发创新圣地硅谷,在北京、上海、深圳甚至中国的二三线城市,基本每周都可以参加各种类型的技术沙龙,主讲人将自己的从业经验、实践心得分享出来,在相互讨论中收获新的启迪。 交流与分享是行业思维革新的助推器,曾经有一个时期,中国的互联网行业大多数依靠模仿国外的产品,而现在我们开始深入研究,研究国外及国内优秀软件研发团队的技术与管理案例,在研究与分享中获得新知。“授人以鱼不如授人以渔”,这句话出自《淮南子?说林训》,原文说:“临河而羡鱼,不如归家织网。”依靠模仿我们可以获得新产品的外壳,而通过对优秀软件研发团队的案例研究,可以逐渐掌握技术理念,养成创新意识。 时至今日,全球软件案例研究峰会(以下简称“top100summit”)已举办4届,累计分享了来自全球一线互联网企业研发团队的400个软件研发优秀案例,参会者超过万人。在峰会的组织筹备阶段,越来越多的软件研发团队愿意将自己的行业经验与心得分享出来,业界同仁的精神让我们感到欣慰与感动。在第4届top100summit筹备期间,最艰难的事是如何在上千个案例中挑选出100个,而每一个案例背后都凝聚着一个团队的付出与心血。我们没有资格评判任何一个案例的优劣,但是又不得不优中选优地甄选出最具行业代表性的100个案例。最后,我们决定把选择权交给这个行业,让每一位软件研发从业者都有资格评选出自己认为优秀的案例。 最终评选出的每一个案例都是一笔宝贵的财富,作为top100summit的主办方,我们不能让这些案例沉默,不能让这些软件研发团队的实战经验和精髓理念只绽放两天的光彩。这些案例是对这一年IT行业发展的年度总结,每年的峰会结束之后,我们都会再次梳理案例分享的文稿,将这些精髓理念整理出版,与更多人分享。 作为软件研发行业的一名“老兵”,一路走来,我深深地感觉到互联网特别是中国互联网行业发展的不易,腾讯、阿里、华为等中国企业让硅谷为之侧目,而现如今中国的大数据、云计算、虚拟现实、人工智能等产业技术的发展已经成为全球技术探索的第一梯队。我们也更加相信,在分享创新思潮的推动下,中国的软件研发团队会不断涌现新技术、新理念。 最后,我要对这些分享者表示感谢,正是因为有你们的无私奉献,才有这本书的诞生,才有技术思维及经验的交流与传递,让整个行业不断前行。 前言 前 言 “TOP 100”是全球软件案例研究峰会,已举办了四届,累计分享了来自全球一线互联网企业研究团队的400个软件研发优秀案例,与会者上万人。由于受篇幅限制,我们精选了第4届中100个优秀案例中的22篇软件设计、架构、开发方面的文章进行分享,以飨读者。 为了方便软件、互联网从业者的学习借鉴,我们将22篇文章分为如下三篇。 第一篇 工程实践 在软件研发行业,每年都会涌现出几个“爆品”,有些是短时间内被快速传播,获得大量用户,有些是具有技术研发里程碑意义的全新实践。这些“爆品”的出现或者是因为产品功能的有效创新,或者是对用户体验的极致迎合,而在背后,是对软件研发方式的严谨思考。 这一篇的内容精选2015年出现的技术实践案例,从创新实践到团队管理,让我们从案例中找寻软件研发人的“工匠精神”。 第二篇 互联网高可用架构变迁 每一名软件研发从业者都希望自己参与的产品能够被海量用户所使用,希望通过代码与技术智慧为更多人提供服务。架构,是产品形态支撑的脊柱,在海量用户使用的背后必然离不开高可用架构的承载。2015年,滴滴出行成为当之无愧的“明星”,在市场竞争中脱颖而出,而每一款产品在用户快速增长的过程中,都少不了架构的变革,为每一位用户提供稳定的功能。 这一篇收录了滴滴出行、魅族、当当、小米、Hulu、微博等平台的架构实践案例,从成熟平台中挖掘架构变迁的奥秘。 第三篇 云计算和大数据 随着中国互联网产业的发展,每天都可以产生海量的用户交互数据,当数据的重要性被越来越多的人所认知,大数据时代已然到来。大数据与云计算像是一枚硬币的正反两面,密不可分,两者相互依托,产生更多可能。目前,越来越多的企业重视大数据与云计算的技术,这也对软件研发从业者提出了新的挑战。 这一篇收录了云存储、云计算、云迁移、云管理、云智慧及广告大数据等技术实践案例,从这些案例中寻找云计算与大数据背后的技术逻辑。 本书精选的案例,在编写过程中尽量保持了原作者的叙述风格和思想观点,让读者了解最新的先进案例,分享知识干货,以利于知识地地扩散也传播。本书在编写过程中,感谢各位作者的奉献和支持。希望读者通过阅读能有所收益,在未来的第5届或第6届“TOP 100”峰会中崭露头角,实现成为研发团队带头人的梦想,展示出更加优秀的安全新篇。 编 者 2016年10月
第一篇 工程实践 //1 第1章 让大象跳舞——Office移动版的性能开发周期 //2 一、背景介绍 //3 二、问题提出 //3 三、解决思路 //4 四、实践过程 //6 五、案例启示 //14 第2章 软件设计发展路线和设计能力提升训练营实践 //16 一、为什么要做软件设计 //17 二、软件设计发展路线 //17 三、理论与演练结合提高软件设计能力 //22 第3章 代码评审,从武侠式到军团式的转变 //23 一、背景 //24 二、导言 //24 三、反思 //25 四、案例 //26 五、心理 //31 六、启示 //32 第4章 猿题库IOS客户端架构设计 //33 一、MVC //34 二、MVVM //34 三、在两种架构中权衡而产生的架构 //35 四、Show me the code //36 五、总结 //44 后记 //45 第5章 从铁通App的开发看企业级移动平台的架构选择 //46 一、企业移动化平台的选择 //47 二、铁通开发App的实践过程 //47 三、案例思考 //50 第6章 百度外卖物流智能调度 //54 一、案例简述 //55 二、案例背景 //56 三、实践过程 //56 四、待解决的问题 //60 五、案例启示 //61 第7章 1号店用户画像系统实践 //63 一、问题提出 //64 二、解决思路 //64 三、实践过程 //65 四、效果评价 //72 五、推广建议 //73 第8章 当当推荐团队机器学习实践 //74 一、案例特点 //75 二、背景 //75 三、简述小团队 //76 四、推荐系统架构 //77 五、系统构建 //79 六、关键经验教训 //83 七、作为软件系统的挑战 //86 八、总结 //88 第二篇 互联网高可用架构变迁 //89 第9章 大型电商网站系统架构优化实践 //90 一、引言 //91 二、电商行业发展趋势 //91 三、架构优化实践 //92 四、总结 //98 第10章 移动互联网的挑战:敬畏每一分钱 //99 一、滴滴每次业务都涉及支付 //100 二、出行界的屌丝逆袭 //100 第11章 魅族应用商店服务器端架构实践 //103 一、应用商店的简介 //104 二、第一代架构 //104 三、微服务架构 //105 四、多机房架构 //108 五、未来的展望 //109 第12章 当当分布式作业框架elastic-job解密 //110 一、为什么需要作业 //111 二、当当之前使用的作业系统 //112 三、elastic-job的来历 //113 四、elastic-job的功能 //113 五、elastic-job的具体模块的底层及实现 //115 六、elastic-job部署和使用 //116 七、对开源产品的开发理念 //117 八、未来展望 //118 第13章 软硬结合,新旧并举——美团云网络演化进程 //119 一、美团网——一家完全云化的电商平台 //120 二、作为电商平台的美团为什么要做云 //120 三、美团云网络演进过程 //120 四、新旧并举,以最小代价解决最大问题 //125 第14章 架构演化和业务增长的领悟之道 //126 一、什么是架构和业务 //127 二、软件架构的起点 //127 三、软件架构的演化 //127 四、解耦是架构演化的核心问题 //128 五、处理架构的瓶颈 //129 六、现代软件的架构SOA //130 七、微服务化的趋势 //130 八、架构的角色篇 //131 九、架构师如何处理复杂问题 //131 第15章 Mico的朴素架构之旅 //132 一、产品背景 //133 二、初起炉灶 //134 三、高速发展 //139 四、步入正轨 //144 五、未来愿景 //148 第16章 Hulu全平台视频系统的演进——MPEG-DASH及其他 //150 一、Hulu为用户带来无缝体验 //151 二、Hulu自主研发的技术发展之路 //151 三、视频系统的需求与挑战 //152 四、技术选型之路 //154 五、视频系统的架构 //158 六、总结 //160 第17章 基于PerReq技术,精准提升微博图片访问质量 //162 一、案例复现 //163 二、传统的解决办法 //165 三、我们的思考 //165 四、案例解决方法 //166 五、PerRequest诊断技术带来的变化 //169 六、案例启示 //170 第三篇 云计算和大数据 //171 第18章 “大象”起舞带来的启示——云计算的核心业务系统 //172 一、基于云计算的核心业务系统 //173 二、让“大象”起舞 //173 三、研发的案例和目标 //174 四、架构设计思想 //176 五、复杂系统建设实践 //178 第19章 某大型财务咨询公司云迁移案例分析 //181 一、项目背景 //182 二、数据迁移 //182 三、应用程序迁移 //187 四、业务迁移 //189 第20章 基于Ceph的云存储设计 //194 一、问题的提出 //195 二、实践过程 //197 三、效果评价 //205 四、推广建议 //206 第21章 东软SaCa Aclome云管理平台架构演进之路 //207 一、案例简述 //208 二、案例情景 //208 三、成功要点 //211 四、案例效果 //215 五、案例启示 //215 第22章 计算广告大数据核心技术 //217 一、大数据技术难点分析 //218 二、广告技术平台解密 //219 三、Hadoop生态系统在广告大数据应用中选型分析 //220 四、真实案例分析 //222 五、应用案例分析 //223
麦思博(北京)软件技术有限公司是一家面向软件研发团队的培训咨询机构,致力于缔造中高端软件研发管理人才,提供原创经验分享和卓越技能传授,讲师原任微软卓越管理领导团队成员,曾获得微软全球杰出研发管理奖。首创以智驱动咨询式培训模式,独特的二十一项管控服务流程,以及享誉三十余年软件研发管理实践而闻名。__eol__