Mendix客户项目总结

​从2005年成立至今,Mendix一直以客户价值为导向精心打磨产品,提升客户、合作伙伴及所有参与方的使用体验。进入中国以来,我们更是以120%的态度践行这一原则。工欲善其事必先利其器,这里的“器”不仅仅在于产品本身,更在于产品背后代表的思维方式,实施合作伙伴的培养与赋能,解决方案架构,项目管理与执行,客户数字化转型的长远的计划与思考等等。只有不断地用先进的理论指导实践,并在实践中迭代成长,才能充分发挥先进生产工具的最大价值,创造多方的共赢局面。

因此,我们会建议Mendix客户针对第一期的开发项目认真地做一次Review及复盘,总结经验与不足,确保在更优化、更深入的理解的基础上去使用Mendix迭代,以期更高的价值。本篇是Mendix一个实际的客户案例的总结,希望能给未来更多的Mendix项目提供参考价值。

项目背景

这是国内某大型企业的数字化项目,由服务商实施完成,项目涉及功能复杂,APP用户数量多(~10000);项目目前取得了很好的成果,这里我们只分析改进与提升点。

Review目标

Mendix原厂团队针对项目实施与管理方式及上线的APP进行全方位地审核与评估。

Review结果和建议

以下从项目实施方式,应用架构设计,Mendix平台使用及应用质量等方面来分享经验总结。

01. 项目实施方式

由于敏捷开发的天然价值优势,及Mendix平台原生的敏捷支持,无论是客户还是实施伙伴都首选以敏捷的方式进行应用开发。但是,敏捷只是个概念,其落地方式多样及各家的理解不同,项目往往容易进入误区。比如:

敏捷=Scrum=站会?

低代码/敏捷=没有范围,不用计划?

低代码/敏捷=需求可以随时,且不断追加?

因此我们建议:

首先,敏捷的践行方式很多,Scrum是比较流行的一种,但用Scrum方式执行敏捷也不是教条地开例会(站会,Sprint Review,Retrospective等),核心是做好Sprint计划,确保每个Sprint能产出增量的、可交付的产品。这个过程并不简单,需要产品经理,Scrum Master的团队充分协作,而且很大几率要摸索一段时间才能找到企业合适的节拍。

另外,不能简单地将Mendix低代码平台理解为一个开发工具,而且不能认为用了Mendix就等同于敏捷开发。同任何创新性技术一样,Mendix之所以适合敏捷开发方式,是因为其背后的价值观和设计思维符合敏捷的价值体系。世界上没有一蹴而就的事情,Mendix的“小步快跑”理念也不是投机思维,每一“小步”都保证完整、科学,积跬步才能至千里。

企业把握产品价值与方向 + 服务伙伴项目管理与实施 + Mendix原厂保驾护航 = 打造企业敏捷项目最佳实践,提升数字化弹性
​​​​​​

02. 应用架构设计

快速应用迭代出高质量产品的前提是有优化的架构设计。敏捷开发指导原则中说“最好的架构、需求和设计出自自组织团队”,并不是说整个产品没有架构设计阶段。产品开始每个Sprint执行之前必须要有整体架构和路线图,并做好发布计划。

同时,架构设计应该考虑到弹性与可扩展性。Mendix 建议保持每个应⽤功能尽量精简,⽤⼩⽽⾼效的多个应⽤组成系统,⽽⾮将全部系统功能规划在⼀个巨型应⽤中。

我们建议利用微服务思维进行架构设计:

高内聚低耦合,把强相关的部分,总是会一起改动的部分,聚合到一起,相关性不大的部分拆开,可以参考领域模型设计思维;

粗粒度服务,从业务角度出发对服务进行封装,对外提供粗粒度的服务。

同时,使用Mendix开发复杂的应用,一样需要基于大量的业务分析,与业务充分沟通将专业业务转化为领域模型,并借助Mendix模型驱动开发理念与工具,业务与IT一起参与可视化的模型、程序逻辑、流程流和用户界面设计。

03Mendix平台使用

