Introduction
If your organization is moving to the cloud or is already in the Azure domain, you may be interested in learning about the options available to host FME Flow in Azure.
As FME Flow evolves and develops, we continually improve our deployment offerings so that administrators can choose the most suitable solution for their needs.
Virtual Machines
Most people choose the traditional option of setting up and managing virtual machines to install and run FME Flow, as you would typically do on-premises. This may be the recommended approach, especially if you have only one FME Flow environment (not separate dev, test, and prod environments) and you're not familiar or comfortable with Infrastructure as Code (IaC) templates.
If you're unsure which deployment type you need, it is recommended that you review our documentation on Choosing a Deployment Architecture or our article A Guide to Choosing your FME Flow Deployment Architecture.
An Express installation can be done all on one virtual machine and will be easy to set up. A distributed environment may use Azure services, such as Azure Files, Azure managed database, Azure Load Balancer, or Application Gateway.
Azure Marketplace
Azure Marketplace is a catalog of applications that are available to deploy with the intention of getting you up and running faster than managing the installation and configuration yourself.
There are currently two Azure Marketplace offerings of FME Flow:
FME Platform
The FME Platform offering is a Virtual Machine that comes with an installation of FME Form and an express installation of FME Flow. We recommend this solution if you want to quickly get FME Flow into your Azure environment, possibly as a trial.
We don’t recommend this option for production workflows where you are running critical workflows, or where fault tolerance and high availability are crucial. As the express installation of FME Flow has all components on a single VM, this creates one point of failure.
FME Flow (Distributed Deployment)
The FME Flow (Distributed Deployment, Windows) is a distributed installation of FME Flow that utilizes Azure services to optimize performance and reliability. You can read more about this deployment in our blog post. The services used include Virtual Machine Scale Sets (VMSS), Azure Load Balancer, Azure Application Gateway, Azure Database for PostgreSQL, and Azure File Storage.
At the final stage of deploying an Azure Marketplace offering, you have the option to download the services and configuration as an Azure Resource Manager (ARM) Template.
We recommend this solution for customers who want to create a fault-tolerant FME Flow where components are distributed and replicated across multiple VMs (such as the FME Flow Core and Engines on VMSS) or components are running on Azure services designed to be highly available and/or fault-tolerant (Azure File Storage, Azure Load Balancer, Azure Database for PostgreSQL). This deployment option is a standard deployment and only has FME installed on the virtual machines. If you need more customization (either different Azure services or other installed applications) we recommend that you adapt the ARM template to meet your needs, or install yourself as per our documentation.
If you're interested in customizing our marketplace ARM templates or would like more examples and details on other IaC templates, review this article: Infrastructure as Code (IaC) for Distributed FME Flow Deployments in the Cloud.
Self-build
You also have the option to install FME Flow from scratch across Azure services yourself. You may wish to review our Marketplace offerings or documentation for examples and guidance on how you can install FME Flow.
This would be a solution for someone who is looking to install FME Flow in a significantly different way from the marketplace offerings or ARM templates. This will also suit users who do not have experience with, or do not need IaC templates.
Containers
FME Flow has been adapted to support containerized deployments for several years now, making it easy to use Docker or Kubernetes. Our FME Flow components are built on Linux containers. If you rely on any formats that require a Windows OS or third-party plugins, you will need to reevaluate this solution.
Azure Containers
Azure Container Service allows you to host containers on the cloud. From docker.com, “A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another”. With FME Flow, each component is packaged into one container. There will be one container for the FME Flow Core, one for each engine, and so on. Docker-Compose is a way of running multi-container applications (which FME Flow is).
Azure Containers supports Docker Compose, and you can visit their documentation for how to do this. FME Flow Docker Compose files are available here.
Docker is a solution for those looking to quickly start a containerized version of FME Flow using Docker Compose. This would be a good starting point if you’re interested in a containerized FME Flow deployment and are able to manage your own containers, without needing to manage virtual machines. If you want to run containers in production and you need FME Flow to be highly available, you may want to consider using Kubernetes.
Azure Kubernetes Service
Kubernetes (or K8S) offers additional benefits over Docker for production environments by providing a single control plane to manage all your containers. The control plane is used to orchestrate containers and can schedule and automate Kubernetes deployments, as well as manage networking, load balancing, security, and scaling. Kubernetes has self-healing capabilities, so if it detects that a container is unhealthy, it will replace it with a new one.
- For more information on AKS, please visit this link.
- FME Flow documentation for AKS can be found here.
We recommend Kubernetes for customers who have expertise in this area within their organisation and already have experience in setting up clusters and deploying applications into Kubernetes. Kubernetes has benefits over Docker that make it more suited to fault-tolerant multi-container applications where demand may not be constant.
Hosted FME Flow - FME Flow Hosted
If your organisation is embracing the cloud and you don’t want to manage FME Flow yourself, FME Flow Hosted might still be a good solution for you. Whilst FME Flow Hosted is hosted in AWS, if your Azure infrastructure and FME Flow Hosted are both hosted in the same geographic region, then network performance is still excellent. Find out more here.
This article might be a good reference material: Feature Comparison: FME Flow and FME Flow Hosted