专栏名称: 待字闺中
深度分析大数据、深度学习、人工智能等技术,切中实际应用场景,为大家授业解惑。间或,也会介绍国内外相关领域有趣的面试题。
目录
相关文章推荐
超前一步午后一股  ·  最新 ||华*为Mate ... ·  3 天前  
程序员小灰  ·  大A股,教我做人 ·  4 天前  
中国上海司法智库  ·  第148期丨高端人才隐蔽竞业法律问题研究 ·  6 天前  
中国上海司法智库  ·  第148期丨高端人才隐蔽竞业法律问题研究 ·  6 天前  
51好读  ›  专栏  ›  待字闺中

创业公司的技术选型答疑(续)

待字闺中  · 公众号  · 程序员 科技自媒体  · 2016-10-01 00:18

正文

作者简介:陈辉,曾任职 Google、阿里巴巴、Facebook,现任杭州映兔科技 CTO,创业中。欢迎广大的读者给“待字闺中”投稿,精神鼓励大大的。


感谢大家对我们的关注,回答一下大家对上篇文章《谈谈创业公司的技术选型》的疑问。


1、关于两周“重写” ES


严格来说不是重写,我们也没有打算实现 ES 所有的功能,而是要实现比 ES 更好的(我们需要的)功能。


我们基于 wukong 搜索引擎做的分布式搜索系统,wukong 是我之前写的一个搜索核心库:github.com/huichen/wukong。里面已经实现了倒排索引、分词、相关度计算、自定义排序规则等功能,然后我们的一位工程师在两个星期实现了分布式搜索和基于消息队列和 gRPC 的实时增删改查功能,第一版的架构大概是这样的 



这个架构从性能和易用性上完全不输于 elasticsearch,而且无缝融合进了我们的 kubernetes 业务系统;另外,因为每一行代码都是我们自己写的,所以可扩展性极高。


搜索引擎并没有想象的那么难写。


2、两周重写 fir.im,leancloud


相比搜索引擎,这些都是小儿科了。


关于 fir.im 替代:我们的 darwin 项目用 go 实现了一个 iOS/Android 的预发环境集成测试服务并和 jenkins/fastlane 无缝对接,只要 github 有推送就会自动重新打包,上传到 darwin 并在 bearychat 通知大家下载。


我们最开始用 leancloud 的 IM 功能,发现经常丢失消息,后来用我们自己写的 go IM 服务器 + iOS/Android SDK 替换了。之后再也没有出现大的问题,而且因为所有的消息传输环节对我们都是透明的,相比于市场上其他的 IM 服务,这允许我们在消息传输过程中做各种融合和分析。事实上,基于人工智能的 IM 是我们规划的一部分,这部分只能自己完全掌握。


3、关于造轮子


开始的时候我们是被迫自己造轮子,后来体会到造轮子的好处,发现造轮子才是最省时间的。


相比于花无用功琢磨怎么更有效对接一个看不到源码的服务,或是提一些几个星期之后才能解决的工单,我们发现自己重写对长期来说更节省人力维护成本,这有点儿类似“写个脚本”的意思,写个脚本短期来看是浪费时间的,但长期效率更高。同时大家花了两个星期重写了一个关键服务后,发现其实收费的服务还不如我们写的,极大增强了自信,也锻炼了团队能力。


但我不是鼓励所有轮子都自己造,比如数据库和消息队列,因为他们还没出过什么问题。


4、选择什么编程语言


这个基本和公司刚刚建立时的技术 leader 有很大关系,有一个笑话我觉得很中肯:


“如何在你的公司推广 XXX 语言:首先,成为你公司的 CTO;然后行政命令让所有人用 XXX”


从我用过的语言来看,Go 是我现在“如果要写一个项目那一定要这个语言吧”的选择,而且在我们的创业团队环境经受了考验,如果你一样也是一个初创团队 leader,那么非常推荐你了解一下 Go。


无意挑起编程语言的圣战,就写这些吧。


5、“除了那种门槛特别高的start up,不都是游击队写第一版,做大了砸钱找专家.”


我只能说,用外包的心态建技术团队,只能得到外包的产品质量。作为一个有追求的技术人,不幸进到这种公司,赶紧闪人吧。


6、“精英化小团队技术选型确实能更多尝试新技术,但是团队快速发展时技术选型太过小众,如何快速招到合适的人加入团队快速上手工作会成为一个头痛问题”


创业团队如何招人确实是个大问题,我有时间专门开一篇讨论这个问题。


我想说的是,不应该以静态的眼光看人才,你招到一个人不是让他只会用他以前习惯用的技术就可以了,相反要特别留心哪些只会选择大众技术的工程师,这些人的能力已经捆绑在了一类工具上,对团队长期的发展是不利的。


我们在《谈谈创业公司的技术选型》文中选择的多数技术并不特别小众,有些在创业圈已经非常流行,而且这些技术栈的设计多数很自然,有一定学习能力的工程师可以很快上手。


另外,从动态的人才成长的角度,好的团队往往是自我驱动学习能力强的团队,而使用新技术对这种能力是非常好的锻炼。要看到对人才长期的培养,而不只是仅限满足于眼下的业务需求。


相比很多国内互联网公司的 KPI 考核体系,我们使用 OKR 做团队项目管理。我们认为 OKR 比 KPI 更适合技术团队,有时间开文章谈谈。


7、“日志用fluentd抽出来放到哪里索引了?grafana中展示的时间序列是存放在influxdb吗?”


我们的数据分析有两类,离线和在线。


离线数据主要是 fluentd 从 log 中提取出来后直接发送到阿里云的 ODPS,然后写定时调度生成表格分析。另外,数据库数据也通过 datax 发到 ODPS,可以和 log joining 处理。


在线数据走 /metrics 然后 prometheus 爬取,grafana 中展示分析,没走 influxdb。


我们这套离线数据体系适合每日报表或者即席查询,在线数据体系适合服务报警、调试等日常任务。


----- The End -----


大家可能还感兴趣:



谢谢。