Mendix低代码开发平台对开发进行高度的标准化、模块化,降低了开发门槛,大大提升了开发效率。但是这不代表开发者可以不设计,任意堆叠功能,可扩展性、性能问题、安全问题等还是需要关注的。因此,我们建议开发者还是要充分且系统地学习,按最佳实践方式使用(比如性能最佳实践),这样才能发挥Mendix平台的最大价值。

04. 应用质量

应用质量的检查也是我们Review的重点部分,Mendix客户服务部门也专门提供了相关的APP Review 服务。在这个案例里,我们在可扩展性、性能及安全性方面都有不同程度的发现,下面举几个例子。

可扩展性与性能 - 可扩展性/可伸缩性代表一种弹性,随着数据量增长,扩展性差将导致处理能力无法线性增长,造成性能差,延迟多,吞吐量低等结果。

本项目中的问题表现:

  • 从数据库(分批)读取数据量较⼤,拥有复杂数据处理逻辑的微流运⾏缓慢;当前项目中微流里Activity数量在25个以上的微流有超过200个,有些达到400多个,复杂度很高(Mendix最佳实践建议不超过25个);

  • 在循环中频繁写数据库(commit);

  • ⼀些模块中的 Entities上定义了一定数量的虚拟属性,在处理⼤量数据时可能造成性能瓶颈;

  • 访问频繁的大数据表未添加索引;

  • 本应⽤没有将旧数据存档的设计;

  • 重复的微流逻辑(同模块、跨模块都有);

  • 微流嵌入了大量Java Action。

建议:

  • 优化微流,多利用 Mendix 对数据聚合的优化,避免在循环中写数据库;

  • 通过分析属性的特点来判断适⽤的赋值⽅式,减少虚拟属性使用;

  • 在设计数据模型时,应该适当应⽤索引,经常使⽤的查询应使⽤索引来改善⽤⼾体验并处理⼤量数据; 

  • 考虑将旧数据存档,以避免随着时间增⻓,数据量增大时产生性能问题影响用户体验; 

  • 删除无意义和未使用的逻辑,以提⾼⽣产率并减少引⼊缺陷的机会; 

  • 除⾮ Java action 明显优于微流,否则应使⽤微流来促进可维护性。

安全性 -- 从数据模型定义,Mendix Studio Pro安全性警告,访问权限,微流的实体访问权限等方面对访问控制、职责分离、及API安全隐患等进行考量。

问题表现:

  • 对于很多模块来说,模块中定义的多个模块⻆⾊拥有完全相同的权限;

  • 安全警告,例如“Module role is not part of any user role.”;

  • 很多模块对所有⻆⾊开启所有微流的访问权限,这使得基于⻆⾊的安全性形同虚设;

  • 项⽬所包含的>1000个微流中只有<200个开启了实体访问权限;

  • 很多模块都未完全定义⻆⾊对(数据)实体的访问权限。

建议:

  • 将所有权限相同的模块⻆⾊⽤⼀个模块⻆⾊代替,相应调整项⽬⽤⼾⻆⾊;

  • 删除没有被关联到 user role 的 module roles;

  • 仔细定义角色在数据层面的访问权限;

  • 在可能的情况下尽量激活微流的实体访问权限,以达到更⾼的安全性。

我们把客户项目的真实情况与大家分享,目的是希望大家了解实践中可能会遇到的问题,从而提前规避和优化提升。总结经验的目的是为了将产品的的能力最大化,更好的帮助客户实现业务价值,这也是我们一直以来的目标和宗旨。欢迎联系Mendix中国团队,了解更多相关信息。

Mendix 项目时间线及活动指导建议
​​​​​

更多信息,请访问以下链接:

Mendix官网:https://www.mendix.com/zh/

Mendix中国论坛:https://forum.mendix.tencent-cloud.com/

Mendix行业解决方案:https://solutions.mendix.com/

Mendix平台指南:https://www.mendix.com/evaluation-guide/

Mendix动画展示:https://www.mendix.com/demos/

感谢阅读!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值