The appeal of developing a Cloud strategy comes in the form of durability, flexibility, agility, security, the ability to scale horizontally, and cost savings. With so many benefits, it is tempting to jump straight to the punchline and educate you on how to make the migration. Before talking about moving an application to the Cloud, however, it is important to evaluate your current state and consider all potential risks, challenges, costs, and benefits.
In this article, I will walk you through the entire process from pre-migration considerations to a point where you are taking advantage of all the Cloud has to offer (and everything in-between).
If the application or website is currently being colocated at a dedicated hosting solution, then the business case for Cloud migration should be pretty obvious. Since you are currently pushing the site to a colocation center, it is clearly portable enough to move to a cloud solution. You will need to consider cost, but the additional benefits of a Cloud based solution include:
- Paying only for what you use
- On-demand scalability
- Durability / Failover
- Disaster Recovery
If the application is hosted on-premise, you might not be in a position to move to the cloud for a number of reasons.
- You may have just invested in new hardware
- The application might be tightly coupled to on-premise resources
- The application might not be portable and moving it would incur significant costs
Having an application that isn’t portable or is tightly coupled to any on-premise resources presents some concerns about architectural decisions. Those issues will surface if there is a server failure. If that server is disabled, it will take quite a bit of time to recreate the environment and then restore the application. For that reason alone, you should consider paying down the technical debt to make that application more portable.
It’s critical that before you get started on a Cloud migration you create a roadmap. If you are following an Agile/Scrum approach to development, you should make sure that the different stages of your roadmap can be completed within a sprint.
Take Your First Step
The first step is to identify the smallest possible actions you can take that will still add value. A couple of ideas are to:
Migrate the Database: Migrating the database is probably the easiest way to get started. If your application is properly architected using a 3-tier structure, you more than likely are just using the database as a storage repository.
You will need to migrate the database for each individual environment one at a time. If you have automated unit tests and confidence in your test coverage, this should be a fairly easy thing to accomplish.
Migrate Static Content: If you have any static content to your applications, this could be a good place to start your Cloud migration. By utilizing the storage options on the various Cloud platforms, you can achieve great results in being able to push that content out like a content delivery network (CDN). Some of the examples of when to use this approach include completely static websites or sharing static files.
Migrate your Testing and Staging Environments
Now that you’ve started with a small yet impactful first step, it’s time to think about moving your various Test and Staging environments to the Cloud. You should make each of these moves individually.
By recreating your various staging/testing environments in the Cloud, you can make the move without any risk. You shouldn’t destroy your on-premise staging/testing environment until you are confident that the Cloud based versions are working. Therefore, if an issue arises with your Cloud environments, you can fall back to on-premises.
Virtualize (if necessary) and Fork Lift “As-Is”
Now, you are ready to make the big move and push the production environment into the Cloud. If your application is already hosted on a VM, it should be a pretty straightforward task to take a backup of the existing web server and restore it onto production.
While this is a straightforward approach and is definitely a quick way to get your app onto the Cloud, you should consider whether or not there are any external dependencies.
If the application is dependent on Active Directory or requires access to some on-premise file repository, then this migration isn’t going to be simple. It will require some aforethought as to how to extend those dependencies into the Cloud. This might be an opportunity to increase value for the organization. In the case of file repository, this could open the door to creating a hybrid Cloud solution that involves storing that content on-premise and on the Cloud. By doing so you can have the file repository accessible locally but also get the durability of storing those files on the Cloud.
Extend to Maximize the Cloud
At this point, you’ve taken advantage of the entry level Cloud offerings. You’ve increased your organization’s agility, reduced the cost, moved Capex budget to Opex. All good things. But are you done?
Nope. Now you need to take it to the next level. How? By leveraging some of the more interesting tools that provide automated horizontal scaling, load balancing, and dynamic DNS routing. Once you’ve established a VM in Cloud that you can auto scale, a number of really exciting opportunities arise. You can scale horizontally, create cost effective disaster recovery solutions, and increase your reach globally.
With your initial footprint in the Cloud, you can extend your existing application by leveraging tools such as notifications or workflows. A truly portable application allows you to leverage more DevOps tools and incorporate continuous integration and continuous deployment.
Planning your Cloud strategy is a large undertaking that should not be minimized. Doing the research and planning up front will take you a long way towards maximizing the benefits of Cloud technology in 2017.