开发者社区 > 博文 > 京东营销投放平台低代码(Low-Code)实践
分享
  • 打开微信扫码分享

  • 点击前往QQ分享

  • 点击前往微博分享

  • 点击复制链接

京东营销投放平台低代码(Low-Code)实践

  • 京东零售技术
  • 2021-09-01
  • IP归属:北京
  • 34280浏览
    前言


    过去的2020年,一场忽如其来的“新冠”病毒,迅速的重塑了当今整个世界的方方面面,作为现代社会中很重要的领域之一——软件科技行业,当然也深受其影响。

    各个软件科技公司都开始着重考虑节省人力成本和提高人力效率。在不可逆的社会浪潮之中,大家都开始想方设法地翻找各自的“工具箱”,看看有没有什么工具可以帮助各自在巨浪中生存下去。在大家的努力下,一条2014年由Forrester提出的“低代码(Low-Code)”技术构想被大家所重新拾起,成为了互联网软件开发界新进“红人”。

    本文将介绍低代码的相关概念,以及结合京东营销投放平台自身情况,把从0到1落地低代码的实践进行介绍,从这个项目的角度进行经验分享。



    什么是低代码


    “Low-Code” 是什么?如果你第一次听说,会不会猜测这是指代码写的很差劲的贬义词?或者说是不是指很底层编译语言?但是其都不是,那到底是什么意思?作为一名搜商比情商还高的程序员,本能的第一时间进行了网上搜索,首先找到的是全球网络上最大且最受大众欢迎的参考工具书wikipedia上的一个词条:Low-code development platform。wikipedia词条上给的定义是:

    A low-code development platform (LCDP) is software that provides an development environment programmers use to create application software through graphical user interfaces and configuration instead of traditional hand-coded computer programming.


    从中我们可以提炼两个关键信息,1. 是一个应用软件的开发环境。2. 提供的是易用友好的可视化方式进行编程。



    解决了什么


    从低代码的定义上,我们可以看出低代码平台可以解决三大软件开发方面的问题:减少重复工作、聚合平台能力、形成一体化生态。

    减少重复工作,设计合理的低代码平台会尽可能保证服务能力的原子性,可以消灭绝大部分繁琐和重复的代码,最大化软件复用。再往深一些看,低代码不只是少些代码而已,代码写的少,bug也就越少,要测的代码也少了,后续的应用构建、部署、管理等多个环节都减少了,对于软件开发的整个生命周期的人力都节省了。

    聚合平台能力,低代码平台强调服务能力的复用。我们一般认为使用过的成熟服务相对新服务是更可信的,更多的服务复用,意味着可以提高服务的性能、成本、稳定性、安全性、可持续发展能力等。这同时帮助平台在能力服务方面越来越丰富、健壮,更好的服务可以引入更多业务使用,继而继续扩展服务,形成良性循环。


    形成一体化生态,当聚合了越来越多的平台能力后,平台可以提供多层次多粒度复用手段,比如页面组件库、逻辑函数库、应用模板库等,引入更多的用户,甚至可以引入第三方研发一起实现平台共建,从而让平台服务的聚合逐步升级成为设计、研发、使用三位一体的平台生态。



    可能存在的问题


    软件开发界有一句名言:


    软件开发没有“银弹”。

    意思是说对于软件开发来说,没有一种方法是可以适用所有场景的。当然,低代码也有一些自身的局限。

    首先,低代码或许可以降级开发门槛,但复杂度并不会降低。可视化开发的自由度越高,组件粒度就越细,配置的复杂度就越高。同时,平台上的各种可视化组件、逻辑动作和部署环境都是黑盒,如果内部出问题无法排查和解决。

    其次,由于低代码更多考虑的是服务复用性、通用性,导致它更加适用于一些通用业务,对于一些定制化要求很高的需求并不友好。所以,对于低代码平台的设计,我们在实践方面也一直在寻求“易用”和“复杂度”之间的平衡。



    为什么我们要做低代码改造


    在解释这个问题之前,先简单介绍一下京东营销投放平台的素材管理功能是什么。一句话概括,就是用户可以通过系统,维护自己的素材池(素材可以是商品、广告、优惠券等),针对素材进行增删改查,素材池以一个整体在前台进行投放,投放时可以使用各种策略:个性化千人千面、人工干预、热度等。

    对于素材管理的多种服务,我们可以分成两大类:通用标准能力和自定义业务能力。通用能力包括素材组、场次、素材方面的增删改查管理,个性化千人千面、人工干预、热度等的投放策略。定制化的能力一般都是和具体素材类型相关的,比如数据校验、数据封装、数据渲染等。


    京东营销1.jpg


    通过这样的分析,我们可以发现对于通用的标准能力是非常适合使用低代码设计的,标准化沉淀下来的通用能力,可以在不同的素材上进行复用。新素材的开发只需要关注业务向的定制能力,这样大大减少了新素材接入的开发成本。



    架构设计


    对于低代码的架构设计,核心点应该为开发者尽可能屏蔽底层技术细节、减少不必要的技术复杂度,并支撑其更好地应对业务复杂度(满足灵活通用的业务场景需求)。设计的难点关键处在于如何解耦业务和技术复杂度,做到让基础设施下沉,形成能力的标准化可复用。


    京东营销2.jpg


    在我们分析的基础上,对于京东营销投放平台的素材管理能力进行了低代码平台设计。下面是我们的架构图:


    京东营销3.jpg


    架构上,在后端服务方面,我们标准化沉淀下来素材管理的通用能力,形成标准化流程;在定制能力上,我们支持在素材类型垂直的进行自定义能力开发接入。中间层我们设计一套适配层,针对服务后端和前端的标准化对接。在前端设计上,我们主要引入可视化表单和列表的配置能力,把前端的素材内容形成各种各样可复用的组件,通过灵活搭建的方式进行前端页面渲染配置(注:图中drip是我们部门自研的一套工具集,包含脚手架,组件等前端常用功能)。



    京东营销投放平台低代码实践成果


    低代码平台上线以后,对于产品、研发、测试的工作方式都进行了转变,从原来传统的关注全流程业务定制开发,转变为了主要平台研发关注基础能力开发和轻量业务研发关注业务逻辑开发。

    最终我们上线的低代码平台,核心可视化配置分成两部分,表单配置和列表页配置。


    京东营销4.jpg


    表单配置核心包括基础组件选择、表单页配置和组件数据配置。基础组件列出了平台所支持的所有可视化组件;表单页配置支持动态配置表单项;组件配置针对表单页上配置的表单项,进行进一步的数据绑定配置,支持和后端协议的打通。


    京东营销5.jpg


    列表页配置核心包括基础组件选择和表格布局配置。基础组件列出列表渲染所支持的各种可视化组件,表格布局支持动态配置列表展示项。


    京东营销6.jpg


    投放低代码平台上线以来,大大提高到了研发人效、增强了系统稳定性。以今年2021年上半年最忙的五月份来说(支持年中618大促),一个月时间投放平台支持接入了14种新素材,整体单素材接入需要的平均研发人力从原来的8人日降低到2人日。



    结语


    数据显示,中国企业的数字化转型市场需求大概需要5亿个新的应用或者APP,这个庞大的需求,如果按照传统的软件开发模式,不仅成本高昂,产品的输出和供给也受到限制。低代码平台的出现,在某一些场景下,发挥低代码配置灵活和复用性高的特点,可以更快更好的满足市场需求。

    本文也是趁着低代码潮流,在2021年初起对京东营销投放平台的素材管理能力进行从0到1 低代码改造,感谢整个团队的付出和部门内部的支持,在日常工作较饱和的情况下,愿意支持内部系统创新。在一路的摸索过程中,也遇到了很多问题,收获了很多的宝贵经验,最终使得低代码平台1.0版本很快的在4月份上线,2.0版本在7月份上线,现在的低代码平台已经完全覆盖素材接入管理流程,相应的人效红利也在逐步的展现,让团队有更多的时间精力去做其他的探索。


    作者:平台研发吴骏宇