Mendix架构综述
Mendix作为高效的aPaaS环境,建立在现代的开源云原生架构之上,可伸缩、自由地部署到各类虚拟化基础设施中,包括Docker、Kubernetes、Cloud-Foundry等。Mendix平台的无状态服务架构可随需进行垂直和水平伸缩,同时默认的,Mendix公有云自身也提供高可用伸缩服务。开放和可扩展支持跨平台,从自定义模型扩展的客户端、服务端接口到平台接口及所用的开源Model SDK都支
Mendix架构综述
Mendix作为高效的aPaaS环境,建立在现代的开源云原生架构之上,可伸缩、自由地部署到各类虚拟化基础设施中,包括Docker、Kubernetes、Cloud-Foundry等。Mendix平台的无状态服务架构可随需进行垂直和水平伸缩,同时默认的,Mendix公有云自身也提供高可用伸缩服务。开放和可扩展支持跨平台,从自定义模型扩展的客户端、服务端接口到平台接口及所用的开源Model SDK都支持跨平台,这样可以将Mendix与您已有的工具(CI/CD及DevOps)进行集成、构建脚本以管理、监控及修改您应用的核心元素。
1. Mendix平台架构的核心原则
Mendix平台架构为企业应用所需而生,这些应用要求可维护、高性能、可伸缩、同时能与企业复杂的系统与集成生态相适应。由此,Mendix确立了以下架构的核心原则:
- 模型驱动的开发模式(MDD);
- 模型的解析优于生成代码;
- 支持微服务、容器及部署标准化;
- 无状态;
- 开放、可扩展;
- 满足12要素准则。
1.1 模型驱动
模型驱动的开发模式(MDD)是一种进行快速开发的领先的方法。是因为它使用可视化模型定义应用逻辑、业务流程及用户接口。MDD使得开发者和业务用户可以不需要密集劳动力资源而采用低代码快速构建应用。比传统的编程语言如C#、Java等快得多。为了使业务用户积极参与到应用的设计开发的过程中,Mendix完全采用了可视化的模型驱动的开发方法。模型驱动开发模式提供了优秀的沟通机制使得业务和IT相关人员能够协调一致,从而确保更高的质量和更成功的产出。
1.2 Mendix模型解析优于代码生成
Mendix运行时(Mendix Runtime)直接执行模型,这意味着模型是应用的语义化而不是媒介化。与之相反的方法是用可视化模型设计工具,借助它们生成代码(例如Java或.NET)。Mendix的模型解析方法另辟蹊径、独具优势。
1.3 Mendix的微服务、容器和部署标准化
微服务是一种适合敏捷DevOps团队最佳的软件架构。这一架构最好地从容器的质量获取收益。容器使得应用可以以自动化的方式部署到云端,并且保证高质量、可重复性、高速度。部署的标准化使小规模DevOps团队处理相关运维成为可能。
1.4 Mendix的无状态
现代可伸缩的Web应用利用无状态架构作为支持高伸缩、高弹性的方法。无状态支持当需要时允许增加资源的水平扩展以满足用户和业务负载的需要。用户的每个请求和交易可以被可用的任一实例所处理。如果因性能需要处理更多的交易或用户请求,简单地增加额外的运行实例即可处理。对于状态的管理在运行时(runtime)之外,当失效的转移给可用的,相应地也增加了应用的弹性。
1.5 Mendix提供的开放与扩展性
开放是所有现代应用平台所需的基础架构,意味着平台应该允许应用共存、均衡其他的应用和服务,也意味着平台自身应该适应IT蓝图、支持核心的开发过程和标准。
在纯粹的模型驱动开发模式(MDD)中,因缺乏抽象,企业功能性和非功能性需求很难满足。扩展性是处理企业实际的功能性和非功能性需求的本质要求。模型解析不允许改变已生成的代码,而扩展性恰恰相反。
2. Mendix平台架构的核心组件
Mendix平台作为满足企业应用设计、构建、测试和部署的aPaaS集成平台,由高级的开发者门户(Developer Portal)组成,可以进行应用的资源管理、需求收集、监控和运维,也提供桌面和web的可视化建模环境。此外,还提供综合多样的应用市场(Marketplace),其中囊括数千种可用的组件和部件以加速开发。
3. Mendix运行时对云原生-12要素应用的支持
虽然不是一套严格的架构原则,但12要素准则方法论是一套云原生应用的最佳实践,包括以下要素:
- 基准代码 — 一份基准代码,多份部署;
- 依赖 — 显式声明依赖关系;
- 配置 — 通过约束定义应用的模型;
- 后端服务 — 部署时可配置;
- 构建、发布、运行 — 构建和运行相分离;
- 进程 — 无状态;
- 端口绑定 — 应用自我加载;
- 并发 — 通过进程可伸缩;
- 易处理 — 运行实例可以随需启停;
- 开发环境与线上环境对齐 — 尽可能的保持开发、预发布、线上环境相同;
- 日志 — 通过CF Firehose采集日志;
- 管理进程 — 管理和应用代码采用同一个模型。
扫码或搜一搜关注微信公众号:软件外包圈,获取更多干货和资源
更多推荐
所有评论(0)