之所以采访李哲,可能很大的原因是因为他是一个“不安分”的开发者吧。从一家知名的国企离开,在当时看来是需要不少勇气的。第一次接触到他,是看到他在RubyChina大会上的演讲,用他自己的话来说,“我不是什么大牛,就喜欢学习一点跟Ruby相关的东西。”据了解,他现在负责研发的云端性能监控产品,原本跟他并没有半毛钱的关系,顶着无数的质疑,他从零开始,最后用实力证明了他足以担任该产品的负责人。就在不久前,李哲还拿到了OneAPM公司的第一个研发大奖,近期笔者采访了Cloud Insight产品的开发负责人李哲。
CSDN:首先简单介绍一下,这些年的从业经历?
李哲: 大家好,我叫李哲,目前在OneAPM负责Ruby探针和Cloud Insight的开发工作。其实,我大学毕业后就很“幸运”地进入了一家民航的下属单位,因为当时自己也希望能选择一个稳定的、高收入的行业。最开始的时候,主要从事和民航相关的各种软件系统的开发工作,后来又加入了一家电科院下属的单位,从事电力GIS系统的相关开发工作,然后做了很多Ruby相关的开发工作。
其实,也是很偶然的一次机会,让我接触到一位法国的创业者,当时他们团队使用Ruby做为主要的开发语言,并且使用了Heroku做为部署平台,还有一些其他的很新的技术。第一次接触到这些创业者时,他们的精神状态和做事态度给我很大的震撼,对我的影响也很大,于是我下定决心,马上从“围城”中走了出来,去看看外面的精彩的世界。当初几乎没有太多的考虑就选择加入他们,离开了那个可能让很多人都“羡慕”职位。之后我就不断和互联网的创业者们打成一片,不断挑战自我,突破自我,总的来说,一切都是敏捷、快速。
其实,加入OneAPM也是因为这点,很多人都知道,OneAPM的发展是非常快速的,一年多的时间就完成了3轮融资,从最初的40多人“游击队”一下子就扩充到400多人的大企业。但是对我们团队而言,一切都是刚刚开始,前方的路还很长。
CSDN:其实,在国企上班的确很稳定,也让很多人羡慕,离开后加入创业公司,有什么感觉?
李哲: 其实,最初离开的时候,或许有一点点冲动的成分,但是现在看来,我很感谢当时的自己做了这个决定。我个人感觉国企对计算机或者说互联网这些新技术是非常保守的,虽然外面已经做的“如火如荼”了,但是对很多国企而言,他们对此并没有太大的反应。当然,这不是说所有。据我了解的真实情况,国企里有很多有本事的个人,但是受整体氛围影响,他们无法发挥出自己的才能。
可能我有点不安分吧,我也喜欢研究各种各样的技术。在我看来,创业公司才是各种技术的用武之地,不会被局限,而且创业团队也鼓励试错,鼓励创新,鼓励头脑风暴,所以我个人也希望那些有想法的同学,可以去创业公司去锻炼一下自己。人生总需要不断尝试新鲜的东西,或者说“多折腾”吧,但不要“瞎折腾”!
CSDN:当初因何原因接触到 Ruby,您个人感觉,这门语言给您带来最大的影响是什么?
李哲: 我接触Ruby很早,应该是大四的时候。当时我在图书馆看到一本敏捷开发相关的书,现在回忆起来,那应该是Rails开始火的第一年,当时我对Ruby了解的比较少,因为整个计算机专业就是Java、C++和NET的“天下”,在我眼中,它就是一个很偏门的语言而已,所以我跟Ruby并不是“一见钟情”。直到有一次我想要动态生成一些代码的时候,起初我使用 Groovy,但总感觉不是足够好。这时突然想起了 Ruby,然后我使用 Ruby完成了自己想要的功能,此时,我才真正体会到Ruby语言的优美。
就如同松本行弘所说的那样,Ruby想要解决问题,想要让程序员变的快乐一点。因为写程序不应该是很痛苦的。可是,这样说又太过抽象。就我个人而言,我可能会说,如果使用了Ruby,就不太会再想用其他的语言了,因为我只是一个很普通的程序员。可是对于那些已经掌握了多门语言的同学来说,这样的说法是完全不成立的,也许大家听到后都是会心一笑,就像“PHP才是世界上最好的语言”这个段子一样。
其实,我很感谢Ruby这门语言,因为它让我认清了一个事实,技术是为产品服务的。如果它需要孤立的存在,那也只能在大学,在研究院,或者在某些极客的脑海里。据我所知,大部分的人都只是用一种编程语言来完成一个软件系统,如果这个编程语言或者基于之上的框架能让我们的工作变得简单、快乐,那么这实在是一件太棒的事了!
在我看来,而Ruby和Rails就是这样的东西。最近两三年,“去Rails”的说法越来越多,我自己也表示同意,用一些很轻的框架来解决问题,用微服务的理念去架构,在这种情况下用Ruby的DSL来描述这些场景,我想应该是非常适合的。
除此之外,我也很想在这里提一下Ruby社区,因为Ruby社区让我非常震撼,大家非常团结,无论组织活动也好,搭建社区论坛也好,彼此之间的沟通都非常通畅,而且,使用Ruby语言的同学,一般都会使用不同的几种技术,然后对各种技术也持非常开放的态度。Ruby带给的我真的是很多很多,太多了!感谢Ruby,由衷的感谢!
CSDN:您现在是 Cloud Insight 产品研发的负责人,请简单介绍一下这款产品?另外,Cloud Insight 在 OneAPM 的产品线中处于什么地位?
李哲: 终于可以加点广告了!简单地说,Cloud Insight 就是一款系统监控工具,能够监控操作系统、数据库、中间件的运行情况,进行可视化展示,并根据指标产生报警;于此同时也是一个适合运维工程师,协作与沟通的工具。大概讲一下原理的话,Cloud Insight 采用 StatsD 的采集技术,通过对 StatsD 的生态环境的研究,整合不同的工具为用户提供一体化解决方案。
至于在 OneAPM 产品线中的地位,这应该是公司老大来定的,我就不发表太多的意见了。我觉得每个产品线应该各有侧重吧,比如 Application Insight侧重应用性能,Browser Insight侧重前端用户体验,Mobile Insight侧重移动端,而我们Cloud Insight 就是好好地做系统监控,认真地做系统监控,做产品我们是很认真的。当然,后期 Cloud Insight会 在现有功能上,集成一些我们公司其他产品的数据。进行一体化的展示,打造一个真正强大、易用的数据管理平台,因为Cloud Insight中就有“云”,所以我们想帮国内的云计算用户做好监控,这也是我们产品的核心价值所在,好了,广告结束!感谢大家的收听!
CSDN:正如您所言,这款产品和思路和国外StatsD 的理念很像,那么你怎么看待开源产品?
李哲: 总的来讲,使用 Ganglia、Zabbix 和 Nagios 非常依赖运维工程师的实际水平,同时还要依赖像Docker、Mesos 这些新技术的支持。他们还需要自己去安装脚本来进行试验,从这个层面而言,过程非常的复杂,技术挑战也很高,总是会遇到不少麻烦。还有一点,就是这些监控产品的数据是只读的,运维工程师真的就只是看看而已,饱个眼福,就算出了啥问题,最终的解决方案,可能还是“小学生”都能搞定的那个“重启”按钮,有时候,运维工程师还需要从腾讯云倒换了阿里云(这样说,不知道腾讯的同学会不会生气),任何细节出了问题,其后果就是要直面老板“无尽的咆哮”,还有没日没夜的加班。
而Cloud Insight的优势就体现在我们采集到的指标很全面,并且能够对数据进行聚合与分组,提供多种可视化展示;还有,我们的安装部署很简单,只需要一条命令就可以搞定。相对比起其他开源监控产品而言,最大的特点应该就是,学习成本低太多了。当然,开源产品也很强大,我们也正在不断学习他们的强大之处,用于武装自身的力量。而且,从我个人而言,我也鼓励大家多多使用开源的产品,无论是从个人成长,还是职业发展上而言,多接触开源工具,多使用开源产品对开发者的成长来说,都是必不可少的。
CSDN:据我们了解,这款云端的监控产品和 Ruby 并没有特别大的关系吧,你为什么会选择做一个完全陌生的领域?
李哲: 其实,我最初在OneAPM是负责Ruby探针的开发,这是另一个产品的项目。我也很感谢OneAPM,还有我们的创始人何晓阳,我想很多人也知道《何晓阳读书笔记》,因为晓阳的视野很宽,所以他经常在公司内部推动各种自动化的实践活动,我也算是这个活动的受益者之一。
在我进入公司之前,Cloud Insight产品就已经在内部实验过,虽然没有做的很成功,但是公司一直没有放弃。OneAPM是一家非常重视研发的公司,然后在一次内部讨论的时候,我提出了一个看法:像Cloud Insight这样的产品,因为本身过于复杂(很多人认为它并不复杂,原因在于这个产品本身把“复杂”隐藏在背后,面向用户的一面其实是非常简单的),很难一次性研究透彻。所以,我建议是不是可以先采取一种相对简单的方案,然后从简单方案培养出这个产品。
这件事,其实就是我根据以往开发产品的感觉,提出了自己的一点意见而已。后来,完全没有想到,公司会把这重任放在我的身上,对我来言,我可能更享受安静的坐在一个小小的角落,去敲击几段代码。反正就是“硬着头皮上”吧,在Cloud Insight正式启动之后,我用了自己心仪已久的React来写界面,然后也去研究各种时间序列数据库,可以说从最前端到后端都在学都在做。当然目前对后端参与度还是比较低的,因为对这块此前完全不熟悉,直到现在我还是在慢慢的了解和学习中。借用鲁迅先生的话来总结一下,“其实地上本没有路,走的人多了也便成了路。”
CSDN:之前OneAPM 的工程师分享过很多篇跟 Docker 监控相关的文章,然后 Docker 现在这么火爆,请谈谈 Cloud Insight 跟 Docker 的关系?
李哲: 其实,我们跟Docker的关系非常密切,我们不仅仅在监控Docker,而且OneAPM内部,就大量的采用了Docker来做各种测试工作。比如我们为了测试Ai产品,利用Docker快速搭建各种环境,来模拟用户的复杂调用拓扑;我们本地的测试环境也都是基于Docker搭建的,可以同时部署几个分支,并接合其他的自动化工具,QA的同事可以一次测试几个分支内的功能,非常的方便。我们也在尝试利用Docker快速部署Cloud Insight的整个环境,方便大客户使用我们的产品。
另外, Docker近几年来越来越火,因此也有很多产品试图对 Docker 进行监控。Docker 监控相比其他的数据库、系统、中间件监控,要复杂一些。由于需要表征不同 Container 的性能消耗,来了解不同应用的运行情况,所以数据的聚合、切片(分组)和过滤,在 Docker 监控中成为了必备功能。所以我们 Cloud Insight 在监控 Docker 时使用了时间序列数据库的逻辑。
当然,除了Docker本身,我们还支持Mesos,后期还会加上CoreOS,总之容器以及与之相关的各种技术都是我们产品里需要支持的,因为容器是大势所趋,在未来的一年到两年,容器应该会普及到每个开发者的工具集中。如果线上应用了Docker做为部署的基础设施的话,监控这件事就变的尤其重要了,Docker加上微服务的架构,是非常考验对每一个节点的可用性及性能的监控的,这是解决系统中瓶颈或者问题的关键所在,Cloud Insight对解决这种关联性问题的场景是非常适用的。看看上面Cloud Insight的截图,你能了解我们测试环境中的Docker运行的情况,非常的直观。
CSDN:平时除了开发编程之外,有没有什么其他的兴趣爱好?
李哲: 喜欢看电影吧,也常在Pinterest上看各种设计和绘画作品。真实的情况是,我人比较懒,除了敲代码之外,貌似也没有其他的爱好了,应该算是一个比较乏味的人吧!
CSDN:目前除了 Ruby 之外,对其他的编程语言是否有所涉猎?
李哲: 我应该算是一个精通各种“hello world”的程序员吧!的确看过很多东西,但真正用到的也就是Java、Ruby、Node.js、Groovy这些。其他都是学着玩的,比如Rust、Scala、Clojure等等。虽然我是一个后端程序员,但是我对Html和CSS也非常喜欢,不过大家最好不要问我相关的问题哈,虽然我知道怎么用,但是说不上来为什么。
CSDN:如果让你再选择一门语言学习,你会选择谁?为什么?
李哲: 我会选Clojure,想象力无穷!也有好的JVM作为基础,但是用好这门语言,或者说lisp的人真的是太少了,导致真正能用这门语言来作为公司的主要技术栈的公司太少了,甚至都可以忽略不计了。以后在开发Cloud Insight的部分功能中,我准备会考虑使用Clojure,让它真正发挥作用。当然我也会征求整个团队的意见,不然他们会“干掉”我的!
CSDN:如果上天再给你一次选择的机会,你还会做开发这份工作吗?
李哲: 很显然会的,而且我从来没有认为做程序员很“苦逼”。一门好用的语言,一个好用的编辑器,再加上一些好用的方法,其实我每天的生活还是很有趣的!当然像我说的好用,可能说起来简单,实际上却很难。我也想多跟大家进行交流,发现那些已经存在很久的,还不为人知的工具和方法,还是那句话,“多学习,多折腾吧!”