Originally published by New Context.
The agile methodology was created to help software development teams work faster and adapt to the constant requirement changes that occur over the life of a development project, but it can also be used to help organizations optimize their cloud migrations. Organizations face many challenges when it comes to migrating their workloads to the cloud, including the financial and time costs of devoting crucial technical resources to the project. That’s why many organizations are optimizing the speed, efficiency, and adaptability of their cloud migrations by implementing an agile development cycle.
A cloud migration is more of a marathon than a sprint. The migration process can be disruptive to workflows and introduce significant change to organizations. That’s why we recommend implementing an agile development cycle, which lets you learn, iterate, and accelerate the individual processes involved in a cloud migration.
The agile development cycle allows you to break up the execution of a cloud migration into a series of small, well-defined, testable, and repeatable processes. This means every aspect of the cloud migration will be performed in short sprints, so you can quickly identify and fix issues and optimize the speed and efficiency of your migration as you go.
There are a few different models for the agile development cycle, but they generally follow the same iterative formula. Multiple iterations will take place, with each iteration providing the next piece of the cloud migration puzzle until the final project is complete. Each iteration is limited in time and scope and will have its own workflow, allowing for quick and painless changes when needed.
A typical agile development cycle contains five stages: project conception, planning, development and testing, production, and retirement. Some agile approaches will break down these stages even further, and not every iteration will reach every stage of the cycle. The purpose of the agile development cycle is to be more flexible, so adapting the process to your project’s needs is crucial for an agile cloud migration.
The first stage of the agile development cycle is the conception of the project. At the beginning, you’ll identify the pain points that you want to address with your cloud migration—such as infrastructure scalability and disaster recovery—and get buy-in from key players like executives and department heads. As you move into future iterations of the agile cycle, this stage is when you’ll identify and prioritize each workload or service that needs to be migrated to the cloud.
The next stage of the agile development cycle is the planning and inception of the project. You need to build out your team, put the necessary funding into place, and discuss and finalize the requirements. To keep your team and project agile, you’ll want to ensure at this stage that the scope for each iteration isn’t too large, and that your development milestones are easily achievable. Successfully planning each iteration of the agile development cycle is critical for ensuring you’re able to make quick changes and pivot your focus when needed.
The development and testing stage is when your teams will get to work implementing your cloud migration. In any cloud implementation, your emphasis during this phase should be automated provisioning or infrastructure as code. With an agile development cycle, it’s also important to perform QA testing with every single iteration so you catch and address any issues before they affect future iterations. In addition, this is when you should be creating your documentation, and, after QA testing is complete, this is when you’ll train your internal and/or external users on any changes to their workflows.
At this stage, you’ve completed the work of migrating workloads to the cloud and you’re now supporting users in production. Feedback should be gathered from users during the production stage so you can ensure their needs are met in future iterations of the project. Every iteration of your agile cloud migration will sit at the production stage until the product or service is ready to be retired.
The last stage of the agile development cycle involves all the end-of-life activities for your cloud services, including customer notification and, if necessary, migration to a new service. Unless you decide to move any of these workloads back to on-premises operations, you should ideally be starting a new agile development iteration when you migrate a service from one cloud platform to another. Thus the agile development cycle repeats itself.
The agile development cycle should stay in place from the conception of the cloud migration project until the service or workload you’ve migrated is decommissioned. This ensures that your teams are always ready to update, change, or move your cloud services as soon as the need arises.
If your organization has never implemented an agile development cycle before, it can be challenging to get everyone on board with adopting these changes, but early buy-in from everyone on the team is critical. Everyone from the executives to the engineers needs to commit to following the agile development cycle through each iteration of the cloud migration, otherwise it can be easy to slide back into less-agile practices. An agile cloud migration shouldn’t be a one-time task that’s crossed off a list, but an ongoing process that lasts until you decommission the product or service.
Make sure you’re breaking down your cloud migration into small enough pieces. Each iteration should focus on a specific element of the migration, so that each workload or application you migrate is handled individually with care and precision. Remember that by limiting the scope of each iteration, you’re making it easier for the team to pivot their focus whenever necessary. You should always analyze what has been delivered and learn from that effort as you move into the next iteration.
Finally, ensure that your cross-functional teams are communicating with each other throughout every iteration of the migration. It’s crucial that everyone is on the same page so that teams can adapt to changes quickly and painlessly without stepping on each other’s toes. Open communication between teams also provides more opportunities for collaboration and problem solving, which can help optimize a complicated cloud migration.
One final note on using the agile development cycle to optimize your cloud migration—don’t sacrifice security for speed. Maintaining the privacy and security of your data as it is migrated to the cloud is critical, and it can only be done through robust planning and thoughtful execution.
Level up your Salesforce DevOps skills with our resource library.