Atlassian is introducing a new and simplified way to move app data around, designed to simplify, enable more code re-use by app partners, and allow for faster app migrations.
App Migration Building Blocks splits the concept of migrations into two parts:
Exporters and Importers form the Building Blocks which customers will be able to put together to support different types of data movement. An Exporter or Importer implementation can be re-used for multiple types of data movement, as long as they support the same export contract (i.e. data shape).
Unlike classic migrations, Building Blocks migrations have two separate concepts:
Because there can be multiple Movements in the same Flow, some data can be moved using a snapshot (first Movement) and diff (subsequent Movements in the same Flow). This can be extended further so that a snapshot created for one destination can be reused (and supplemented with diffs) when exporting to a second destination, allowing for data to be exported only once during a migration programme. This means that even for the first Movement of a Flow, the importer may receive a snapshot and deltas.
The basic unit of data flow in Building Blocks is an Event File. Event Files use JSONL, with a one-line header, followed by data records. Different types of data are split into different Event Files. Event Files typically contain 'upsert' (insert or update) records, and 'delete' records, allowing them to support both snapshots and subsequent diffs.
Event Files can reference 'Binary Files'. These are typically used to represent assets such as images or on-disk files. There is still a record in the Event File representing the upsert (or delete) of the file, but the upsert would refer to a Binary File by ID for the actual contents of the file.
The platform creates a JSONL file containing a list of all Event Files (filtered by File Group Label, which is introduced later). This file also contains metadata about the Event Files, so an Importer can decide whether or not it needs to read it. Note that most types of Event File accumulate across App Data Movements within the Flow, so the File List can contain Event Files that may have already been imported in a previous Movement. It is up to Importers to decide if they will always restart the import on every movement, or if they'll keep track of what's already been imported (by Event File ID) and skip those Event Files.
Every Event File is labelled with a 'File Group Label'. When all Event Files for the same File Group Label (for the current Movement) have been exported, the Exporter notifies the platform, and the platform notifies the Importers. This means that Importers can start processing one File Group while the Exporters are still processing another File Group. When Importers are notified of a File Group being complete, they receive a File List filtered by the File Group Label with the event.
Rate this page: