一淘曲琳:搜索引擎的架构维护与职责协调

原创
开发 项目管理
编者按:51CTO记者在International ArchSummit架构师峰会上,针对一淘的搜索引擎技术对一淘网架构师曲琳的采访,谈谈一些搜索引擎的技术与研发的协调与合作关系。

编者按:51CTO记者在International ArchSummit架构师峰会上,针对一淘的搜索引擎技术对一淘网架构师曲琳的采访,谈谈一些搜索引擎的技术与研发的协调与合作关系。

[[92946]]

曲琳,一淘网架构师,主要在一淘网负责搜索引擎技术。

1、 首先,能简单的介绍一下自己么?

我是08年浙大毕业的博士生,毕业之后我就去了alibaba,当时是在B2B搜索中心在做alibaba中文站和国际站的搜索后台,之后又到了阿里云,又到了淘宝,而现在是在一淘。而整个过程里都是在搜索这个领域上,垂直搜索这一块做引擎开发工作。大概的背景就是这样。

1) 你大学是学什么专业的?

我不是计算机专业的,我是学电子信息技术及仪器,应该是属于近计算机专业吧。我博士研究方向是挖掘相关的,是智能监控方向。其实具体在学校做的事情是嵌入系统这些,偏嵌入系统的软件。当然我们这个方向是有硬件有软件的,所以这个背景会对硬件更加的了解一些。

2)当时学的东西和你后来做的搜索你觉得关系大吗?

你如果说领域的话其实是相差蛮大的,当然也略有些联系,在相关性方面,其实都会用到一些数据挖掘方法。但是在引擎平台上讲具体的领域其实是有很大偏差的,当然在这个软件设计或者是开发这个角度其实它的基础背景都是差不多的。刚开始来Alibaba的时候是有些挑战的,一个全新的领域需重头学习。

3)您一开始加入Alibaba的时候,是有资深的工程师带您么?

Alibaba这个文化,就是你去这个公司会有个师兄,然后他会在不仅仅是你工作上的,包括你生活上一有困难的时候都可以跟他商量。我们叫他Buddy也好,更多的是一种平等的方式,你可以直接的交流。他并不是你的直接领导,你的主管可能是另外一个人。这个Buddy可能是会稍微在公司呆过一段时间的,对公司比较熟悉了解的,这样一个相对比较资深的人。在这个过程当中来带领你,所以你的工作在他的帮助下一点一点的开展起来。

2、 一淘网的搜索技术部主要承担了哪些职责?

现在在一淘的搜索技术部其实是承担除了阿里云之外的整个Alibaba集团的搜索业务,都在一淘搜索,包括淘宝的主搜索,还有一淘本身的搜索,还有Alibaba B2B的中文站、国际站、速卖通,所有搜索后台都是在一淘搜索这个部门,都是由我们来支持的。

1)那往其他部门部署也是由你们来支持吗?

其实并不是这样的,这个我们可能会说在那边的业务,在一个具体应用上的业务就是由我们这边的人来负责的,并不是那边部门由具体的人来负责我们给他提供代码不是这样的。我们直接是提供服务的,包括引擎的运维,从开发到最终上线,到业务需求的满足都是在一淘搜索的。

2)相当于他们是你们的客户,他们说我们要搜索服务,然后你们提供给他们?

我们是以服务化形式来支持各个部门,支持各应用业务。

3、 工程师们跟业务部门是如何协作的?

一般来说直接跟工程师打交道的是产品部门,当然也会有些运营部门来提需求,我们针对每个需求方都会有专门的技术的接口,那可能在具体的开发过程当中会有个项目经理这样的角色,可能是从技术团队当中出这么个角色来协调这个整个的开发过程,还有需求的沟通都会有这样的一个角色来承担,来协调。那么我们可能对每一个具体的业务建议会有专门的团队来支持,比如说我,其实是负责一淘的搜索后台,那么我们会有另外的一些小团队负责淘宝主搜索的,针对每一个具体的应用都会这个业务需求的定制,还会有这种针对业务的性能优化,还有引擎的部署,调优,甚至会有些非搜索的这个服务。其实搜索引擎并不仅仅是这个核而已,你为了提供完整的服务,可能还会有些key-value的东西,或者是有一些在线计算实时计算的一些服务,还会有一些离线的,数据挖掘的,算法相关的,还可能会有些比如索引build,数据的抓取,或者是dump,这个一整套的工作都会有针对业务的定制。

