The software industry is undergoing constant development. Accompanying this change are the growing needs of your organisation, which can only be met with the most efficient software infrastructure solutions. Regardless of whether or not you have started to automate your operations, or reach the next level of your organisational complexity, you will inevitably find that the topic of software migration is challenging both for your management and the agility of your organization as a whole. This article aims to act as your guide through the software migration process, and provide expertise to help you achieve better infrastructure solutions.
What is a software migration?
You may wonder what a software migration is, and why your organization needs one. There are certain situations during the expansion of your organization that requires a rethink of your company’s infrastructure. Some components of your infrastructure might become obsolete at certain stages of your company’s growth. Consider the software upgrades that your organization relies upon. Some software upgrades are automated in their entirety and the individuals responsible for them can handle them as part of their day-to-day routine. In this article, we will look at software changes which involve major decisions, planning and investment of time and money.
Why migrate your software?
Let’s investigate the common reasons for software migrations.
- Your organization might just be starting out; you have employed a few people, and you use a simple software like spreadsheets, shared document platforms, single-purpose proprietary desktop software. Now you need more coordination, data exchange, reporting and consistency.
- Your organization might use considerably outdated or even unsupported software. A software migration might be necessary for your system to continue operating due to security risks of unpatched vulnerabilities, and missing features.
- Your organization needs new features that are unavailable in currently used software. This might happen when the software you use does not meet your organization’s needs. Software updates provide many benefits, including the adoption of new processes, policies, organizational structure, and future objectives.
- The software you use is not efficient enough for carrying out your daily operations. As your organization grows, your software needs to be optimised, perform well, and streamline the company’s internal process.
- The software you use is not cost-effective enough to justify its current management and usage pattern. It is likely that you will find some integration or cloud-based software more economically appealing, and therefore transition to the new infrastructure that is needed.
- Your in-house software team developed a major update to your internal software products, motivated by facilitating future development and maintenance of products. To sustain the development and quality of your software, you might need to periodically introduce major technical improvements which come with the extra update phase of performing a migration to the new version.
- Your organization may use old or faulty hardware. You might be forced to replace old hardware. This not only involves the migration of software and data as they are, but also the new hardware that might come with the latest software migration. This process will become more complicated depending on the compatibility of your existing software.
- There is a security or data breach and your infrastructure is compromised; it becomes vulnerable. You may have no choice but to look for some other distinguished vendor or custom solutions which include significant software changes that protect the system from future threats. These changes often lead an organisation to a migration plan with sophisticated security measures.
How to plan for software migration?
Software migration is complex, and inexperienced teams can easily and unknowingly fall into pitfalls. Consult the following points to gain a better understanding of what you need to account for when preparing for a successful software migration.
- Make sure that you have a reliable backup infrastructure. Ensure that your backups are up to date, and can accommodate for extra usage during migration when lots of temporary and intermediary data will be generated.
- Gather as much information as possible on the impact that software migration is predicted to have on your organisation. These include: people and knowledge required, expected (measurable) result, cost, time, risk of failure, rollback strategies, dropped functionality and exact stages of the migration process. These not only provide a good basis for effective communication, but more importantly they enable organisations to recognise whether or not migration is possible at all.
- Look for any proprietary data formats in use, and assess how this data is positioned within the new infrastructure. Data might be compatible, or require transformation. Some data might need to be re-entered manually.
- Be prepared for simultaneous operations of old and new software, as is the case for any non-trivial migration. You can decide whether some data needs to be duplicated, temporarily synchronised or dropped (and archived).
- Investigate the use of ready migration tools from vendors that you trust. There are many excellent software packages available which can speed up migration. However, you must be careful not to introduce any obstacles for migrating other software or data in a way that will defeat the purpose of the migration.
- Gather any existing documentation (technical and functional) on your old software, and write down any changes that are expected to happen or need to be made available alongside the new software. It is often the case that software is not properly documented, and you will need to seek a better understanding of it from those already using or maintaining it.
- Evaluate existing software for any unused features or useless capabilities. You can make your migration simpler and faster by not migrating what is not necessary.
- Find the best time frame for planned downtime during critical infrastructure updates. Secure as much time as needed for successful migration and hypothetical rollback action. This is usually scheduled for when your organisation exhibits the least activity, or during the processing of secondary workload.
- Plan ahead for any suitable training and feedback opportunities for users of the new software. Let them reach you with any issues early on, before any irreversible change is made to their operating environment.
- Plan for testing after each phase of the process. Involve end-users and automated software tests.
- Make sure you have at least one critical reason for migrating. Without a clear goal, resistance to change will eventually inhibit or interrupt the migration process.
How to scope software migration?
The complexity of software migration usually hides itself in the multitude of software components and packages that need to be replaced or updated. It is important not to miss out on any component of the migration process so that it can be completed successfully. The following includes situations that might arise during software migration;
- A single application or a tightly integrated application suite could need to be migrated at once and might not have a simple procedure to achieve this. Usually, the challenge here is to identify a common data format, and orchestrate the deployment of new software and removal of old software.
- A change to the infrastructure vendor, such as the change of a hosting or cloud provider, or a migration to a virtual environment. Here we have to find compatibility with a new software platform or software environment. The risk is not all software can be installed on every type of infrastructure, and replacement might also not be available. Often software needs to be rewritten for new infrastructure.
- A change to the operating system. Similar to the infrastructure vendor change, you are likely to struggle with finding all of the replacement software. You can mitigate this by virtualizing old software or emulation. The most significant issue might arise for users when they are trying to learn and adapt to the new working environment.
- A change to data storage. Depending on the level of integration with application software (whether it is a database or general-purpose storage), data storage might evolve into any type of migration, including rewriting applications. The main concern nevertheless is to find a common data format that will either facilitate the transition, or become the target format for the new storage.
How to perform software migration?
Now that we know how to prepare for successful migration we need to understand what can happen in a real-world scenario, i.e. what might fail and how to act against this failure. Even the most diligent planning and investigation process cannot predict the future, and thus additional attention must be present during the migration process itself.
- The documentation accompanying existing software and processes might be inaccurate or outdated. Dividing the process into stages enables you to act case by case with such scenarios. More importantly, you should have a good understanding of the organisation’s actual needs, in order to find the best solutions to the confusion created by bad documentation. Reshaping the software and finding alternatives can support this process.
- The new software might be underperforming when configured for use in your organisation. When this happens, it should be resolved as soon as possible because having installed additional components, you will find it harder to investigate performance issues. Do not neglect gathering statistics and monitoring error logs. Addressing even minor infrastructure errors will greatly reduce the chance for your migration to fail due to performance issues.
- Synchronisation issues might occur when some of your old software is producing multiple sets of data, which your new system cannot handle. During this intermittent period when you have to maintain both old and new infrastructure, you might underestimate the quantity and frequency of the synchronization required. To remedy this, synchronize using batches, filter out unnecessary data or switch your focus to migrating key systems first.
- Some infrastructure changes might not support parts of your business logic implementation. This might be a particular problem with cloud and virtual environments. Providers can update their services and software at their discretion, and this might leave you with an implementation issue. This issue is easily resolved when you can use some replacement technology from your provider. However, it is good practice to always have an environment available of unconstrained technology that is ready to be integrated. Doing this makes the migration process economically feasible.
- A software migration might be bound with the relocation of resources to different geographical areas. If a service supplier of your choice doesn’t always provide you with the best (closest) locations to host your infrastructure, you might need to compensate for this lost availability. Different methods of compensation include using your own caching, duplication or even investing in a hybrid environment where some of the software is hosted on-premise and some on the provider’s infrastructure. It is wise to always host at least some of your own infrastructure.
- Cloud infrastructure might provide unexpected costs. Due to their subscription-based, pay-as-you-go payment models you can be surprised by figures of resource utilization (and cost) in your production environment, which cannot be fully emulated in staging and testing environments. The more software services you use, the more sudden and unpredictable the rise in operating costs might be. To execute some control over it, make sure to set up some warning limits, billing methods and accounts that will eventually block the excess expense. Investigate options to down-size your infrastructure automatically to ensure minimal availability while investigating the remedy.
- Suboptimal license usage can lead to a lower level of availability of your new infrastructure. Some software services are licensed per user, and per session and others use different methods that can be optimized by your software. Your software vendor might not disclose every aspect of guarding the correct license usage, and your production environment might be impacted by a shortage of ready to allocate access permissions. Modify your client’s software to find the most economically justifiable policy of license utilization. If this is not possible, prepare for an account sharing scheme.
- An inadvertent data loss resulting in missing information or application malfunctioning might occur. Some new software installations and deployment practices rely on the recreation of environmental and data structures. This will be impacted by the loss of user data and configuration. Assuming you perform backups, it is a good idea to maintain them in a format suitable for new infrastructure, and supplement your deployment strategy with full data and configuration recovery. Document any misconfiguration that can happen due to missing or incomplete data to ease troubleshooting in the future. Be ready to deliver a backup environment that is synchronized with production. This can buy you time when resolving data corruption in the original environment.
- The time needed to complete a migration could be underestimated. Act swiftly and identify the essentials that contribute to the overall success of the migration. Proactively modify your plan to optimize its execution and be prepared to change a few key decisions, even service providers, if it provides the flexibility that meets your time constraints.
- Poor data quality might be discovered. It is sometimes not possible to scan and validate all of the data stored on the original infrastructure. During data migration, the target system might not accept the level of data quality your data meets. You may be forced to limit the utilization of data or provide some transformation that will improve it. However, you might have to resort to manual data fixes and improvement completed by a competent entity.
- Poor testing could also occur. Relying on actual users and software automated tests to carry out software tests might not be sufficient for providing proper verification of future infrastructure. Some rare edge cases and limited knowledge on the workings of current infrastructure contribute to sudden failure while using the new software. Be sure to have an accessible issue reporting system to be notified on the issues early on, and fix them while their quantity is manageable.