Introduction and definition
This is the start of a short article series on the complex topic of software migration. The goal is to lay out the many aspects that matter for a successful migration project — starting broadly and then becoming more specific, with a focus on the tech stacks where evanto media GmbH can offer professional support.
| Part 1 | Introduction (this post) |
| Part 2 | Considerations before a migration project |
| Part 3 | Phases of a software migration project |
| Part 4 | Software migration in practice: .NET -> .NET Core |
| Part 5 | Migration is not everything: monitoring and telemetry |
First, what do we actually mean by migration (following [Rosenberger 2014])?
Software migration is an essential part of many organisations' IT strategy. It refers to moving an existing system — whether data, applications or other IT resources — into a different target environment, usually without changing its functional behaviour. This process is critical for keeping pace with constantly changing technological requirements and for improving efficiency.
An important caveat: from a user's perspective, a software migration does not necessarily deliver immediate added value. Rather, it can lay the foundation for future evolution — making the system more agile and more capable down the line.
Reasons for migrating
The reasons why a software migration becomes necessary can be varied, and in our experience are driven by a mix of stakeholders and conditions within an organisation:
External factors:
Changing environment of the system: Changes in the surrounding environment — new operating systems, database versions, or other infrastructure components. A current example is the end of support for Windows Server 2012R2.
Security, data protection or other compliance aspects: New legal requirements (such as GDPR) or security standards may require updates or changes to specific processes, storage methods, or protocols inside the software.
End of support or licences: End of support for a particular software version, or expiring licences, force an update or migration (again, Windows Server 2012R2 is a typical example).
IT:
Move to a cloud environment: Adopting cloud-specific technologies and tools is often required for optimal, cost-efficient use of the various cloud environments (AWS, Azure and friends).
Need for more capable IT resources: Moving to more powerful hardware or infrastructure often goes hand in hand with an architecture change — for example towards microservices — to scale properly.
Original development team no longer available: When the original team is gone, migration can be needed to keep the software maintainable.
Switch to a different architecture: Moving from monolithic to microservices-based systems is a clear trigger for a migration project.
Users:
Outdated UI: Outdated user interfaces (app or web UI) can make a migration necessary to improve the user experience.
New, necessary interfaces: The need for new interfaces to external systems or services can require a software migration.
Foundation for extensions: A migration can serve as the basis for future extensions or adaptations that simply aren't possible on the current legacy system.
New user roles: New groups of users need to be supported.
Management:
Consolidating IT systems: Consolidating systems and applications may require migrating them onto a single platform.
Cost reduction: When ongoing costs (e.g. licence fees) are high, a software migration aimed at reducing cost and improving efficiency is worthwhile.
This list is necessarily incomplete, but it should give a feel for the kinds of motivations involved.
Opportunities after a successful migration
A successful software migration should open up perspectives that justify the considerable investment usually involved:
Use of current technologies and frameworks: Migrating to a new platform or into a cloud environment with modern technologies makes development and maintenance easier and prepares the system for the future.
Scalability through virtualisation and cloud-readiness: Moving to the cloud (on-premise or remote) lets you scale resources on demand — a better, more flexible fit for changing requirements and load peaks.
Performance improvements: Using more capable IT resources and optimising the software architecture can produce noticeable performance gains, with a positive effect on the user experience.
Flexibility through restored adaptability: A successful migration restores the flexibility and adaptability of the software, which makes future development and adaptation to user needs much easier.
Cost optimisation through more efficient processes: Specifically: reduced maintenance effort, lower licence costs, optimised resource use and automated workflows.
Security improvements through modern protocols and security solutions: A current software environment allows you to use modern security protocols and solutions — a noticeable improvement in security and in compliance with data protection standards.
Process optimisation: More efficient development and deployment processes through standardisation (think Continuous Integration / Continuous Deployment, CI/CD), which also improves traceability and testability.
Better data protection (GDPR compliance): Data protection requirements such as those defined in GDPR can be implemented more effectively after a successful migration — ultimately protecting your organisation from legal risk.
These opportunities should make it clear that a carefully planned and executed software migration can bring substantial benefits in terms of competitiveness, efficiency and security.
Part 2 of the series: Considerations before a migration project
References
[Lilienthal & Schwentner 2023]
Lilienthal, Carola; Schwentner, Henning — Domain Driven Transformation, dpunkt.verlag, 2023
[Rosenberger 2014]
Rosenberger, Marcel — Software Migrationen, Diplomica Verlag, 2014
[DAS 2023]
Das, Mukesh Kumar — Cloud Migration
[Art 2020]
Software Migration — A Complete Guide — 2020 Edition, The Art of Service, 2020