4、 那其实像你刚刚说这个协调产品和技术双方的角色是不是对两边都非常熟悉?

对。一般来说你要协调这个项目的话你首先要有非常多的这个项目经验,另外一方面你得对整个技术的上下游,其实这个搜索的战线是蛮长的,从后到前经历的各个角色很多,首先你得有这个经验你得了解整条线的这个情况,这样的话你才能在各各技术方案当中选择一个比较合理的。这里可能还不涉及到架构的问题,在做具体的业务需求更多的是怎么样把这个流程看起来能够选择一个方案来实现需求。另一方面你也得了解业务,不仅仅要了解技术,可能你要从具体的项目当中了解整个产品的一个规划,甚至对用户的体验你要有感觉,怎么样做才是更合理的方向,或者在这个需求的tradeoff时候你得找到一个比较合适的度,不能一味的满足这个产品的想法,跟这个技术实现的难度当中要做些折中的,这里面其实对项目接口那个角色的要求是蛮高的。

1)一般在Alibaba做到这样的能力需要大概3-5年?

其实更多的可能是通过时间的锻炼和更了解一些,一般说有2年左右丰富经验的人才能去胜任这样的角色。与你所做的这个岗位也有关系,可能引擎的同学对这个流程比较熟悉一些,因为他们属在整个流程的中心。偏前端的同学可能在做这种用户界面定制,用户体验相关的这种需求,他会更有经验一些。 

2)那么运维和研发直接是怎么合作的?

其实在alibaba技术保障这个团队是非常强大的,在alibaba这个规模的服务器很多,一定要是有一个统一的管理的,不可能是把机器交给各各应用方去管理,这个也没办法去处理,首先在整个基础的设施上,比如说机房,服务器,基础网络,服务器的监控,就是基础的硬件维护上面都是有专门的团队去做的。Alibaba技术保障部来负责这件事情,技术的运维平台他们会保障。其实针对具体的应用需求的话,比如说搜索的这种运维特性跟存储的特性和偏服务的需求没差别的,这是与你具体的应用有关的。

比如说搜索可能它会因为数据访问的特性,可能会有中间的角色,这个角色它的流量会很大,并不是平均访问的。那么在这种情况下对服务器的要求就会有不同,他不会用同个服务器来统一解决这个问题。就可能在这些方面你可能要针对应用特性还做一些针对网络或者针对服务器甚至针对交换机的这种定制,或者是做出这种配置,或者说在这个应用层上这种应用服务的管理,这个可能就要跟开发密切的结合,因为你必须要了解这个服务是怎么用的,才能把它运维好。所以这个角色可能就会更加偏向于应用,我们叫它PE,这个PE的团队更多的是跟开发团队有密切的联系,甚至会给开发团队提需求,这叫可运维性的需求。其实在公司发展到一定规模的时候,或者说应用发展到一定规模的时候,可运维性一定是你软件设置当中必须考虑的一个问题。

像这次的大会,你仔细去看你会发现所谓的这种大数据,或者是搜索规模问题,其实大家都在解一个问题,就是这个可运维性的问题。就是你怎么把一个运算用分布式架构来解决。分布式架构是什么?首先是怎么拆分数据,然后可用性的问题和扩展性的问题,不可避免的一个问题是机器的损害,故障恢复问题,这其实就是分布设计最基础的问题。它的根源其实就是来自于可运维性的,在结合运载做的一些改动都是跟开发人员密切相关的。

在我们这个一淘的搜索上其实我们开发和运维是有一个很密切的联系的。甚至有些开发人员他会去运维做领导,这个其实是对我们开发人员来说也是一个基本的要求,安排你去运维这个岗位上做半年到一年,让你了解线上系统是怎么去运维的,只有你在真正的去做过以后你才能在软件设计或架构设计的时候才知道什么事真正可运维的,而不是说你只是做个简单的程序,要后面套一个很复杂的运维脚本去来给你做这种可运维性的事情,而是这种可运维性是嵌入到你系统核心的设计当中,这个是我们在一淘的搜索当中的一个做法,这个应该也是目前各大公司的一个方向吧。

