Just because you are running some workloads in the cloud does not mean you are realizing the benefits of cloud computing. It takes changes in process and governance, as well as in architecture design, and even philosophy to realize the benefits of cloud computing. Here are 5 of the benefits you will not get simply by moving your workloads to the cloud.
Agility is reportedly the number one reason why companies adopt cloud computing. But cloud computing will not make you agile; it only makes it easier to be agile. Developers can create new development and test environments (including by cloning a production environment) without waiting on market research, feasibility studies, capacity planning, new infrastructure, etc. Ideas can be tested quickly (including in the actual marketplace), and failure is fast and inexpensive.
However, if your methodology requires man-months of meetings to add a column to a database table (true story) then you are not agile even if your Project Managers are called Scrum Masters, your WBS is called a Backlog, the activities you are scheduling are called User Stories, you stand up during daily status meetings, and “demo” work in progress every couple of weeks (called Sprints). Even with cloud computing which does make using agile methodologies easier, it is still possible to mistake agile terminology for agile methodology, and not realize this benefit of cloud computing.
Cloud computing allows you to leverage scriptable (API-driven) infrastructure. If you are still relying on some kind of ticketing system or email to request provisioning and changes to your infrastructure, then you are not taking full advantage of this benefit. Cloud infrastructure, configuration management and deployment scripts should all be integral parts of your application. What that means is that they should be written by the same team (which may contain some specialized DevOps engineers) responsible for the rest of that application code, and versioned in subfolders of the application’s root folder in your source control system. When you are taking advantage of the automation benefit of cloud computing, each change to infrastructure and configuration will be associated with a revision number or tag or hash instead of with a ticket or request number.
Choosing a Global Software Development Partner to Accelerate Your Digital Strategy
To be successful and outpace the competition, you need a software development partner that excels in exactly the type of digital projects you are now faced with accelerating, and in the most cost effective and optimized way possible.
Get the Guide
Elasticity is a benefit of cloud computing that is almost impossible to realize in your own data center. If you buy enough infrastructure capacity to handle your peak loads (and assuming that you did not underestimate those peak loads), shutting some of it down when it is not needed will save some power, but it is usually not worth the effort.
Simply moving workloads from your data center to a cloud is usually not sufficient to take advantage of this benefit. Some architecture redesign of your applications is needed to ensure that you are not paying for cloud infrastructure that is not used, as well as to make sure that your application can scale to process loads of any size.
Deploying your workloads over multiple data centers on different Tier 1 networks, different power grids, different flood plains, different seismic zones, etc. is much easier when using a cloud computing provider, but it is not fully automatic. (It is for some services like Amazon S3 or Amazon DynamoDB, but not for others like Amazon EC2 or Amazon RDS.)
A good cloud computing architecture is designed to tolerate maximum amount of failure. Netflix has released into open source their Simian Army suite of tools for testing resiliency of applications deployed on AWS by actually causing system failures. Would you be comfortable running these tools in production? Even without these tools, you should definitely be testing for every failure your system should survive in at least development and UAT environments.
Focus on Core Competency instead of on Undifferentiated Heavy Lifting
The primary benefit of cloud computing is that it lets you focus on your business instead of the undifferentiated heavy lifting of IT. But evaluating cloud computing providers in order to select one or few of them also has nothing to do with your business. If you are doing that, you’ve just replaced one kind of undifferentiated heavy lifting for another.
If you have a cloud computing provider, and you would not use any service that provider does not offer yet, just stick with them.
Otherwise, just use Amazon Web Services. AWS is a clear leader in this space, and offers the most services you may need, with proven reliability and security that is good enough even for companies that are big enough to implement their own IT as a Service (ITaaS).
The price differences between different cloud computing providers are small. The margins and ROI of the solution you are building should make these differences insignificant. If they are not insignificant, you may have a bigger problem, and may want to reevaluate if building that particular solution is how you can add most value to your business.