Seems everyone wants to move to the cloud but, should they move? It’s the classic answer: it depends. What workloads, projects and companies are best for the cloud? Certain companies and projects were designed for the cloud and others are not.
To start off I was going to give a definition of what the cloud is but instead I’m going to link to this wonderful blogpost that already explained it.
One of the best projects for the cloud is a quick project. The best example I have ever heard of was a newspaper that wanted to digitize their back-catalog. They had images of varying quality from their old issues and needed to clean them up and run OCR on them.
So the newspaper uploaded all the images to their cloud storage, ran their workloads overnight or over the weekend and got back their results. That project used so much computer resources that the company would have had to buy racks of servers or use their existing hardware and just wait for months for it to finish. They saved a ton of time, save a bunch of money and didn’t have any extra gear left over.
Also, startup companies are ideal for the public cloud. Physical gear is a huge CAPEX investment (large upfront cost). Then all that gear needs some place to go with lots of special power requirements, Internet connectivity and cooling. Startups don’t want to have to worry about all that and their investors want to limit the CAPEX spending.
The absolute best projects for the cloud have a workload with bursty traffic. Sometimes the spike in traffic is expected such as a retail website during December. Or your website gets some unexpected good PR and web traffic goes through the roof. If the public cloud environment is setup properly, it should be able to absorb that spike without any problems. It will cost a lot more to absorb that spike but with the alternative being not having the site available, it seems like a fair trade-off. The additional traffic should see an increase in people buying stuff or viewing ads so it should pay for itself and then some.
Refactoring Existing Projects for the Cloud
One of the best features of the public cloud is its high availability. There are so many features designed with high availability in mind such as Availability Zones, Load-Balancers, AutoScaling and more. Each one of these comes with an additional cost, you get what you pay for.
Current applications that move from onsite to the cloud need to be rewritten to take advantage of the cloud. Most companies believe that refactoring an old app is more expensive and time consuming than just putting the original application up in the cloud as is. It has its existing flaws but they’re probably right, it’ll never get rewritten.
Newly created applications that take advantage of modern design principles will perform better no matter where they are. An old, slow monolithic application that was slow and unresponsive won’t change if it’s moved to the cloud. So it is as much of a business decision as it is a technology one as to what to do with those applications.
An established company with an existing data center and mostly predictable traffic probably wouldn’t get a big advantage from a move to the cloud. It would be advantageous for them to explore moving some of their workload to the cloud but definitely not everything. These companies already have the physical hardware investment and they should leverage it. They should start experimenting in the cloud now so when it’s time for their hardware refresh, they know if they have another viable option.
Another option for an established company is to use their private data center to create their own private cloud. With a group of experienced developers and some time, they should be able to recreate most of the advantages of the public cloud. But I’m sure there are other companies out there that have created a turn-key solutions for just this scenario. Also there are many VARs out there that would love to take your company’s money to install it. If those other companies don’t exist, someone should create it and send me the royalty checks.
An established company that is interested in moving to the cloud has a lot to consider and a lot to learn. They will need to refactor their existing workloads. Start with refactoring individual parts of the applications. Maybe rewrite the app from scratch in the cloud and slowly move traffic over to it. See how it goes, make mistakes and learn from them. All of the lessons learned rewriting the applications will apply to other applications no matter where they reside.
Pricing and Security
Pricing and security have unique challenges in the public cloud and most of it comes from how complicated it is. The pay-as-you-go pricing model is very different from on-premises, the finance department may get sticker shock. With a private cloud, if one group runs up a huge bill, it’s a lot easier to deal with it since everyone shares the same finance department. With public cloud pricing, every little thing has a tiny cost and those things really add up.
As an example, a few months ago I was messing around on AWS all weekend and ran up a bill of $0.47. Almost half a whole dollar. I didn’t really mind, I learned a lot but was on the AWS free-tier and still had a bill. There were a few warnings about what was and wasn’t part of the free-tier but not enough of a guard-rail. My bill was fractions of a penny that went on for several pages. Because of that, there are now dozens of companies dedicated to helping others understand (and lower) their public cloud invoices.
Finally, there can be more security options in the public cloud but that turns into more ways to mess-up. It seems that most devices and APIs in the public cloud have different names but the same concept as the on-premises gear we are used to. That adds unneeded complexity. Also, all of the security fails that I know of are from user misconfiguration, not from insecurity in the system itself. Again there are new companies that are dedicated to helping others understand (and protect) their public cloud environments. The major cloud vendors offer security audits but they are not very customizable and are an additional cost.
Most people don’t think about the ramifications and just rush into things and the cloud isn’t any different. The public cloud is probably right for most people and companies but just know what you’re getting into. The cloud is awesome, move slowly so you and your team can find if it’s right for your needs.