话费系统、加油站、Qumranet与红帽:一个oVirt开发者的编程人生

在2013年5月8日、9日举办的oVirt研讨会上,InfoQ对红帽工程师Doron Fediuck进行了一次采访。Doron来自以色列,是前Qumranet员工,现在在红帽的一个虚拟化项目中任团队经理。在下面的采访中,Doron会介绍他加入这个项目的过程,以及他对oVirt和其他虚拟化项目的一些看法。

InfoQ:Doron你好!刚才我听了你针对oVirt SLA讲的课程,感觉很有意思。能否先简单的做一个自我介绍?

Doron:当然可以。我在1998年加入IT行业,一开始的工作是在一家名叫Amdocs的以色列公司。这家公司做手机的管理系统,比如手机运营商的计费系统和客户管理系统等。当时我还是个学生,跟着公司的项目也去拜访了不少大公司,了解到不少新鲜事物,包括人们是如何处理大数据的过程。1998年到1999年前后,正是手机产业的革命性阶段,当时的一大挑战在于处理来自交换机的大量信息,包括为每个用户生成每个月的费用单等等。

InfoQ:你是从那时开始了解有关网络和硬件相关的知识的吗?

Doron:我对网络研究的不深,只是知道它是怎么回事而已。当时我主要的工作是在费用单系统这块。我当时是“费用单预备”系统的小组组长,这一块工作涉及很多数学计算,比如每个用户签的是哪个合约,他是在白天还是在晚上打电话,他在哪个国家,那个国家的税率是多少,等等。

后来,公司派我去悉尼建立一个支部。我在那里学到了一些安全相关的知识,因为澳大利亚在政策上要求进行欺诈侦测。在SIM卡出来之前,复制一个手机身份、盗取手机上的信息很容易,所以我们需要对安全方面进行加固。

这样做了一段时间之后,公司希望我往经理的方向发展,但是我当时还很年轻,想多深入行业业务,不想做经理,于是我加入了另一家以色列公司,接触到一些网络和嵌入式系统方面的项目。

我们的第一个项目是针对加油站做的。我的公司有一项专利,就是在汽车里面有一个内置的信用卡。大企业会购买这种设备放到公司的汽车里面去,当员工开着这辆车去加油站的时候,加油的油嘴上有一根天线,能够直接从设备上的信用卡读取数据,进行验证;验证通过之后,油嘴就开始加油,同时油钱会直接从信用卡上扣除,员工无需另外付费。大公司用这种方案的好处在于省钱,因为加油站对大公司是可以提供折扣的。当时做这个项目的时候,我对金融的交易过程、网络协议这方面都研究了很多。这套系统一开始的原型是采用Linux Slackware配合SSD做的。在2001年,SSD还不多见,不过我们拿到的工业PC上配置的就是SSD。原型做出来之后,我们提供给荷兰的一家加油站试用,结果用了两三个星期也没遇到什么问题。

这个项目之后,我进入了另一个完全不同的项目,跟安全相关:PKI、数字签名、加密等等。有一个项目是网络安全相关的,用于进行企业内网的权限管理。比如一个陌生人进入一家公司,拿着网线接入,尝试通过以太网连接,那么他需要获取一个IP。当时的很多企业用的是很简单的DHCP,这样陌生人就可以轻松获得一个IP。即使有些企业关闭了DHCP,这个陌生人仍然可以尝试手动给自己分配静态的IP,最终成功连入企业网络。我们做的系统就是为了防止这种任意接入的问题。这个方案跟后来的802.1x标准要实现的目标是一样的,即NAC。

2008年,我的一个前同事给我打了一个电话,他当时刚加入一家创业公司,公司的名字是Qumranet。他说他们在做虚拟化,需要我过去帮忙。我就跟我的经理打个招呼,请了一个月的假期,去他那里帮他解决一些C++的问题。本来我跟Qumranet只是短期合同的关系,但在这段时间,我之前的公司出了一些问题,面临破产;而在同时,红帽宣布收购了Qumranet。于是在2008年12月1日,我成了一个红帽的员工。

InfoQ:很有意思的经历。你加入红帽之后,做的仍然是虚拟化方面的项目吗?

Doron:是的。Qumranet的人都非常有创造力,而他们在早期折腾的一些东西,后来都逐渐发展成为Spice和oVirt这样的项目和产品。KVM和oVirt实际上是同根而生。从KVM诞生之日起,我们就决定要有一个管理它的系统,因为我们不可能靠脚本实现所有的操作。oVirt就是这样诞生的——只不过一开始叫Solid Ice这个名字。

我在早期的项目之一是将oVirt node和oVirt进行集成。oVirt node相当于虚拟机系统,是宿主机的子集:oVirt node会包含所有相关的软件包,我们要做的是让虚拟机能够跟oVirt node进行交互。之前,我们已经在RHEL上实现了类似的功能,不过oVirt node的情况跟RHEL不太一样,我花了好几个月才把它搞定。

之后的项目是VDSM,我们开始为oVirt存储撰写早期代码。当时我跟Ayal Baron一起做这一块,他现在是oVirt存储项目的经理。

InfoQ:之前在Qumranet的项目都是用.NET编写的,后来全部用Java重写?

Doron:是的。由于Qumranet是初创企业,选择.NET能够非常快速的写出东西来。早期的管理系统都是C#写的。Web部分完成了之后,整个集成没花费多长时间。虽然我是个搞Linux的,对.NET不怎么喜欢,但那种快速开发、快速实现,的确很管用。事实上,当时的一些思路,比如热迁移的实现,如何从管理应用对整个系统进行监控等,后来的OpenStack项目中也有所借鉴。

