- Blog
- 08.02.2018
- Data Fundamentals, Dev Dialogues
Deployment Options in Matillion ETL - Using Multiple Instances
This is the third blog in a three-part series on Matillion ETL deployment options. This article describes the third of three commonly-used choices for how to manage and deploy your Matillion solution between multiple environments, for example, development - test - production. Note that in this series we’re looking exclusively at options which are available through Matillion ETL’s web user interface. Additional options are available using Matillion’s REST API.
In order to describe the details, first a few definitions. What’s a Matillion “instance”? What do we actually mean by “Matillion code”? And what’s a “Project” as opposed to an “Environment”?
Every running Matillion ETL VM is one Instance.
By launching the product repeatedly you can choose to have more than one Matillion Instance running at the same time, and that’s the code deployment scenario being described in this article.
Orchestration jobs fulfill an additional command-and-control function: they define the overall sequence of events and can be scheduled. Orchestration jobs can call Transformation jobs as part of their work.
“Matillion Code” means the definition of the Orchestration and Transformation Jobs that you are using. Matillion Jobs always exist inside a Project.
You’ll need to select a Group, a Project and a Version. In the above screenshot, these are:
When you first launched and connected to a new Matillion ETL Instance, you went through an initial configuration screen. This asked for details of the target data warehouse plus a couple of other configuration items. For this reason, you’ll always have at least one Environment.
When deploying code through multiple Matillion ETL instances, it’s highly recommended that you create one Environment per Project, pointing to the target data warehouse for which the instance was created (development, test or production).
You can manage environments through the right-click context menu. The Edit Environment option will take you back to that initial configuration screen, where you can change the settings if necessary.
You can add, edit and remove Environments using these options.
Note that:
Once completed, you'll have two running Matillion instances, both with the same Project Group (ideally named after your company), and the same-named Project:
You can also get to the same dialog by following the Project / Export menu. The dialog allows you to select one or more Jobs to be saved and downloaded as a JSON file. You can put this file into external version control.
From the Project / Import menu, you can import a Matillion-generated JSON file, and choose which jobs to import into the target Project.
Matillion also has various REST API endpoints for exporting and importing Jobs. These are used for automation, although be aware that API-generated metadata formats are not compatible with the UI-based export and import.
Similarly, while logged into the Production instance, the same variable can exist, but with a default value (for the Production environment this time) set to prod_schema.
So, instead of hardcoding the schema name of a Table Input component, for example, you could set it to ${target_schema}
Then, in Development the Table Input would automatically read from the dev_schema, and once deployed into the Production instance it would automatically start to read from the prod_schema with no code change required.
Incidentally, this is why when you export an Environment Variable, the default value is not among the properties that get saved into the JSON export file.
With this method, you create multiple Matillion Instances. For example: one instance for Development one instance for QA one instance for Production Every Matillion Instance contains a parallel, independent set of metadata. You promote code between instances once it has been developed and tested. |
---|
Definition of a Matillion ETL Instance
When you purchase Matillion ETL, you actually have to do two things:- Take the option to launch the product, by accepting the EULA.
- Launch the product.

Orchestration and Transformation Jobs
Every Matillion Instance is an ELT tool: it does two main things on your behalf:- Data ingestion - in other words loading data from external sources into the database
- Data transformation - getting your data ready for visualization or analysis, for example, integration, reshaping, applying business rules, aggregation, and deriving calculated fields.

Matillion Projects
A Project is simply a collection of metadata. When you’re working in a Matillion ETL Instance you are always within the context of a Project. When you log in, it’s the first dialog that pops up after the login credentials.
- Group: Matillion
- Project: Development
- Version: default
- Orchestration and Transformation Job definitions
- Folder structure
- One or more Environments
What’s a Matillion Environment?
A Matillion Environment defines a target data warehouse. To manage your Environments you’ll need to expand the panel at the bottom left of the screen, which is minimized by default.

- Every Matillion ETL Instance has an overall cap on the total number of environments that may exist. The cap depends upon the instance size. If you have used multiple Projects then each Project will have at least one Environment, and they all count towards the cap (even if they are actually pointing at exactly the same target).
- You are not permitted to delete the last Environment within a Project.
Solution Overview
With this code deployment option:- You launch multiple Matillion ETL Instances (one for development, one for test, one for production).
- Every Instance contains the same, parallel Groups and Projects (e.g. Company Name and Project Name).
- Every Project owns one corresponding Environment (development, test, production).
- You copy the code from one Instance into another once it’s ready to be promoted.

- A “Development” instance, in which the project owns an Environment named “Dev”, pointing to the Development target data warehouse.
- A “Production” instance, in which the project owns an Environment named “Production”, pointing to the Production target data warehouse.
- Dev → Production
- Dev → System Test → Production
- Dev → System Test → UAT → Production
Exporting and Importing Jobs
Matillion ETL’s mechanism for copying job metadata from one Instance (or Project) into another is via the Export/Import feature. While editing a Job, you can find the Export option from the right-click context menu:
By default, the jobs will be added into the same folder structure as they were at the source. You’ll find it easiest to maintain exactly the same folder structure in the Development instance as in the Production instance. |
---|
A note on Environment Variables
Environment variables have a very useful feature in that you can set a different default per Environment. While logged into the Development instance, your Project might have a variable named target_schema. Its default value (for the Dev environment) is set to dev_schema.


Summary
When you use multiple Matillion Instances to manage code deployment, you effectively set up multiple parallel copies of the codebase, each copy pointing to a different target data warehouse (dev, test or production). You control exactly when and what code gets promoted into the different environments. Also, you can take advantage of the Environment Variable feature which allows you to automatically customize job behavior according to where it is running. Normal backup mechanisms still work and are still recommended. Metadata items such as user logins, OAuth credentials, and the Password Manager are instance-wide and automatically apply to every Project. You can take advantage of this for example to:- Restrict access to the Production instance to only DevOps personnel
- Automatically have Development data taken from Sandbox data sources, and Production data coming from live sources
Other Methods of Code Deployment
Begin your data journey
Want to see Matillion ETL in action? Request a free 1hr demo today!
Ian Funnell
Manager of Developer Relations
Featured Resources
eBooks
10 Best Practices for Maintaining Data Pipelines
Mastering Data Pipeline Maintenance: A Comprehensive GuideBeyond ...
NewsMatillion Adds AI Power to Pipelines with Amazon Bedrock
Data Productivity Cloud adds Amazon Bedrock to no-code generative ...
BlogData Mesh vs. Data Fabric: Which Approach Is Right for Your Organization? Part 3
In our recent exploration, we've thoroughly analyzed two key ...
Share: