21 Best Practices for Your Cloud Migration
Practice makes permanent. -Bobby Robson
I’ve spent much of the last several months working with various AWS customers and teams on a holistic program that helps enterprises accelerate their cloud migration efforts. There are many aspects to this program, including (but not limited to) AWS services (e.g., AWS Database Migration Service, AWS Snowball, VM Import/Export), a migration methodology built by AWS Professional Services, a forthcoming “Migrating to AWS” training program, and partnerships with the tool providers and consulting shops accelerating cloud migrations for enterprises of all sizes and from every industry.
Today, I’m delighted to host a guest post from our very own Sadegh Nadimi, who has been kind enough to detail 21 best practices we’ve observed in enterprises executing large migrations to AWS. Without further ado . . .
Read My Book: Ahead in the Cloud: Best Practices for Navigating the Future of Enterprise IT
Over the last several years, AWS Professional Services has led and advised enterprises on hundreds of migration projects. This year, we have built a focused team of experts, called the AWS Professional Services Mass Migration team, specifically focused on assisting customers with large (hundreds of applications) migration initiatives.
Customers often wonder what some of the best practices are for migrating applications to AWS quickly and confidently. Although the organizational structure and business objectives of every enterprise varies, there are certain patterns and practices the Mass Migration team has learned that tend to ring true for every kind of company. Here’s a non-exhaustive list of some of these:
1. Have a clear vision of where IT and business should overlap in the future. Consider how this vision will influence your organization’s strategy; communicate it broadly. Being able to clearly share why the strategy is important to the organization is paramount. Check out “What Makes Good Leaders Great” for more insights.
2. Outline and share a clear cloud governance model. Identifying the broader team’s roles and responsibilities, as well as meeting your organization’s information security tenets of least-access privileges and separation of duties, goes a long way towards ensuring business objectives are met. It also allows you to incorporate the right controls to improve your security posture. You’ll need to answer numerous questions before opening up the floodgates for internal users to consume cloud services. How many AWS accounts should you have? Who will have access to what? How will you grant that access? Reach out to AWS to learn about best practices and pros and cons of each approach when it comes to governing in the cloud.
3. Train staff early in the process. The more knowledgeable your teams are around AWS, the smoother the transition; the more internal evangelists you have on your side, the easier it will be to dissipate FUD and break down barriers. This process needs to happen early in the Journey, before you make organizational-wide decisions on the future state of your IT landscape in AWS. For more on training, see “You already have the people you need to succeed in the Cloud.”
4. Spend time and effort outlining how operations will take shape in AWS. Look at processes that may need to be modified or revamped, operational tools that will assist you in the cloud, and any level of operational training that will empower your team. Thinking about operations upfront lets you focus on the big picture and make sure your environments are aligning with the overall business strategy.
5. Know which IT assets you currently own and which you’re including in each migration. This is so you can fully quantify and measure the success of your cloud adoption. Invest time in finding the right discovery tools (such as Risc Networks’ CloudScape , ScienceLogic’s CloudMapper, AWS Application Discovery Service) and updating your inventory of applications. This will streamline the migration planning efforts and minimize risks of missing a dependency during the migration.
6. Select the right partner(s) to help you along the Journey. You should look for those that have not only the technical expertise and experience migrating to AWS, but also the right agile methodology and project management framework. You may already have partners in house with a cloud competency team. Allow yourself time to vet them and ask for references prior to selecting a cloud partner. Also think about the operational model you plan on adopting and whether the partner can help facilitate that model (building CI/CD pipelines, managed services). Check out The Future of Managed Services in the Cloud for more details.
7. Start small and simple. In other words, put some quick wins on the board. The more your staff becomes comfortable with AWS services, and the faster your stakeholders see the benefits, the easier it will be to “sell” the vision internally. To do so, you need consistency and transparency, and we see many organizations using a series of quick wins to get there.
8. Automate. The cloud’s agility is realized through automation. Spend time revisiting processes and establishing new ones that can take advantage of it as you migrate. If not all of your aspects can be automated, carefully determine which ones can, and empower your team to do so.
9. Approach the cloud as transformational. To do so, adjust your internal processes so that they’re able to embrace this technological change. Use that transformational nature to your advantage to align stakeholders with this new paradigm. And always be skeptical of those who say, “But we’ve always done it this way . . .”
10. Leverage fully managed services wherever possible. That includes ones like Amazon RDS, AWS Directory Service, and Amazon DynamoDB. Let AWS handle the day-to-day maintenance activities and free up your team to focus on what matters most: your customers.
11. Monitor everything. Having a comprehensive monitoring strategy in place will ensure you include every detail when it comes to robust architectures for you applications. Having data-driven insights into how your environment is performing will empower you to make smart business decisions when considering tradeoffs between performance and costs.
12. Use cloud-native monitoring tools. Numerous tools are available (e.g., New Relic, APPDYNAMICS, AWS CloudWatch Logs) that provide application-level insights and monitoring on AWS. Use the tools that best fit the business. Your operations people will thank you in the long run, and your business owners will have clearer data points to base their decisions on.
13. Leverage AWS enterprise support. The AWS Technical Account Managers (TAMs) and billing concierges, which are part of the enterprise-support package, are invaluable resources. They get to be part of your broader virtual cloud team and can provide a central point of contact and escalation path with AWS, as well as an invaluable source of technical information and guidance.
For Mass Migrations (For Those Migrating Hundred of Applications at Once)
14. Build a robust migration factory made up of teams, tools, and processes all centered around the migration activities. Document and share details with your organization prior to your first wave of migrations. You want to operate in an agile fashion to increase the velocity of the applications being moved to AWS. You also want to have proper safeguards in place to keep the migration momentum going, even where there are risks of slippage, such as when your staff takes time off or when tools don’t work as designed for specific workloads.
15. Provide leadership and set benchmarks for the migration factory. Consider establishing a program team (PMO) that manages the overall migration activities and ensures that proper communication and change procedures are adhered to. Also establish a Cloud Center of Excellence (CoE) to serve as the fulcrum of your migration efforts. The CoE may act in an advisory capacity for technical guidance, or, it can be more prescriptive, with members themselves participating in the migration efforts. The benefits of a CoE are discussed in greater detail in ”How to Create a Cloud Center of Excellence in Your Enterprise.” Ultimately, both the PMO and the CoE must be in place alongside the migration factory to ensure a successful migration project.
16. Have an onboarding process for new team members while the project is in full swing. Think of this as another form of training. You’ll also want a dedicated team for evaluating and approving tools that will be used in the migration factory. To optimize the results of your migration, also consider assigning a smaller team, beyond the Cloud CoE, to look for efficiencies and patterns unique to your environment. Depending on the scope and cadence of your sprints, the migration could take months, perhaps even years, to complete. You need to treat the migration factory as a living organism that is constantly evolving and improving.
17. Distribute talent judiciously across your sprint teams. This is to ensure you have enough breadth and depth around AWS services and the applications on-premises to handle minor hiccups during a sprint. Not having the right resources in a sprint can lead to uninformed decisions and cause chaos for all subsequent migration sprints.
18. Consider many different criteria when deciding on the migration strategy for a particular application. Think about the business objectives, the roadmap, risk posture, costs, etc. At a high level, you will either make a decision to move the application as-is or modify it in some fashion. For either option you choose, try to incorporate best practices for resiliency and cost savings wherever possible, and abstract the underlying infrastructure when you can. Some common options are auto-scaling, load-balancing, multi-AZ scenarios, and right-sizing EC2 instances. Empower your teams to leverage AWS best practices wherever it makes sense, and start optimizing as soon as possible.
19. Find patterns and create blueprints for them. As the team goes through the planning activities, certain migration patterns will emerge based on the strategy chosen. Creating re-usable blueprints for those patterns will increase the velocity of the workloads being migrated. And don’t forget to share them with the migration teams. This will allow the folks moving bits and bytes to really focus on speed and efficiency without having to make decisions around how to migrate applications that share similar characteristics.
20. Test your applications. A critical piece of the migration factory is the integration and validation of the workloads being deployed in the cloud. Each application component should go through a series of predetermined and well-documented tests. Obtaining sign-off from the business owners will be a lot smoother if you ask the application owners to provide you with the test plans early on in the project. Ideally, there will be one template that all application owners populate with their specific testing requirements. This will help in streamlining the validation activities and reassuring your business owners that their applications are performing similarly or better in AWS than on premises.
21. Ensure that a culture of over-communication is instilled in all teams involved. All migration decisions need to be clearly documented and signed off on. Alert the teams across the organization, even those not directly involved in the migration, to the fact that there will be outages and potentially new IP address/URLs to direct traffic towards. And don’t forget to notify any third parties that may have access to your systems.
Do you have other best practices that you’d like to share? We’d love to hear about them!