GMTC全球大前端技术大会聚焦前端、移动、AI应用等领域15个热门专题方向,购票立减¥960 了解详情
写点什么

新一代 Java 开发工具 SoFlu 火了,可它到底行不行?

2021 年 3 月 30 日

新一代Java开发工具SoFlu火了,可它到底行不行?

越来越多的传统企业要进行数字化转型,也有更多的硬件企业在“缺芯”背景下向软件方向转型,“转型”是当前企业面临的一次考验。无论什么类型的企业,对技术的需求越来越大。

 

但获得有效研发能力并不容易,中小型互联网企业和传统企业面临着不同的困难。

 

有技术基础的中小型互联网企业面临的最大问题就是成本。据悉,一家拥有 150 人左右研发团队的开发公司,每个月需要承担的人力成本至少要 300 万,效益上却不尽如人意。而很多传统企业从多年前便开始数字化转型,并专门设立了软件开发部门,但结果却是研发人员越来越多、成本越来越高,但该解决的问题却并没有得到有效解决。

 

成本、效率等问题成为横梗在这些企业面前,阻碍企业发展。工信部数据显示,2016-2019 年,企业研发经费复合增速为 14.4%,但是利润总额复合增速只有 10.7%,研发经费的高投入并未带来同等增速的盈利水平。

 

归根到底,造成这一现象的主要原因还是企业预算有限的情况下,无法获得最高效的技术支持。为了寻求更有效的解决办法,已经诞生 20 多年的自动化软件开发工具再次成为新的焦点。尤其在疫情后,旨在帮助企业降本增效的自动化开发工具再次被炒热。

 

虽然自动化开发工具已经逐渐被很多企业接受,但这些代码可信吗?出现问题了怎么办?仍有不少人会对自动化开发工具提出质疑。

 

为什么说飞算 SoFlu 全自动软件工程平台行?

 

传统集中式架构把所有功能模块集成到一个进程中,拓展过程就是复制整体的进程,在适应海量高并发、应用快速部署升级、资源弹性拓展方面都有很大弊端。因此,相对灵活高效的微服务逐渐成为企业 IT 架构的主流趋势。

 

将每个独立小型服务进行拆分虽然提高了开发灵活性,但随着服务数量的提高,系统总体代码量可能并不会减少,甚至可能更为复杂,飞算云智总裁陈定玮也曾被这个问题困扰,这也导致了飞算 SoFlu 全自动软件工程平台的诞生。

 

2016 年,陈定玮团队由于业务向移动互联网转型,研发团队暴增带来了很多管理问题。“不堪重负”的陈定玮开始尝试将软件行业传统的“人工治理”模式变成“法治”:告别代码,用标准化的流程操作和拖拉拽的方式实现开发。

 

面对业务流程繁琐、数据量巨大时要求高时效性、安全防护等平台常见的问题,陈定玮选择将复杂的问题再度进行拆分,然后通过选择相应的工具或资源来解决,最终结果是通过对不同工具做高效组合来解决不同的现实问题。

 

自动化开发工具不仅已经在一定程度上解决了研发效率等问题,也解决了一些人力无法解决的问题。

 

不久前,Gab 的 CTO Fosco Marotto 写了很多错误百出的代码,导致黑客利用 SQL 注入漏洞从 Gab 的后台数据库中窃取了大约 70GB 的平台用户数据。据悉,Marotto 已经有 23 年的从业经历,曾在 Facebook 工作七年,是后端工具包 Parse 团队的关键成员。一家保存提交快照的网站保存了 Marotto 当时出错代码的截图,图片显示,其在第 23 行删除了“reject”和“filter”的代码,这两个 API 函数主要是为了防止 SQL 注入攻击。

 


Marotto 出错代码的截图

 

这种编写错误放在任何代码分析工具中,都会被告知是糟糕的,CI 管道甚至会直接拒绝合并代码,即开发人员如果忽略了这个安全漏洞,平台也会阻止它。Gab 内部具体操作流程我们不得而知,但从这个事件中可以看出,有时厉害工程师写的代码不一定靠得住。

 

