"..we assign a word for a thought, and then we're stuck with that word for that thought. So be careful with words."
George Carlin, 7 Words You Can't Say On TV
George Carlin, 7 Words You Can't Say On TV
At the start of every year, various publications come out with a list of words and phrases from the past year that have been overused. Or as Mike Taylor once put it "Sufficiently hackneyed". For 2012, these were words like Brogrammer, Yolo, App, OMG and others. These words have been overused and really just exist as hyperbolic slang and filler.
Unfortunately, it appears that the same thing has happened to the word "cloud".
The term "cloud" was originally hijacked by Microsoft when they launched the original Azure. The problem with Azure was mostly that nobody was quite sure exactly what it did. Microsoft additionally had an advertising campaign surrounding Windows 7 that made this even worse, and even caused some to claim that the cloud is a lie.
Want to collaborate on documents? TO THE CLOUD!
Need your email? TO THE CLOUD! Stuck in an airport and want to watch a show? TO THE CLOUD! Making a photo collage? MOAR CLOUD!
Cloud is a great term, but due to it's being "sufficiently hackneyed", we tend not to take it seriously anymore. Oh you have a cloud do you? Of course you do. Who doesn't? Don't you know that EVERYTHING is a cloud?
I think a better definition of the cloud is simply this...
Services provided to you via the web that you would otherwise have to provide for yourself
For example, Telerik is a company and all companies have payroll. We want to concentrate on building the best development platform, not the best payroll system. This is why we use a third party provider whose sole business is payroll and they are very good at it. It makes sense for us to partner with them for that service instead of trying to run it ourselves.
This payroll service is to Telerik what the cloud is to you as the developer. That's a very high level analogy, so lets look close at what exactly the cloud is, and when it makes sense to use it.
A common misconception is that the cloud is a place where you put all of your data and your email servers. Obviously, this doesn't make sense for a huge chunk of people and is therefore a source of misunderstanding for many on the concept of "the cloud".
Many organizations have their own servers, their own email and their own infrastructure. They also have highly skilled and well paid professionals who have devoted their lives to making sure the whole setup works smoothly and reliably. In this case, the company already has it's own cloud. Why do they need another one?
Some companies, however, do not have all of these things. They may have their own database servers, but they don't want the responsibility of maintaining email servers, much the same way that Telerik doesn't want to get into the Payroll business. Making sure that servers are always up, data isn't lost, and hardware keeps on working is an expensive endeavor. It makes sense then for some companies to use a cloud email service.
Sometimes you have the privilege of starting with a clean slate. You may want to concentrate on a single application experience and not want to worry about the data center / server aspect. This is the case where the cloud REALLY shines. Everlive, like many cloud services, allows you to specify your "types" (AKA tables) and then exposes your data without you having to write a corresponding REST API. It does all of this while providing security via user management, roles and secure communication. That's a lot of code that you don't have to write.
Often, people equate these sorts of "API Generation" services as applicable only to mobile. They are really applicable to anyone who is starting fresh without a defined data store, and will save you a vast amount of time and effort by allowing you to focus on your application, and not the server.
People seem to equate the cloud totality. You frequently hear people talking about "moving" to the cloud. I don't know about you, but the last time I moved I decided I would never ever move again. My sister has a bumper sticker on her truck that says "Yes, this is my truck and no, I do not want to help you move". Even people who aren't moving hate moving!
Leveraging cloud services should not require you to shift the tectonic plates of your infrastructure. For instance, if you are building an internal mobile application, you probably have an existing database infrastructure that you are using. However, you can still leverage Everlive for things like Push Notifications.
If you are doing push notifications yourself, you have the tedious job of integrating with vendor-specific notification services. Everlive extracts all of that away into one simple API. Simply register clients with your application and start sending push notifications to iOS, Android and Windows Phone platforms with one simple method.
As more and more companies are faced with trying to wrangle petabytes of data instead of terabytes, we still have fundamental challenges when it comes to what is historically referred to as "blob" storage. A good example of a blob is an image. If you are creating a system that allows users to upload images, you need far more than just the upload user interface. You also need to write up server methods which accept multi-part form data, and then you need to store that data somewhere. You then need to decide if those images are public, private, user based. It all gets quite complex.
Most cloud services, including Everlive, offer you a simple way to control your blob data. You simply worry about the upload UI, and let Everlive handle everything else. You can then configure Everlive permissions and roles to make sure that the right file is available to the right users.
It's often the back-end services of an application that show the first signs of weight gain. Sluggish response times, complete timeouts, random errors - these are the symptoms of an overloaded system. Your UI is hampered by your server - not the other way around.
You may have heard of the Amazon Elastic Compute Cloud (EC2). It's so called because of your ability to scale it with the click of a button. Often, servers that you own are only elastic up to a point. You can add more VM's, allocate more RAM, throttle and use a bevy of other strategies. But sooner or later you are going to be purchasing more memory, bigger hard disks, a new SAN, or more servers. Your backplane is going to go out in the middle of the night and the quickest you will be able to get a new one is going to be 24 hours. That's a solid 24 hours for you to try and figure out what you are going to do while your business is dead in the water.
This is simply not an option. Some organizations choose to shoulder this responsibility themselves. For others, it makes more fiscal sense to use a cloud, which distributes servers over geographical areas and provides the required elasticity without a cap. Need more RAM? Click. Done. Need another server? Click. Done.
The truth is, the cloud - in it's many forms - allows you to focus on the point by abstracting away the details. In other words, you can focus on the 80% of your application, and let someone else worry about that last 20% that's so pesky and usually stops projects dead in their tracks. Not only does it make sense from a cost perspective, but it also ensures that you are getting the services that you need in high quality; not based on a tutorial on "Big Data" that you did your best to follow.
Use the cloud where it makes sense for you. If you find that you don't need any cloud services, just wait until the time comes when you do, and then evaluate if it makes the most sense for you and your business. Just remember that "Cloud" is not a dirty word, and it does have a real meaning. If you scrape away the hyperbole and look at it objectively, you will most likely find something in the cloud that is perfect for you.
Burke Holland is a web developer living in Nashville, TN and was the Director of Developer Relations at Progress. He enjoys working with and meeting developers who are building mobile apps with jQuery / HTML5 and loves to hack on social API's. Burke worked for Progress as a Developer Advocate focusing on Kendo UI.