If you have been keeping up with my blog posts as of recent, you may have noticed a consistent theme: Cloud services and a need to better understand how cloud computing works. Software as a Service (SaaS) and cloud-based business application services are expected to grow to $32.2 billion in 2016. While the concept of cloud computing encompasses significant promise in the enterprise there really is no substitute for becoming adequately educated before moving forward with any real-world implementation of the technology.
I read an article in ComputerWorld yesterday about how cloud services can save businesses money but only if they are “careful,” and it reminded me of some of the situations I faced when experimenting with the technology. While the cloud most certainly offers a world of pay-as-you-go computing together with rapid scale and burst, there are numerous things that people coming from the standard datacenter aren’t necessarily familiar with.
For example: Although, I’m a massive fan of Amazon cloud services, I would be lying if I didn’t say that for the traditional enterprise IT guy, entry into the Amazon cloud can be daunting. Terminology such as compute and instances are quickly understood and broken down to their basics (virtual machines running applications) however, areas such as IOPS and Elastic Block Storage can lead to confusion. Most datacenter folks may be used to the terminology referenced above, but it doesn’t take away from the fact that they have not historically concerned themselves which just how their applications utilize resources, such as storage.
When I first began experimenting with Amazon cloud services I made use of the free tier that they offer. As a technologist looking to skill-up in the cloud, Amazon offers an array of services free for a year, and the menu is considerably comprehensive. All one needs to do is simply register, configure and start up a compute instance. After that, you can pretty much be up and running within a half hour. While I certainly had no problems with the above, somehow within my first hour I managed to rack up three cents worth of usage charges.
Perplexed for being charged for what should have been free usage, further examination of my charges revealed that I had utilized SUSE Linux, one of the distributions that wasn’t free due to the commercial licensing of the platform. Being a typical techy, I had set about following almost no instructions and instead, simply hit the console and started up my preferred instance. Had I read the documentation first I would have realized that there were a number of platforms that were not free due to licensing.
While my mistake only cost me three cents, it did lead me to contemplate a variety of considerations for those who wanted to make the shift to cloud services. When running cloud applications or services, additional charges can include: compute time, bandwidth, database requests, storage and more, depending on the vendor. For developers used to spinning up virtual machines with Apache and MySql this suddenly requires a wealth of new considerations.
At the end of the day, badly written applications perform badly wherever they are running! This is something easily ignored by those who don’t fully understand cloud services, and that lack of knowledge can come with a hefty price. I recently overheard a tech say that they were moving their inventory application to the cloud because they didn’t have the capacity to run it at peak times in-house. His impression was that instead of purchasing more hardware, the cloud would simply allow him to burst out.
While his impression of cloud was pretty accurate I did press him to understand his application a little more. Why didn’t his application scale? Was it due to inefficient front-end code, multiple database queries when pulling records, badly implemented stored procedures in his data layer, or a host of other issues? My questions were intended to get him to consider ramifications within cloud, some focused on the design while others had financial implications. I advised him have a thorough understanding of his application from performance monitoring to network IO before moving it. Only with this thorough understanding could his cloud implementation (if correct) be truly successful.
Cloud services do offer amazing benefits, but like any tool they can also spell bad news if used incorrectly. New developers and startups tend to fair better because they have no legacy technology and can design based on cloud principals from the start, enterprises on the other hand often don’t have this luxury. For those seeking to take advantage of cloud services, the key is education and ensuring that one takes this journey with their eyes wide open. There are an abundance of resources out there that can help and there’s no such thing as too much learning.