微博研发团队一直在背后默默“打怪升级”,这是很不容易的。架构升级成本高额巨大,在这背后是艰难的选择。时间和资源有限,每次重大架构改造都要慎重抉择,这其中就有很多不为人知的故事。
微博架构升级的成本考量
在2到3年只能进行一项重大架构改造,这是很局限的情况。微博研发团队必须考虑选择的架构改造要有独特性。比如要具备技术领先性和扇出效应。每个被选中的架构改造方向都得放弃其他可能性,这需要承担很多风险,就像一场豪赌,投入巨大并且有损失其他机会的风险。现实中很多企业在成本考量上一旦失误,就可能走向失败。
在微博特定的架构改造中,不同因素的权衡也是关键。像对某些功能的舍弃或者加强都要依据成本以及可能带来的效益。例如在旧的架构改造时,会考虑当前业务的需求、后续业务的发展以及现有的技术储备等。如果不考虑成本和效益的平衡,很容易造成资源的浪费或者业务发展受限。
微博围绕极端热点场景建设
微博场景具有独特性,“极端热点”就是典型场景。研发团队很多建设是围绕这个来的,像Web自动化扩缩容和数据库自动化扩缩容。这是微博根据自身特色做出的明智决策。2020年,微博因为独特建设方向在技术能力上有了大突破,例如终于有了全站范围低成本做异地多活的技术能力。
在这个场景下实现持续领先并非易事。需要不断投入人力和物力等资源。例如相关研发人员要长时间研究如何让技术适应这个场景,不断进行技术的调试等。而且要在这个场景下不断创新技术难度也是不小的,要考虑到极端热点可能带来的流量激增等突发情况。
微博老服务老资源的维护挑战
微博经过十多年迭代,业务线多且新老服务都有。老服务和老资源的维护改造成为一大难题。比如老服务可能适用的旧技术效率较低,在新需求下可能产生很多问题。并且维护成本也会随着时间不断增加。
从维护人员的角度来说,要面对众多不同的老资源和服务,知识储备要很全面。比如要同时掌握针对不同服务构建时使用的技术等。在资源有限的情况下,如何分配资源到各个老服务老资源的维护上也是一个让人头疼的问题。
C++在微博的发展情况
微博核心系统用Java,但随着广告推荐发展,C++架构应用场景增多。不过其技术体系完备性却难以满足业务需求。像是因为其建设时间短且研发团队分散等原因。例如在建设新推荐功能时,C++体系下可能会面临技术构建不完善的情况,导致功能实现受阻。
这种情况会影响业务的进一步拓展。例如可能导致广告推荐不能及时跟上市场需求的变化。而且在后续发展中,如果不能很好的完善C++技术体系,还可能面临被其他替代技术抢占市场份额的风险。
微博的新技术抉择历程
微博2015年做Docker编排技术选型时就有很多考量。当时运维习惯用IP方式管理调度资源,就放弃Swarm,也没选火爆的K8s。这一放弃就影响了后续发展。直到2020年对高配服务器进行资源切割调度时才转用K8s,才让Docker在微博落地广泛使用。
不同时期微博的技术抉择差异是有多种因素影响的。就像2015年可能当时内部习惯主导决策,而2020年是看到市场需求和新的业务要求才做改变。这也反映了一个企业的技术发展是逐步探索的过程。
微博新时代的研发方向
如今微博有规模架构师团队,体系相对健全,重点变成抢占新技术制高点。研发团队会跟踪新技术,进行终局预判。比如对新的算法、架构的关注。还会根据业务线需求修正研发规划。
同时在面对云厂商未覆盖等场景时,会借鉴成熟方案。这是很务实的做法。比如当面临新的隐私服务需求时,如果云厂商不覆盖且自己技术路线也还未涉及,就借鉴外界的成熟做法,以便把精力集中在自身技术发展的重点方面。
最后想问一下,你觉得微博在未来还会出现哪些新的架构改造需求?希望大家点赞、分享,也欢迎在评论区讨论。