创业公司需要基础架构团队吗?[极牛编辑修改版]
关于「真格 · 极牛技术分享」
「真格 · 极牛技术分享」- 极牛为真格基金投资公司打造的定期技术分享交流活动,采用“微信群分享 + 线下沙龙”的方式,分享和讨论新技术优秀应用实践、知名创业项目架构分析、技术工具评测和分析等技术话题。极牛愿与真格基金投资公司一起努力,共同提高中国创业技术含金量,打造一流技术能力。
关于唐福林
雪球首席架构师,前微博技术委员会成员,微博平台架构师;Java 后端程序员,已经不写 PHP,C 和 Pascal 很多年;ACM/ICPC 和 NIO 比赛深度参与者。
技术交流欢迎在微博上关注我 @唐福林
炒股,理财,资产管理,量化交易相关,欢迎在雪球关注我 @唐福林 xueqiu.com/fulin
近期,在极牛举办的「真格 · 极牛技术分享」上,唐福林集中分享了在微博和雪球做架构师和带架构团队的经历,并且对创业公司是否需要基础架构团队这个问题给出了深度解答。以下是唐福林分享文字内容。
1. 基础架构团队到底做些什么
要解答创业公司到底需不需要基础架构团队这个问题,首先我们来来聊一聊基础架构团队的职能是什么。
基础架构团队到底做些什么?
- 为实现业务功能:技术选型,决策
- 为了更好的实现业务功能:引入新技术/做法,提供内部支持
- 解决历史遗留的技术债务:发现问题,找出解决方案,并推动解决
- 业务开发 与 线上运维 中间有很宽的“三不管”地带需要填充,还需要坚实的基础设施支持
架构组工作的特点有哪些?
- 基础架构团队存在的价值是解决非业务逻辑的技术相关问题,没有产品或运营驱动
- 从技术角度看,每个问题都有很多种解决办法
- 这些问题一般都是重要不紧急,短期内不解决也不会崩
- 解决这些问题带来的价值对于非技术人员(特别是老板)不是很直观
2. 基础架构团队是创业公司技术发展的必然产物
在“社会主义初级阶段”,还不需要独立的基础架构组。比如,一开始,1~3 人小团队team leader 自己做决策,出问题 team leader 解决,用啥语言?cache?db?上不上云?这些问题直接导致了团队后续技术力量的升级。
到了Demo阶段,也就是3~5 人小团队,这时候应该有个架构师了,技术问题就会留给架构师解决,比如用啥框架?第三方库怎么选择?
后期发展到上线阶段,大概是5~10 人小团队,可以分组了,每个组都要有一个架构师, 解决的问题就变成相互之间怎么配合?怎么保持公共基础部分的一致性?怎么解决互相依赖问题?
做好了前期的准备工作,到了公司的发展阶段,技术团队变成10~30 人,就应该有专人负责基础架构了,主要负责业务无关的技术基础设施维护,服务化框架以及治理,上线的流程等一系列问题。
如果业务到了爆发阶段,有了30~100 人的团队,就应该设置专门的基础架构团队了,开始负责技术基础设施及服务,提供内部的 PaaS,或者 SaaS等。
最后到了100+人的“高级阶段”–平台阶段,应该设置平台团队了,将公司的主体核心业务功能做成服务,供商业化或创新业务使用。在平台内部设置架构组,提供高附加值的技术支撑,异地多机房部署,大规模虚拟化平台这些宏观上的部署和组建就要开始认真思索了。
3,基础架构能做的再好一点吗?
2012年,我在微博的个人的职责从工程师转变成了架构组的组长,最重要的职责从自己写代码,转变成了“如何创造条件让团队成员更好的写代码”。这一年,微博平台壮大,职责划分逐渐明晰,我开始真正从管理领导层面思考怎么才能让基础架构做的更好一点。
首先是怎么做的问题,最重要的要求是要主动多想,没有外力驱动的时候要自我驱动,提高主动性,寻求目标,进行自我评价, 没有外力驱动,没人外人评价,我们很容易陷入一种自我满足的困境 :看,我做好了,我做的很牛,这回肯定可以评个优,年底多发奖金了吧。
而实际上,大部分时候,我们做的都还不够好。这里的好有两层意思:从技术本身的角度评价,跟周边公司横向比较等等;另外,就是你做的东西有没有真正的完全解决问题,不是从做的人的角度看,而是从碰到问题需要解决的人的角度看,比如业务开发团队是不是觉得好用,是不是觉得这正是他们想要的?
其次在做事的态度上,要力往一处使,因为解决一个技术问题可能有很多种办法,基础架构团队的职责就是找出一种办法,并推行到所有适合的场合,在这个取其精华去其糟粕的过程中一定要见识一起改进,禁止另起炉灶。
做任何事都要讲求方式,做基础架构的方式就是用数据说话,找到合适的评价数据指标,比如写了一个牛B的rpc框架?到底好不好,好在哪里?
另外很重要的是对于选人的要求,要能耐得住寂寞,尤其是在业务爆发式增长时,基础架构团队更需要耐得住寂寞。组建一支牛B的基础架构团队,让业务开发人员跳槽到另外一家公司以后,还会想起你们的好。所有从 Google 出来的人,都会怀念 G 家的内部基础设施。
对创业公司来说,基础架构极其重要,尤其是小的创业团队应尽早安排一个“架构师”的职位,招聘或内部培养一个架构师,如果发现一个架构师忙不过来,那就是时候扩大成一个基础架构团队了。