1 What Deployment Options Does Mendix Provide?
An application built with Mendix is based on a cloud-native design and conforms to Twelve-Factor App principles. The Mendix Runtime is fully optimized to run in a container technology that is compatible with most modern cloud platform offerings like Kubernetes and Cloud Foundry. Mendix apps are thus able to utilize benefits of these cloud platforms such as auto-scaling, auto-provisioning, auto-healing, low infra-overhead, CI/CD support, and cloud interoperability. For more information on these Mendix architecture principles, see Architecture Principles.
Within this flexible model, Mendix supports a large variety of deployment options that allow you to run your Mendix application on a public, virtual private, private, hybrid, or multi cloud or via a traditional (virtual) server.
1.1 Public Cloud
If you want to achieve the best utilization rate for your infrastructure, maintain optimal flexibility, and convert your capital investment into operational expenses, the public cloud is the best choice. Mendix has support for most public cloud vendors, such as Mendix Cloud, IBM, SAP, Microsoft, AWS, and Google. For public cloud providers supporting Cloud Foundry, such as Mendix Cloud, SAP, and IBM, we deliver a fully integrated experience where you can deploy your app with a single click to your choice of cloud.
For more information, see the section How Can I Run Mendix in the Public Cloud? below.
1.2 Virtual Private Cloud (VPC)
If your business requires a higher data or application isolation level, a virtual private cloud (VPC) could be the best choice. You still can benefit from a high utilization rate and resource flexibility, but on dedicated hardware or within a separate network segment. A Mendix application runs fully decoupled from our public Mendix Developer Portal, which means running on a VPC can be accommodated easily.
For more information, see the section How Can I Run Mendix in a Virtual Private Cloud? below.
1.3 Private Cloud – On-Premises
If your organization is complying with specific regulations and is not allowed to run in a third-party cloud, you must run your infrastructure on premises. This option can be based on a private cloud or on a traditional server. Mendix can run on both server-based solutions as private cloud infrastructure-as-a-service (IaaS) or platform-as-a-service (PaaS) solutions.
For more information, see the section How Can I Run Mendix in a Private Cloud or On Premises? below.
2 How Do I Run & Deploy My Mendix Application?
In the Mendix Platform, the development and execution of your application are fully separated. After developing the app, you can choose where you want to run it. The sections below explore your deployment options.
2.1 How Can I Run Mendix in the Public Cloud?
Mendix applications can run on all common public cloud providers, such as Mendix Cloud, Amazon Web Services, Microsoft Azure, IBM Cloud, Google Cloud Platform, SAP Cloud Platform, and Redhat Openshift.
You can choose the methodology to use – from container-based to VM-based, every methodology is possible.
For more information, see the section Which Cloud Providers Can I Use for Mendix? in Cloud Providers.
2.2 How Can I Run Mendix in a Virtual Private Cloud?
A virtual private cloud is a public cloud with a dedicated infrastructure like network connectivity, storage, and/or computing allocated to a customer. In most situations, this cloud is only accessible when connected to the customer’s network. To run in such a cloud Mendix Cloud Dedicated or Mendix for Private Cloud can be used. These two options provide fully recommended ways of running Mendix applications within your VPC.
This ensures developers maintain the benefit of the one-click deployment experience when using the Mendix Platform in combination with a VPC.
For custom deployment strategies, the Mendix Developer Portal provides a set of APIs that make it possible to configure tools like Jenkins or Microsoft Visual Team services to automate deployment within a VPC. For more information, see CI/CD.
2.3 How Can I Run Mendix in a Private Cloud or On Premises?
If you are required to run your software on your own premises, you can choose an infrastructure abstraction level:
- Physical servers
In terms of speed, self-service, and governance, the PaaS level has significant benefits. For this reason Kubernetes is the abstraction layer Mendix has adopted as the standard to run Mendix Application in an on-premises scenario. For more details see Mendix for Private Cloud
Because of the small footprint of a Mendix application, having a two-node (VMs) Kubernetes cluster allows you to run multiple Mendix applications (in multiple environments) with high availability, as well as providing auto-scaling and auto-healing capabilities.
The use of traditional servers is also still possible, but the setup time and maintenance will be significantly higher.
For more information, see the section Which Operating Systems Do Mendix Studio and Mendix Studio Pro Support? in App Development.
2.4 How Do I Select a Cloud Provider?
Mendix multi-cloud is a deep integration with different cloud providers, which allows you to deploy your application with a single click from Mendix Studio, Mendix Studio Pro, and the Developer Portal.
The Mendix multi-cloud solution makes use of container-based cloud solutions. The creation of the container and the required services (like the database) is done completely automatically.
It is even possible to switch between cloud providers, so you can start developing and running your application on one cloud and, over time, move it to another cloud.
At present, the integrated Mendix multi-cloud solution is provided for the following public cloud providers:
- Mendix Cloud
- IBM Cloud
- SAP Cloud
and for the following (virtual) private cloud providers:
- Redhat Openshift
- Azure AKS
- AWS EKS
More clouds will be added to the Mendix multi-cloud portfolio in the near future.
2.5 When Should I Use IaaS vs. PaaS?
IaaS is the virtualization of computing, network, and storage running on premises or in the public cloud. A PaaS is an extra abstraction layer on top that allows you to work with services and applications. The abstraction layer of a PaaS will allow you to think in terms of services and applications while providing capabilities like auto-scaling, auto-healing, auto-provisioning, user governance, and optional high availability.
The choice of either an IaaS or a PaaS in relation to Mendix is based on the amount of applications you are planning to run and who the owner is of the PaaS layer on the cloud.
If you are able to consume a PaaS on demand from a public cloud or as a (virtual) private cloud, this will always be the best fit as a Mendix hosting solution based on cost, speed, and control.
In the scenario that you have access to an IaaS and you need to choose a PaaS layer yourself (like Kubernetes or Cloud Foundry), the key factor is the number of applications. A Kubernetes cluster can be beneficial when you are planning on running more than two applications, where each app contains a test, acceptance, and one or more production environments. When you are planning on running more than 10 applications, a Cloud Foundry solution could be beneficial (this has to do with the footprint and maintenance of the PaaS layer). Finally, for a single application, a traditional server-based solution will be enough.
3 How Can I Run Mendix on a (Virtual) Server or IaaS?
The Mendix Runtime can be directly installed on a server. Mendix provides a service manager for both Linux-based and Windows-based servers that controls the start, stop, and deployment of an application on the server.
For Linux-based applications, this is a command-line based tool called M2EE.
For details on supported operating systems and related databases, see System Requirements in the Mendix Studio Pro Guide.
In addition to a container-based solution, Mendix provides full support for a high availability configuration. For more information, see How to Configure High Availability in the Mendix Developer Portal Guide.