Six Dangers of Cloud Migration

//Six Dangers of Cloud Migration

Transitioning to the Cloud is no small task. It is fraught with risk for any organization who makes the transition. At the same time, it is packed with an even greater amount of business value that an organization can extract when properly transitioned. When things go wrong, they are not immediately obvious, but usually are very costly. As a Cloud-first DevOps and Software consulting firm, we have a lot of experience with what works for organizations in the Cloud and what does not. So, if you are crossing the chasm, the following common pitfalls and tips will serve you well as you embark on your journey.

1. Lacking Automation

Not automating tasks that can be automated means that teams will be spend man hours on repetitive tasks that a computer could do for them. This means longer release cycles and lead times which costs the organization money in unnecessary man hours.  

Tip: The term DevOps signifies a culture shift mixed with a set of tooling that incorporates automation and enables closer alignment with business objectives. A Cloud migration is an ideal time to encourage a culture of DevOps in your organization. Notice that I said, “culture of DevOps”. What I didn’t say was “A DevOps guy” or “A DevOps Department”. DevOps is a culture in which every team owns their part in writing scripts for automating tasks. Here’s an incomplete list of tasks that can be automated:  

  • Building  
  • Testing  
  • Deploying  
  • Infrastructure Creation  
  • Application/Infrastructure Configuration  

2. Ineffective Org/Team Structure  

This is a tough one and directly pairs with having a DevOps culture. Realizing that this could require significant buy-in from upper-level management and upset your employees, this is no small change. Nevertheless, this is likely the most important change. An inappropriate structure could cost the organization dearly in man hours as a result of constraint between teams and departments.  

Tip: There is a lot of literature (including case studies) on how to structure an organization for maximum performance in conjunction with DevOps. There is not a one-size-fits-all for every organization, but there are a few shared key ideas among all the solutions.  If you get the structure right, you will reap rewards.

3. Poor Logging, Monitoring, and Alerting  

These all go together. Without any one of these, there is a massive blind spot in your applications and infrastructure, and you run the risk of losing customers. Without alerting, you risk significant amounts of downtime. Alerting is your watchtower that can sound the alarm when there is an urgent issue. Without monitoring, you risk not seeing trends and weaknesses in your application and infrastructure. Monitoring is a great preventative measure. Without logging, your teams will be shooting in the dark when a customer reports a bug. Logging is your team’s window into what the application and infrastructure is doing.  

Tip: Implementing logging, monitoring, and alerting is an investment. If you aren’t currently doing all three of these, they are all relatively easy to implement in the Cloud and will provide a huge organizational win. As a bonus, this will enable a new set of metrics for measuring the progress, status, and success of your applications.  

4. No Tests or Testing Late  

Testing late in the project schedule means that a lot of effort will have been spent on a solution that is not viable for the needs of the business and its users. In this case, the cost is wrapped up in man hours and late delivery of an application. To take it a step further, not testing at all means that your users are your testers. This is surely detrimental to your organization as it means that you are realizing all the detriments of testing late as well as losing customers to your competition who might have a more reliable product.  

Tip: Test early and often. There is a big movement in the world of testing known as shift left testing in which software communities have realized the value of performing testing as early as possible in the life-cycle of development.  

5. Large Scope of Work

Transitioning to the Cloud means that you are automatically implementing a new set of tools that are likely unfamiliar to your teams. A Cloud migration isn’t an ideal time to complete technical debt like refactoring, major bug fixes, or implementation of new technology. That goes without saying that it is also not a good time to completely rewrite legacy applications.   

Tip: Make your full transition in small, measurable, and incremental steps that minimize your work in progress. A great first step is to transition an application to the Cloud with as small of a set of changes as possible (or none if possible – yes, this includes legacy applications; consider the use of Docker where necessary).  

6. Not Measuring  

Without measuring, there is no way to truly know if your changes in processes, technologies, and teams are getting better or causing additional constraints that hinder success. It’s as simple as that.  

Tip: Many tools used for DevOps provide a way to measure something. Collectively, you can measure just about anything you can imagine. Where possible, measure anything and everything. Data is the best tool for understanding organizational performance. Make the most of your organizational efforts with data-backed proof for success.  

Closing  

If you are embarking on a journey to the Cloud, the tips in this article should serve as a great way to avoid the common pitfalls that organizations commonly experience early in their endeavors.  

If you seek more information or are struggling to implement the changes in this article with success, Nebbia Technology has several experts in creating organizational success using DevOps, and Cloud-first software development. We would love to assist you in navigating the many decisions involved in unlocking the full potential of your teams. Contact us if you would like more information on how we can assist with your transformation.  

 

By |2019-01-08T10:16:15+00:00December 27th, 2018|

About the Author:

Justin is a U.S. Air Force Veteran and a Full-Stack Software Developer who emphasizes simplistic code, robust end-to-end solutions, and maintainable architecture. He earned a Bachelor of Science in Computer Science from the University of Maryland University College and is a Certified Agile Professional through the International Consortium for Agile. In his previous roles, Justin has worked extensively in DevOps and Infrastructure, giving him a breadth of knowledge to bring entire systems together with seamless cohesion. You can find Justin at csrecap.com, tweet to him @FundamentalDev, or connect with him on LinkedIn.