编者按: QCon 北京 2015 将于 4 月 23 日~25 日在北京国际会议中心召开。在大会开始之前,InfoQ 推出了讲师对对碰栏目,邀请一些技术专家相互采访,碰撞出思维的火花。在 QCon 上,美图架构平台部门负责人洪小军将分享《美拍后端技术演进》,环信首席架构师梁宇鹏将分享《指数级增长业务下的服务架构改造》。之前我们已经推出洪小军对梁宇鹏的专访,今天推出的是梁宇鹏对洪小军的采访。以下为采访正文:
梁宇鹏:自从知道你要转战厦门,我就没停止过羡慕。所以还是要问一句,厦门天气好么?
洪小军:厦门作为美丽的海滨城市,空气质量常年都位居国内城市前列。可能很多人不知道,厦门市区其实是在一个岛上,而大家熟知的鼓浪屿,属于岛中岛。环绕着厦门岛有很赞的环岛路,是漫步、锻炼、发呆的极佳地方。总的来说厦门在生活层面非常好。
梁宇鹏:严肃点儿的问题是,说一说在厦门与北京工作的区别吧?
洪小军:厦门有很好的生活环境,北京有很好的工作环境,如果两者可以很好地结合,就很理想了。我来厦门,是因为有这样的机会,可以做“在北京时候做的事情”,但是又能享受到厦门很好的生活环境。
说到在这两个城市工作的差别,我觉得首要的因素还是人和事情。对于一个靠谱的人,如果有一些靠谱的小伙伴,在做一些靠谱的事情,是不会因为工作节奏慢、城市大环境技术氛围看起来并不是那么浓厚等因素而受到多少影响的。当然北京有更多机会,有更好的技术氛围,有大大小小非常多的技术交流会,有更多的技术牛人,也有更多靠谱的事情可以做。厦门当前也有越来越多的互联网公司,也在快速发展,有些岗位对技术的要求也并不比北上广的公司要求低,也在逐渐聚集越来越多的牛人。而随着越来越多公司加入支持远程办公的队伍中来,也会有越来越多的牛人选择在类似厦门这样生活环境好的城市工作,从而也会使得这些城市的工作环境有很大提高。
从我个人的角度来看,当前发达的网络并不会影响到知识的获取,技术氛围的建设也可以先从做好公司内部、团队内部做起,逐步推进到城市或者区域。最近也在组织更多厦门地区的技术交流活动,也顺便做个广告,欢迎更多的朋友加入进来,提高整体的技术交流氛围。而且正是由于有一些距离美,也能花更多的时间思考和总结,花更多时间在真正需要的事情上面,更加专注地做好事情本身。
梁宇鹏:可以介绍一下你在美图所负责的基础研发都有哪些方面么?
洪小军:业务在高速发展,业务架构也在不断地演进,需要一定程度把控业务架构的演进。伴随着业务架构的演进,也需要一些基础性的系统做支撑,不同发展阶段所需要的技术支撑也会有所不同。
现在主要做的事情偏向以下两个方面:
- 研发对于性能和稳定性要求高、容易成为向社交化和平台化发展的技术瓶颈点的系统 / 服务,比如美拍好友动态聚合服务、LBS 服务等。
- 研发相关的基础服务,使得业务研发团队更专注于业务本身,对于系统的扩展性、稳定性、可运维性、成本等有更统一的解决方案,比如存储服务、缓存服务和队列服务等。
梁宇鹏:美图的系统大概是什么量级?你觉得最大的挑战是什么?
洪小军:美图有多个产品,包括美图秀秀、美颜相机和美拍等产品。移动用户已经达到 9.8 亿,覆盖客户端 6.8 亿,而对后端技术有较大挑战的是美拍,上线不到一年已经是国内最火和发展速度最快的短视频社区,每天有百万级的视频 / 图片发布量。
挑战方面更多是如何在高产品迭代速度的情况下,保证业务系统的交付时间和高可用性。业务在飞速发展,衍生出对很多系统的需求,那应该如何高效和有序地完成这些系统的研发呢?
首要的是团队人员建设方面,怎么更快地找到合适的人才加入,并且能在更短时间内融入到团队中。创业公司不像大公司那样在业界有很高的知名度,作为团队负责人,需要花费更多的时间和精力来寻找和吸引人才。但是很高兴看到的是,现在越来越多的人才也在流向创业公司和中小公司,这样能更好地促进这些公司发展壮大。
其次是怎么保证高效的研发。业务系统方面使用更高层的语言,比如 PHP/Java,整体研发效率一定要可控。但是对于基础系统,由于重新研发的成本偏高,并且在创业公司的快速发展阶段,造轮子本身也不是特别好的选择,所以一般会选择使用开源系统。对于使用开源系统,更可控的方式是对其代码有更深入的研究,并且根据公司的情况做一些二次研发,做好各种运维保障机制。有一点比较矛盾,在快速发展阶段,又很难对每个开源系统都采用这种策略,所以当前我们针对核心系统会更多采用这种策略,而更多的系统,则会重点从弱依赖、运维保障等层面做更多事情。
梁宇鹏:语言方面你是怎么选择的?
洪小军:对于创业公司和快速发展的团队,非业务的基础性项目,更多是会基于开源项目做二次开发,要求的是快速上线,然后不断优化迭代。能完全自主选择语言,有时候是比较奢侈的想法,如果碰到的是自己所期望的语言,那是最理想的;但是多数情况下并非如此,但是评估的前提也是团队学习成本在可控的范围内。
对于业务性项目,由于多数代码要从头开发,多数选择的是团队熟悉的语言。不只是研发效率能保证,相关的配套组件 / 框架也都比较完善,尤其是做过很多定制化的改造。举个例子,Memcached 的客户端,市面上开源的现成组件,很少有针对高可用做比较周全的保障,比如 FailFast、Failover 等,如果系统要求这些保障,不可避免需要做一些二次开发。当选择一个新的语言时,意味着也需要有这方面的建设。但前提是自己的系统一开始就要求这么高的可用性保障,多数不断发展的系统其实是可以接受逐步完善这些机制的。
总的来说,基础性的——比如存储类项目,我们主要基于 C/C++;业务性项目,考虑团队成员情况,主要基于 PHP/Java,但是也开始在一些项目中推进使用 Golang,并且同步去完善相关的基础组件,后续更多的项目在可行情况下也会重点考虑基于 Golang 实现。
梁宇鹏:到创业公司里,工作起来感觉应该很不一样吧。在协作、制度等方面,是不是有什么感受?
洪小军:在创业公司里,第一个感受是,有非常多的事情要做,想的更多的是应该先做哪些事情。而在大公司里,对应的情况可能是想着有什么事情可以做。
在创业公司里,目标也更加明确,并且由于组织结构一般也比较扁平,更容易把所有成员的力量揉在一起往前突,最大化发挥团队的战斗力。
梁宇鹏:最后一个问题,你是如何调整家庭与工作的关系的?
洪小军:投身到快速发展的公司,并且要重新开始组建团队,本身就是要做好接下来会需要投入非常多的时间和精力的准备。所以在做这个决定之前,会跟家里人做好相关沟通,并且也会有一定程度的评估。得到家人的理解和支持,我觉得是最重要的;在这里也很感谢家人,让我有更多时间可以专注在工作上面。
但是因为有小孩要照顾,无论怎么样,家庭的比重都会比之前高一些,所以对于时间的规划就越突显出重要性。尤其是在家里时,时间会更加碎片化。我个人的做法是把很多零碎的事情记录到 wunderlist 上,如果不是紧急需要处理的,就不会拿大段工作时间去处理,而是留待碎片时间。试行了几个月,从效果上来看其实是不错的。
感谢臧秀涛对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论