3)像是在你们的部门,我是一个新进来的研发,那么我有哪些发展路线可以选择?

其实这个也有些区别,比如说一个应届的同学刚到我们团队的话在淘宝首先是一个淘宝文化的培训,大概有一周到两周的时间,这个可能相对的比较泛一些,包括公司的一些文化等等,可能不会涉及到一些技术。应该说不管什么岗位,甚至非技术的都一样参加这个培训的。这个培训之后会有个技术大学的课程,技术同学会有两周的时间把整个(不仅仅是搜索)淘宝的技术体系,比如说信息存储,比如主站相对应的服务,应该是最基础的吧,大概这些是怎么做的都会给你个介绍。然后在这段培训之后,你可以回到部门,在部门里面也会有培训计划,比如针对搜索的话我们会有搜索的这些入门的东西,不是所有人都了解搜索这个领域嘛,然后还好针对我们所用的一些技术,比如说我们弄个C++,或者说我们在这个版本管理上的一些具体的工具,甚至开发工具上我们都会有一些培训,这个是在我们这个部门的平面上。

在你具体工作的时候我们会有师兄他会从你的工作一点一点的带你做起来。可能在我们这应届生刚来的时候,其实大家方向都不太明确,那么可能会是你的主管或者你的分配工作,从一个具体的事情做起。然后可能先把各各领域方面的事情都做些尝试,再有一个比较广度的积累之后,你就可以从你做的事情当中寻找一个可以深入做下去的点。当然可能你能做的事情很多,可以偏向应用,针对应用做一些需求相关的工作,也可以针对引擎性能相关的,这种地位都是存在的。可能后面会根椐这种具体的需求和情况来结合你自己的兴趣来找到你这个可以深入做下去的点。大概我们的新人过程就是这样的,整个过程有个半年左右吧,实话说搜索这个领域从入门到精通需要蛮长时间的。

4)那如果说成长目标是架构师呢?

其实架构师的这个title是一个比较虚的title,我相信在互联网行业不会有一个很明确的职位或者title去叫架构师。当然也可能会有一些公司有这种title,但是在淘宝大家都是属于工程师,可能你所做的事情会覆盖到一部分架构的工作,或多或少的,但不是说在淘宝并没有这样一个角色说他就不编码或者说不去负责具体的模块设计或者他只是负责高层架构的很少。几乎没有这种,主要原因是在于这个领域变化太快了,你经验消退的速度会非常的快,你必须要在具体的需求和具体的工作当中去寻找这样架构的机会,而不是说自上而下的普通的这种架构,不现实。在我们一淘搜索可能更多的还是说工程师这个等级。就是说你在这个工程师这个领域上的,或者这条线上你做的有多深。这个可能更多的是你经验的积累,可能还会有架构的经验。当然最重要的还是说你在开发上的积累,或者说在产品上的一些灵感。

责任编辑:林师授 来源: 51CTO
相关推荐

2012-08-29 08:47:22

开发技术周刊

2011-06-20 18:23:06

SEO

2009-02-19 09:41:36

搜索引擎搜狐百度

2009-09-22 16:23:52

搜索引擎

2011-07-01 15:51:20

SEO

2020-03-20 10:14:49

搜索引擎倒排索引

2017-08-07 08:15:31

搜索引擎倒排

2016-12-26 13:41:19

大数据搜索引擎工作原理

2011-07-21 16:32:07

SEO

2010-04-20 11:43:46

2010-06-13 16:27:28

搜索引擎

2011-06-23 14:48:52

网站更新频率搜索引擎

2012-09-07 13:22:21

搜索搜狗

2022-10-08 09:13:18

搜索引擎⽹站

2010-08-02 16:08:39

ibmdwJava搜索引擎

2011-06-22 17:28:51

SEO

2020-08-10 14:39:30

搜索引擎

2012-05-14 11:01:50

搜索引擎微软

2011-06-15 19:09:24

搜索引擎

2011-06-19 09:15:25

搜索引擎
点赞
收藏

51CTO技术栈公众号