- A+
前言
凹凸实验室从最初的前端团队成长为如今的全端团队,意味着我们不仅关注前端的技术能力,也重视全端及全栈的能力。在这一篇,我们从前端团队角度出发,阐述我们最初搭建服务端体系遇到的一些困难,已构建的服务体系架构,以及如何更好地助力业务增长。
些许似曾相识
首先,我们来看下日常工作中存在的一些场景。
- 场景A:在某些业务中,底层数据团队提供的数据接口并没有提供 HTTP 调用,需要去寻找其他服务端团队来封装,这时候需要等待其他团队排期,可能造成业务无法正常上线;
- 场景B:前端页面性能卡顿,由于调用接口过多,需要等待其他服务端团队聚合数据;
- 场景C:我们在一些项目需要SSR,前后端需要复用统一套模板;
- 场景D:我们内部孵化了一些项目,需要接口服务,需要等待其他服务端团队支持。
这些场景的背后,我们急需组建一个服务端研发团队来承担部分的业务服务开发以及更好地帮助团队未来发展。
成型
在团队组建上,主要采用「内部选拔」 + 「外部招聘」2 种方式。在团队发展上,我们主要经历了 3 个阶段。
雏形
在最初的阶段,选择以 NodeJS 作为服务端编程语言,主要以下有 2 点考虑:
- 团队大部分同学熟悉 Javascript,能够快速学习 NodeJS,上手成本较低;
- 在 SSR 方面有天然的优势,前后端能够共用部分代码。
在这个阶段,我们快速孵化了一系列的系统和平台,比如 Mock 平台、前端监控平台、兜底平台等等,主要目标丰富前端研发体系,提升前后端的开发及协作效率,同时也沉淀了一些 NodeJS 中间件。
成长
在服务开发效率、性能、稳定、安全等方面有了一定的沉淀之后,我们开始思考如何更加规范服务开发,更加高效地支撑业务增长。
在这个阶段,我们不仅输出了「研发规范」、「研发流程」、「开发框架」等一系列的知识体系,也搭建了「部署平台」、「通用管理平台」等相关研发平台。在业务开发上,我们用 NodeJS 实现了「天狗」游戏服务、用 OpenResty 实现了「数据聚合服务」、在某些频道上采用了 SSR 等等。
赋能
在设计中台中,我们沉淀了大量的通用服务,比如「页面」、「图片」、「编译」相关的服务,部分服务赋能给了其他团队,比如说我们将页面智能设计相关的服务赋能给了「江湖平台」、「智铺」等产品。
在公司内部,大部分的服务端团队技术栈主要是 Java,在服务间调用采用了集团内部自研的 JSF 协议。而我们团队主要技术栈依然以 NodeJS 为主,给其他团队提供 HTTP 调用,与 Java 在接入方式、限流、代码提醒等方面存在较大差异,也无法很好利用集团内大量的中间件。
在这个阶段,我们引入了 Java 技术栈,形成了以「NodeJS + Java」为主要服务端语言的技术体系。针对部分领域服务,我们提供了 Java 版本的 JSF 服务实现,方便第三方团队沟通合作。
体系结构
经过几年的沉淀,我们团队在服务端领域构建出了初步的体系结构。
服务端研发体系的建设,主要目标是为了提升团队代码的下限,提升开发效率,提高服务交付质量,促使团队共同成长。
构建一套服务端研发体系,主要围绕 8 个方面展开,包含研发规范、研发平台、研发流程、文档建设、团队管理、监控告警、中间件管理以及基础设施。
在整体服务架构上,我们日常的开发采用分层结构的模式,尽可能去抽离出通用的服务逻辑,输出更多的积木,降低我们的开发和维护成本。
以下从「业务支撑」和「技术建设」方面去简单阐述我们近几年在服务端领域的一些探索和实践。
业务支撑
业务是团队的立命之本,只有在业务的快速增长中才能不断去验证和优化我们整个服务体系,保证整体服务的可靠性。
羚珑服务
羚珑全称羚珑智能设计平台,提供一站式在线设计服务:一键抠图、免费抠图、商品打腰带、改尺寸、商品主图设计、线上广告banner设计、店铺首页设计、活动页设计、页面设计、互动营销设计、小程序设计、动图视频设计、视频广告设计、商品主图视频设计、海报设计、