在当今的服务端开发中,存在巨型应用且耦合严重的问题,这深深困扰着开发者,系统稳定性差,单个业务问题就可能拖垮整个应用,这就像是一颗随时可能引爆的炸弹。而Serverless的出现或许能成为解决问题的关键。
传统巨型应用的问题
服务端的巨型应用中,研发耦合让代码难以分割维护。在某公司曾有这样的情况,一个部门想要优化部分业务逻辑,结果牵一发而动全身。发布耦合使得发布新版本困难重重,每次发布都像是在走钢丝。运维耦合更是让服务器维护变得错综复杂,成本居高不下。这一系列的耦合状况严重威胁着系统的稳定性,导致业务发展受阻。在一些大型电商平台后台,这种现象尤为明显,技术团队常常为此头痛不已。
这种传统模式下,不同业务单元相互牵扯,一旦某个小业务出问题,整个应用都会受到波及。例如一家在线教育公司,一个课程相关小业务的故障,导致整个平台使用卡顿,用户体验极差。
Serverless的优势
Serverless使得云端一体化研发成为可能。以一些创业公司为例,以前开发一个小功能,要协调多方资源,现在大大降低了小业务需求的协同成本。它能做到轻量代码的开发,就像把厚重的盔甲换成轻便的衣服。这不仅减轻了开发压力,也提高了应对风险的灵活性。
在企业降低成本方面,相比于传统开发模式,Serverless减少了对大型服务器的依赖。一个小型新闻资讯网站,使用Serverless后大大削减了服务器租赁费用。这对于资金相对紧张的企业来说,是很有吸引力的改变。
闲鱼的Serverless探索历程
2018年闲鱼技术团队开启Serverless探索之旅,共历经四个阶段。首先是自建Dart Server,像自己打地基盖房子。随后依托FaaS平台,好似借助助手来推进项目。再到云端一体化,进一步整合资源。最后朝着传统巨型应用Serverless化迈进。
2019年闲鱼基于Gaia的Dart Runtime标准化,探索Flutter + FaaS 云端编程一体化等成果显著。诞生了如Nexus等胶水层业务框架,并且在20多个业务落地。这一系列的探索让闲鱼在技术创新的道路上走得更远。
前端FaaS研发问题
在Dart生态下,前端FaaS在研发交付效率堪忧。就像是一辆破旧的汽车行驶在高速公路上。研发时面临函数运行不稳定等问题,常常让开发者花费大量时间去排查。同时,还面临不同组件兼容性不佳的状况,不同版本的组件搭配容易出现错误。
针对这些问题,建设业务领域层服务的元数据中心就显得尤为重要。这如同给混乱的交通设置交通信号灯。方便客户端同学快速组装业务,让复杂的操作变得有序起来。
Netflix的成功范例
Netflix是Serverless成功落地的典型。它在产品设计上始终保持创新基因。通过不间断的A/B测试和每周发布很多新功能来保持竞争力。它的微服务相对统一,运行效果良好。像Netflix API这种情况,通过Serverless模式让无服务器和运营经验的工程师也能开发高可用服务。
FaaS的抽象能力为Netflix的业务发展提供了强大动力。通过把平台组件抽象为业务逻辑,使得流程更加简洁高效。这也为其他想做类似转型的企业提供了很好的参考范例。
厂商绑定顾虑及组织调整
在Serverless领域,开发者担心被厂商绑定是普遍存在的问题。这使得有一定规模的组织倾向于基于开源方案如Knative搭建自己的平台。这样既有自主知识产权,也能避免可能的商业风险。
闲鱼原本客户端和服务端同学分开,在Flutter + Serverless背景下,组织结构也必须做出改变。就像从旧的航道驶向新的航线,新的开发模式必然要有相适应的组织架构来保障正常运作。
你是否也在为传统服务端开发的耦合问题烦恼?对此你有什么看法?欢迎大家评论点赞分享。