第一次来到创新工场这个孵化创意的摇篮并不是为了参观,而是来倾听创业者们的经验分享。成立于2011年的七牛云存储作为一个初创公司在这样的时间这样的地点讲述着它们的创造与成长。
在创新工场技术交流并不少见,所以这里也有着良好的分享机制,其可以线上线下全渠道覆盖创新工场的所有人,此次七牛受邀带来的技术分享自然也引来其中不少的创业团队的围观。虽然七牛云存储的业务从公司名称上就可以一目了然,但分享的议题则更为细化,从团队的研发管理到在线服务的数值化运维,再到对Bug的解决方案,这些都是七牛作为创业者经历过并坚持做着的事情。
团队管理对于创业者的重要性毋庸置疑,而作为技术服务性企业研发管理更是重中之重。七牛云存储CEO许式伟认为,研发管理的目标是要做对的事,并且加速产品的演进速率来提高产能,最后则需要不断改善产品的品质以保证质量。
“创业者需要知道自己在做什么,以及公司的核心价值。”许式伟表示,企业需要找到核心竞争力,并把精力集中在上面。
七牛云存储的运作理念是“轻运营”,将非核心竞争力的相关工作尽量外包,但这指的只是将服务外包,即云服务,技术则由自身研发。因为服务外包只对结果负责,而技术外包通常伴随着较大的隐性成本,这也体现了许式伟的另一个观点“借力打力”,尽量降低时间成本。
高效的开发则依赖于优秀的架构、任务的并行、合适的工具三方面。“决定一个模块能够走多远的是架构,甚至可以把他比喻成地基,而架构师在研发团队中更是至关重要,他的角色就向导演一样。”许式伟说道。
另外则需要多模块的并行,及早稳定瓶颈模块(多个模块都依赖的业务模块),七牛在早期就找到自己的瓶颈模块WebServiceAPI,并且优先考虑github服务,并不是自建git服务器。
最后就是保证代码的质量,所有的代码都至少经过一次CodeReview,七牛建议先做PeerReview(同事间相互审查),再做FormalReview(正是审查)。之后进行单元测试,发现问题的周期越短,就会越降低修复成本。
很多开发人员都比较抗拒单元测试,这也是因为架构复杂造成。许式伟表示,可测试性=低耦合=优秀的架构,另外还需要好的工具,不让单元测试成为企业的负担。
七牛云存储CTO韩拓则就在线服务的数值化运维进行了分析,其认为需要收集、跟踪、分析感兴趣的所有数据,建立数据化的KPI形成完整的认知,并且建立反馈机制优化生产的循环。
做好数值化运维可以为企业带来更多优势,像及时发现各种问题和隐患、优化研发过程、加快研发速度,这样就可以正确的指导研发方向和商务行为,为中长期规划提供战略参考。
但开展在线化数据化运维也并不是一件容易的事情,韩拓指出,我们要关心基础设施关键指标、第三方组件指标、业务相关基础指标、详细业务数据。七牛则是对监控系统zabbix、日志、业务服务主动提供、dump数据、第三方评测、用户反馈六个来源来进行跟踪。
对于具体的Bug处理问题,七牛云存储首席架构师李道兵表示定位Bug需要先查看浏览器控制台如果没有错误则用Wireshark截获请求包,发现失败的案例服务端返回412(通常为200),之后对比HTTPRequest,最后用telnet发送不同的请求来验证结论。
定位后就需要看是好Bug还是坏Bug,能再现的Bug是好Bug,如果不能再现,也要拿到对应的网络请求和日志,坏Bug的最大用处则是督促你补充日志。
“我们会看到一些乱象,但在之后我们会不断反省。”李道兵说道,如果这次解决不了Bug,那么就改善你的日志,确保下次Bug出现的时候能解决它。