总之,后来我们按照已经理顺的思路将整个项目用Java重写,操作系统也从Windows迁移到Linux。在这个过程中,有些组件进行了改进,有些还是遗留代码。项目本身总是会有改进的空间。不过跟之前很不同的一点就是,迁移之后——尤其是去年这段时间,我们看到了大量来自社区的参与、贡献。Linux社区的动力非常大。而且,oVirt项目在UI这块,来自社区的贡献很多,因为UI这块只需要搞JavaScript就行,无需修改引擎本身。无论你使用Nagios还是其他什么系统,都可以很轻松的进行集成。最近两三个月,也有不少对oVirt的贡献进入了下游的RHEV产品,我觉得这非常好。

InfoQ:电信领域对SLA的要求是非常高的。你加入红帽之后,感觉这方面最大的区别是什么?

Doron:主要是情景的不同。打一个电话,和管理一台虚拟机,是完全不同的情景,不过有些概念是通用的。两个情景都需要SLA。而且时代不同,同一个领域的情景也会不同。

比如在早期的电信时代,经常会发生一种情况:你打一个电话,打了30秒之后就掉线了;然后你重新拨打,通话了30秒,又掉线了。这是非常糟糕的QoS(服务质量),不过在那时候的以色列,某运营商提供的服务就是这样的。

现在,大家用手机都要上移动网络,我们关注的是我在手机上能下载多少东西,是不是可以直接在线观看视频等等。大家谈论的是手机网络的QoS。

虚拟化领域,虚拟机也有类似的需求。比如存储,现在的共享存储都是基于网络的,所以如果网络不稳定,你的存储也会不稳定甚至失效。另外,如果你的物理CPU过载,你的虚拟机也会很难受。

无论是哪种场景,QoS的本质无非是:我们愿意付出多大代价换取好的体验?所以,我以前在其他领域积累的经验,经常能够在另一个领域看到对应问题的解决思路。

InfoQ:你刚才的演讲中提到oVirt和OpenStack有很多合作和组件共用。红帽内部也有OpenStack的团队。你们是如何分工的?

Doron:oVirt项目内部有不同的小组,每个组专注的方向不同。存储组专注于存储,这个组跟OpenStack的存储组有非常密切的合作,目前在一起做一些Glance方面的集成工作。

网络组也是一样。我的同事Dan Kenigsberg就在网络组,他们也在观察OpenStack的网络组件,寻找可以相互借力的点。第一个oVirt研讨会是由思科主办的,当时的一个分享有关OpenStack的Quantum组件。他们组就研究了Quantum的工作原理,并提出了集成两个项目的PoC(Proof of Concept)。同时,社区中也有人在进行同样方向的工作,比如惠普的工程师就提交了一个蓝图,让OpenStack使用oVirt集群作为计算节点,以及为oVirt创建模板,让Glance可以使用oVirt的镜像模板组建OpenStack环境。

OpenStack和oVirt的受众是不同的,不过双方合作对大家都有好处。我们可以借力Quantum在网络上的成果,Glance可以使用我们的镜像和集群,这样大家都方便很多。我们最近在评估对oVirt任务计划进行重写,也研究了不少Nova任务计划的代码。Nova的很多观点是很好的。如果重写后的实现方式足够贴近,用户很可能能够在两个项目之间复用代码。

InfoQ:oVirt的配置过程很简单吗?要知道,很多人吐槽OpenStack,就是因为它的配置太复杂。

Doron:当然。在Qumranet的时代,我们就在致力于简化这个过程。刚才我提到的oVirt node项目,就是为了让用户能够在两分钟内添加一台新的服务器进入到oVirt配置当中。这个过程非常简单。

从OpenStack本身的角度,它也没什么错,因为我们的受众不同。OpenStack的目标是实现大规模的集群,同时,他们对单点高可用也没什么需求:如果一个VM死掉了,他们可以启动一个新的VM,没什么关系。

oVirt实现的是一个虚拟数据中心。如果我的邮件服务器挂掉了,我需要1分钟内把它搞回来,同时我也不想丢数据。所以我们需要简化操作:自动完成虚拟机系统的安装,保持用户操作方式的一致,改进稳定性,改进UI等。整个UI的Web应用是一个GWT应用,有用户界面和管理员界面。在新版的网络管理界面,你可以使用拖拽来将两个网络接口联合成一个绑定,这都是非常简单直观的操作。

社区里还有人呼吁开发Android和iPad的oVirt客户端。实际上一开始社区里有一个Android客户端,叫做Nomad项目,是一个非常轻量级的App。不过,这个项目很久没更新了,估计是废弃了。但是不管怎么说,我们对这样的项目是非常欢迎的。

oVirt还有VDSM hooks的机制,用户可以通过VDSM hooks扩展自己的oVirt系统。如果用户愿意将自己开发的VDSM hook反馈给社区,可以直接给hooks的RPM提交一个补丁。我们十分欢迎大家参与这方面的工作。

InfoQ:既然oVirt是项目,RHEV是产品,这是否意味着oVirt更多面向工程师,而客户还是直接去购买RHEV的服务比较好?

Doron:这个倒是不一定,因为oVirt社区里有很多成员已经把oVirt作为提供给客户的解决方案。

项目和产品的最大区别就是在于你是否需要靠谱的服务。就算在大企业中,也不是所有的环境都需要服务支持,比如测试环境,你总是可以用Fedora和oVirt来进行测试的。

同时,项目和产品之间也有点轮回的关系,做好事总是有好报。比如RHEV,虽说是直接拿了oVirt项目的成果去运作,但是RHEV使用过程中反馈的bug和针对这些bug的fix,也都会回馈到oVirt项目中。

你可能感兴趣的:(话费系统、加油站、Qumranet与红帽:一个oVirt开发者的编程人生)