Data Migration understood in a software development context is a process of porting data from one component of the system to another component of a system. Migration can be done between two separate systems that need to move data, or between two versions of the same system during a software version upgrade. Typical use cases are:
- Moving data from a legacy system out to a newly created system that will be used from now on (Go Live Migration)
- Moving data from previous version of a database scheme to a newer version where data structures have to be adjusted
- Moving a subset of data for a tenant in a multitenant system or SaaS. Typical when switching SaaS providers or seeding account with existing data
If the migration is a not one-time operation, then typically we would not name it migration but replication.
Data Replication is a type of backend integration that deals specifically with transferring a large number of data entries between landscape systems for operational purposes. Microservices also use data replication to some extent. In cases where we want to completely separate data models between components, replication allows to transfer data in a near real-time manner. Typically, we see two types of replication:
- Data replication in master/slave mode between whole systems in a landscape or between business parties
(big complex migration with many objects) - Data replication between microservices to achieve local data independency (small models 1-2 entities)
Do you want to risk rolling back an entire Go Live of a system because of a failed migration?
Do you want to suffer system errors and complete system block because of wrong data?
Imagine users complaining that records are not updated in their system, or customers complaining about services not working because of old data. Or worse: Money discrepancies between systems in the financial services industry that raise fraud questions and contract disputes?
Technologies & tools that we typically use in our migration and replication projects.