有代码规范是保证产品质量的有效方式之一,否则很容易产生潜在的质量问题。如今,大厂们基本都有自己的代码标准和代码质量规则,但这种制度在一般公司很难推行。因为对于研发人员来说这些规范更像是一个无形的枷锁,被束手束脚。

 

相比之下,自动化开发工具可以更有效地执行严格的代码规范。飞算 SoFlu 全自动软件工程平台团队将前沿大厂使用的开发规范结合实际遇到的问题处理方式后,从效率、安全等多方面考虑后,制定了自己的代码规范。比如,限定每行代码的写法、有些地方不允许 SQL 拼接、Join 不允许超过三次等。

 

除了规范,所有的代码还必须接受严格检测,确定没问题后才会被提交到代码仓库。同理,所有组件也必须经过代码质量管理工具扫描无误后才让用户使用。现在,飞算 SoFlu 全自动软件工程平台的质量管理平台上已经有一千多条标准,而新的规则也在不断被加入其中。

 

本身就有代码洁癖的陈定玮对代码要求非常高,高质量的代码是可以直接缩短整个项目周期的。一般厂商,尤其服务银行的厂商,每天会派驻场人员不停改需求、修 bug,无形中拉长了整个项目的周期和成本,甚至最后不得不放弃。

 

“使用飞算 SoFlu 全自动软件工程平台团队的客户是不需要驻场人员的,即使是对于并发量大、安全性要求高的金融机构客户,也是不需要驻场的。因为我们提供了很稳定的系统,客户自己的人就可以搞定运维工作。”陈定玮有些自豪地说到,“当然,并不是没有 bug,唯一有可能出现的就是业务逻辑出现了问题,但这属于对需求的理解出现了问题,不是代码质量问题。这类问题只需要在可视化流程图中进行调整就可以了。”

 

在安全问题上,飞算 SoFlu 全自动软件工程平台每个季度至少组织一次针对平台的白帽攻击。此外,还设置了特权账号管理,数据分析、相关维护等行为都在监控之下,并经过审批才可以进行。

 

现在技术条件下,每一种难度都有对应的方法可以破解,所谓的复杂度边界问题已经被大大弱化。自动化开发平台最大的难点是如何设计的问题,而不是技术。

 


 飞算 SoFlu 全自动软件工程平台部分流程截图

 

比工具更有价值的,是业务经验

 

自动化开发工具帮助企业解决了很多研发中的实际问题,但在互联网时代,用户体验是很重要的事情,而这部分可能仅靠工具是无法完成的。例如,UI 和后台操作要不要做进程分离、状态信息要不要分类、后台操作要不要给用户提示等等,工程师设计的很多细节都决定了用户使用产品时的直接感受。

 

目前在具体开发上,架构体系搭建在理论上并没有统一的标准,各家企业很多时候都是摸着石头过河。企业开发时,用现成的开源代码固然是一种方法,但代码质量代表了开发者的能力水平,如果使用了经验欠缺开发者的代码,系统的整体运行和安全等问题也没办法得到保证。

 

对于一些问题,没有经验的话大厂也会很难搞定。如某银行曾经花了上百万请一线大厂做数据迁移工作,但都不怎么顺利,银行生产部就挂过两次。由此可见,经验对于一个项目的成功是多么重要。

 

但一般企业聘请一个优秀工程师并不容易。大厂在资源、待遇和机会等方面无疑更有竞争力,从而也会吸引更多的优秀工程师。自动化开发厂商也注意到了这个问题。因此,除了提供可视化开发工具,他们也会利用自己的经验优势服务客户。

 

陈定玮团队利用自己多年的互联网经验,推导出一套可以标准化的规范,并从用户具体需求、预算、后期运维等方面综合考虑,给出自己的建议。而笔者认为,这些业务经验却是比平台工具本身更有价值的部分。

 

飞算 SoFlu 全自动软件工程平台的实战经验是从自己开始积累的。为了保障实际上线效果,飞算 SoFlu 全自动软件工程平台成为自己产品的第一个用户,团队大部分项目已经改用这个平台来开发。在代码交付方面,也实现了从人工交付到自动化工具交付的转变。

 

实践中,企业要做的是说明自己的场景需求,然后陈定玮团队根据企业需求、项目运维、预算等实际情况,再结合自己的业务经验,向企业说明可能的环境、硬件投入等具体情况,最后综合给出性价比更高的解决方案。

 

实战是最有效的检验方式,丰富的业务经验反过来也更加保证了代码和组件的高效性和可用性。目前,飞算 SoFlu 全自动软件工程平台能够承载包括大中型电商在内的企业流量。

 

对于企业客户,飞算 SoFlu 全自动软件工程平台团队开设了相关课程,也会到企业中做员工培训。有开发经验的人两天可以全部上手,没有任何专业背景的人大概经过一个月训练也能上手。除非特殊情况,完成企业开发工作的一定是企业自己的人。

 

让企业有能力接下更多的业务

 

“自动化开发工具+业务经验”的组合,对业务效率的提升效果是很显著的。

 

某省级甲等综合医院是飞算 SoFlu 全自动软件工程平台的客户,在其原来的线上业务系统中,有 cache、oracle、sqlserver、mysql 等各类数据库,数据处理逻辑相对复杂,同时设备老旧,有些系统没有部署备份库。常规方案在低投入设备情况下根本无法完成计算,也很容易使系统出现问题,这导致后端开发、前端开发、需求、产品、测试、运维 6 个人需要花费 2 个月的时间才能交付一个项目。

 

设计、研发、测试、上线、运维,如此多的程序注定了一个项目的交付是不容易的,企业为此承担着很高的试错成本。所有流程中,需求沟通和设计系统架构是最重要的,因为这直接决定了系统的性能和稳定性。按道理来说,企业应该在这上面投入更多的时间和精力,但现实情况却并非如此。就像该医院的研发团队,将很多的精力都花在了解决技术问题上。

 

该医院寻求的解决办法是通过使用飞算 SoFlu 全自动软件工程平台来弥补研发问题,同时也将研发人员从基础劳动中解放出来,更多地去做架构设计等核心工作。

 

新建项目、模型编辑、仿真测试等简单的操作可视化流程看起来复杂,但在自动化工具里只需要开发人员填写具体参数、拖拽组件就可以完成,无论是开发量还是开发周期都减少了。该医院同样的开发任务 3 个人就可以完成,项目交付周期缩到了 20 天,人员成本节省了约 50%,项目周期缩短至 1/6。

 

目前,利用自动化开发工具来完成所有研发工作已经进入到该医院未来的开发计划中。而在硬件方面,医院计划初期先在单机硬件环境运行产品,后期数据和计算量增大时,再通过增加硬件来提升集群处理能力。

 

这家医院的问题是很多企业都在面临的问题。

 

现在很多企业往往需求没谈清楚、架构没有设计好就着急进入到研发阶段,在研发工作上投入过多精力。为此,开发人员要不停加班,甚至不得不 996 来完成工作,如果项目质量出现问题,开发人员再不停加班修复。本末倒置的工作不仅使得研发人员身心俱疲,也加大了企业经营成本,无形中变成了一种恶性循环。

 

同时,这家医院问题的解决之道也是很多企业在做的,不只是传统企业,很多互联网企业里的研发人员也已经在使用自动化开发工具。

 

据电商行业数据分析师介绍,对于电商行业来说,每周要做的营销活动对促进平台 GMV 增长至关重要。通常做法是根据客户的历史数据及业务经验、规则等做营销名单的推荐,但现在很多企业已经开始使用自动化建模工具,无论是活动效果还是成交额都得到了明显提升。

 

自动化开发工具带来的效益提升,是为了让企业有能力接下更多的业务。随着企业的不断发展,业务量越来越多,员工人数不变的情况下,个人效率的提高就能提升整个企业的产能,这让企业有能力接下增长的业务。这跟制造业靠精进生产工具来提升产能是一样的道理。

 

但自动化开发工具发展的另一方面,是开发人员隐隐地被替代顾虑。陈定玮表示,虽然自动化开发工具的初衷是为了让开发人员摆脱重复劳动,向设计方向转,但他也理解开发人员的担忧。为打消工程师们的顾虑,飞算 SoFlu 全自动软件工程平台团队采取的行动之一便是计划在 3 月底推出开源版本,让开发人员更直接地接触全自动后端开发工具,并可以参与到这个生态中。

 

“对于普通工程师来说,‘降本增效’是件相对抽象的事,他们更关注的是实实在在的代码。希望随着项目的开源,研发人员可以理解我们的理念。”陈定玮说道。

 

结束语

尽管这个行业越来越受重视,相关技术也越来越成熟,但每个企业对自动化工具的价值理解还是不一样的。有人会愿意全面投入,有的人是怀疑态度,这是每个行业初期都会面临的问题。对于厂商来说,在技术、服务等方面要做的事情还有很多。

 

2021 年 3 月 30 日 10:4517206

评论 7 条评论

发布
用户头像
广告,请携带【广告】标识
20 小时前
回复
用户头像
硬广。
2021 年 04 月 15 日 14:45
回复
用户头像
说的什么几把玩意儿,东拼西凑,牵强附会,招摇撞骗,我就看你们什么时候凉....
2021 年 04 月 15 日 09:40
回复
用户头像
我觉得小编根本没写过代码
2021 年 04 月 12 日 10:34
回复
用户头像
开源代码地址有吗?
2021 年 04 月 01 日 12:00
回复
用户头像
按照精心设计的规则强制约束, 生成的代码逻辑更严谨, 但是欠缺灵活度, 各有优劣. 另外Java 对代码生成的支持相比C#差一些, 没有 分部类/分部方法/扩展方法 等.
2021 年 03 月 31 日 09:12
回复
用户头像
现在技术条件下,每一种难度都有对应的方法可以破解,所谓的复杂度边界问题已经被大大弱化。自动化开发平台最大的难点是如何设计的问题,而不是技术。

2021 年 03 月 31 日 08:55
回复
没有更多了
发现更多内容

最好的汇报是不需要汇报

伯薇

团队管理 领导力 沟通 汇报 可视化

写文章的目的是什么?

小天同学

思考 写作 感悟 表达

人生需要做减法:少即是多

我心依然

程序员 人生 减法 少即是多 less is more

央行:取消境外机构投资者额度限制,推动金融市场进一步开放

kimmking

我为什么不买Mac

Winann

效率 效率工具 Mac apple

spring boot 集成 elasticsearch 7.x (一)

wd

elasticsearch high level client

算法篇之数组右移

月夜

算法 数组右移

地址收录

gogogo

Java并发编程基础--Synchronized

Java收录阁

线程

回"疫"录(9):守住我们自己的净土

小天同学

疫情 回忆录 现实纪录 纪实

不安全的“安全密码”

沈传宁

信息安全 口令安全

一个英语渣的自救手册

寇云

学习 效率工具 程序员人生 工作效率

没有业务规则的技术实现

wd

吐槽

深入理解Java中的Lambda表达式和函数式编程的关系

jerry

Lambda java8 函数编程

Ubuntu 20.04 装机手册

小柒

Linux #Ubuntu #geek

在 TypeScript 处理空值异常

寇云

typescript 前端开发

这样理解Java中的函数式编程就对了

jerry

java8 函数编程

性能优化第一课:性能指标

kimmking

性能优化

系统的安全性设计

Janenesome

读书笔记 程序员 架构 安全

权限系统设计的一种解法

双城笔录

产品 总结 产品设计

关于架构的几件小事:架构是什么

北风

架构 企业架构

道德和正确的认知

沈传宁

信息安全 计算机道德

jenkins集成maven获取远程项目

kcnf

第一篇InfoQ的博客

程序员小岑

写作 体验

iTerm2使用小技巧-密码管理器

小菜与老鸟

iTerm

Redis学习笔记(散列类型)

编程随想曲

redis

牛排等级之美国篇

地藏@易果18916037281

关于 DeepL 机器翻译能力

梁帅

产品 互联网 机器翻译 谷歌Google DeepL

测试驱动开发英制单位转换

escray

学习 CSD 认证实战营

吾谈教育

ItsFitz

讨论:应不应该用存储过程?

kimmking

大数据技术升级脉络及认知陷阱

大数据技术升级脉络及认知陷阱

新一代Java开发工具SoFlu火了,可它到底行不行?-InfoQ