(Originally written for and published on Headspring’s blog)

A key question any CIO has faced over the last few years is: Are your systems ready to move to the cloud?

public goals

It’s not one that can be put off any more. Platforms have matured tremendously and costs have fallen to the point where the advantages outweigh the risks.

I have worked on several cloud migration projects and found that nearly every organization will go through a few hard knocks before they can see any benefits. The good news is, you can now benefit from the accumulated lessons that the industry has learned over the past decade. The first and most critical step: create your migration roadmap.

As a quick primer, I detail here some lessons I’ve learned the hard way:

1. Focus on good application architecture

Re-platforming to the cloud requires that you start thinking in service-oriented architecture terms. Legacy apps have accumulated a lot of dependencies over the years that have to be discovered and unwound. Luckily, this is also where the highest benefits are to be gained. A client of mine saw a 10% increase in monthly revenue by converting their internal print/mail process into a cloud service, and offering it as a product to clients and even competitors.

2. Emphasize testing and monitoring

We once had to fix a bug in a CRM app where the login page was timing out for their 800 sales agents. The code looked fine, the unit tests were passing, and there was no network latency affecting performance. Some load testing revealed the real culprit: one line of errant code in our login service that didn’t handle threads over a certain threshold. Lesson learned: stress-test your services and put as much monitoring around them as you can. Identify your points of failure before they become real issues.

3. Focus on uptime, not SLAs

Google the term “top 10 cloud outages” and you’ll see that cloud infrastructure is still fallible. I remember the AWS outage of 2011. For 3 days, our users were unable to access the app, and we couldn’t ship any code at all because our repository was on the cloud. 3 days! This lesson bears repeating: SLAs are no guarantee against unplanned outages. You need a Disaster Recovery plan.

4. Bridge the IT experience gap

As a way to kickstart the mindset shift within IT, begin using cloud services as part of the daily development process. Your team should think of ways in which they can start using IaaS and PaaS for their benefit. For example:

  • Rapid prototyping. We often deploy our in-progress app to the cloud where our users can see it, interact directly with it, and give us feedback faster. The ability to spin up new environments on demand is a huge benefit.
  • Continuous delivery. Put your build server on the cloud. Run your tests and deploy automatically from the cloud. This ensures the team is ready to deploy at any time.

5. Rely on partner expertise

Whether it be a simple guide like this one, reaching out to your current list of AD&D partners, or soliciting a vendor with this specific expertise, there are resources available to you. Rarely have I discovered an expectation that internal IT groups are expected to know it all. You ultimately get the benefit and credibility of expertise, especially in what would be considered a risky project to your organization.