Mendix架构综述
- 1. Mendix平台架构的核心原则
-
- 1.1 模型驱动
- 1.2 Mendix模型解析优于代码生成
- 1.3 Mendix的微服务、容器和部署标准化
- 1.4 Mendix的无状态
- 1.5 Mendix提供的开放与扩展性
- 2. Mendix平台架构的核心组件
- 3. Mendix运行时对云原生-12要素应用的支持
Mendix作为高效的aPaaS环境,建立在现代的开源云原生架构之上,可伸缩、自由地部署到各类虚拟化基础设施中,包括Docker、Kubernetes、Cloud-Foundry等。Mendix平台的无状态服务架构可随需进行垂直和水平伸缩,同时默认的,Mendix公有云自身也提供高可用伸缩服务。开放和可扩展支持跨平台,从自定义模型扩展的客户端、服务端接口到平台接口及所用的开源Model SDK都支持跨平台,这样可以将Mendix与您已有的工具(CI/CD及DevOps)进行集成、构建脚本以管理、监控及修改您应用的核心元素。
1. Mendix平台架构的核心原则 Mendix平台架构为企业应用所需而生,这些应用要求可维护、高性能、可伸缩、同时能与企业复杂的系统与集成生态相适应。由此,Mendix确立了以下架构的核心原则:
- 模型驱动的开发模式(MDD);
- 模型的解析优于生成代码;
- 支持微服务、容器及部署标准化;
- 无状态;
- 开放、可扩展;
- 满足12要素准则。
1.2 Mendix模型解析优于代码生成 Mendix运行时(Mendix Runtime)直接执行模型,这意味着模型是应用的语义化而不是媒介化。与之相反的方法是用可视化模型设计工具,借助它们生成代码(例如Java或.NET)。Mendix的模型解析方法另辟蹊径、独具优势。
1.3 Mendix的微服务、容器和部署标准化 微服务是一种适合敏捷DevOps团队最佳的软件架构。这一架构最好地从容器的质量获取收益。容器使得应用可以以自动化的方式部署到云端,并且保证高质量、可重复性、高速度。部署的标准化使小规模DevOps团队处理相关运维成为可能。
1.4 Mendix的无状态 现代可伸缩的Web应用利用无状态架构作为支持高伸缩、高弹性的方法。无状态支持当需要时允许增加资源的水平扩展以满足用户和业务负载的需要。用户的每个请求和交易可以被可用的任一实例所处理。如果因性能需要处理更多的交易或用户请求,简单地增加额外的运行实例即可处理。对于状态的管理在运行时(runtime)之外,当失效的转移给可用的,相应地也增加了应用的弹性。
1.5 Mendix提供的开放与扩展性 【#|Mendix架构综述】开放是所有现代应用平台所需的基础架构,意味着平台应该允许应用共存、均衡其他的应用和服务,也意味着平台自身应该适应IT蓝图、支持核心的开发过程和标准。
在纯粹的模型驱动开发模式(MDD)中,因缺乏抽象,企业功能性和非功能性需求很难满足。扩展性是处理企业实际的功能性和非功能性需求的本质要求。模型解析不允许改变已生成的代码,而扩展性恰恰相反。
2. Mendix平台架构的核心组件 Mendix平台作为满足企业应用设计、构建、测试和部署的aPaaS集成平台,由高级的开发者门户(Developer Portal)组成,可以进行应用的资源管理、需求收集、监控和运维,也提供桌面和web的可视化建模环境。此外,还提供综合多样的应用市场(Marketplace),其中囊括数千种可用的组件和部件以加速开发。
3. Mendix运行时对云原生-12要素应用的支持 虽然不是一套严格的架构原则,但12要素准则方法论是一套云原生应用的最佳实践,包括以下要素:
- 基准代码 — 一份基准代码,多份部署;
- 依赖 — 显式声明依赖关系;
- 配置 — 通过约束定义应用的模型;
- 后端服务 — 部署时可配置;
- 构建、发布、运行 — 构建和运行相分离;
- 进程 — 无状态;
- 端口绑定 — 应用自我加载;
- 并发 — 通过进程可伸缩;
- 易处理 — 运行实例可以随需启停;
- 开发环境与线上环境对齐 — 尽可能的保持开发、预发布、线上环境相同;
- 日志 — 通过CF Firehose采集日志;
- 管理进程 — 管理和应用代码采用同一个模型。
文章图片
推荐阅读
- 分布式架构搭建|云原生之 Docker篇 Docker Compose介绍及使用入门
- 常见的Java学习错误以及如何解决它们
- 如何在Java中操作KeePass数据库(kdbx)
- 最近很火的低代码到底是什么()
- 基础架构基础(网络监控)
- 小程序预加载数据实战
- 你是否应该专门花时间学习Java编程语言()
- 如何使用Java AWT创建和显示Windows 10通知
- IDEA使用技巧|IDEA 一个窗口打开多个项目ideal中如何添加几个不同的项目在同一个idea页面显示(30秒解决)