Frequently I stumble with customers that are torn, or don’t know whether to host their project on the cloud or with a web hosting. So with the objective of clarifying which path to follow, lets compare those two worlds. The following will try to help non technical people and developers alike, while they don’t speak the same language, they both need each other, specially when starting a new project.
While the cloud is very popular today, let start by defining it, which is quite simple. In the beginning on the networking world, every other equipment that it wasn’t in your premises was pictured -literally- as a cloud. Signifying that you didn’t care how communications went there, you just cared the info (network) was there and it went where it was supposed to be sent. As such, the internet world stole the cloud concept and now it uses it to describe the same objective: You -as a user- don’t care the technology or platform behind it, you just send it there and benefit from what it offers.
In the begging on the internet, a server was an expensive computer. Since that time, a server could host multiple web pages from multiple accounts. That’s the concept behind web hosting: A company or a user leases an space in that server in order for their webpage to be hosted there. It is a shared space, with the advantage of lowering cost and simplifying maintenance. The user/company of that hosting space doesn’t have to worry about maintaining the machine, they just use it and that’s it! On the down side, because it is a shared machine, there are constraints on what it can be deployed over this server. Those constraints might be security related, an specific functionality or feature not available, or simple load times.
First servers became cheaper and cheaper, second companies like Google, Amazon and Microsoft needed to have thousands of servers in order to run their business. However, because those servers were there in order to handle peak loads, what about the time of valleys in load? Thus, the cloud was born. Amazon started renting that computing power it had to spare, while their machines were almost idle. And because it was a gigantic amount machines, renting those use was really cheap. That’s the chore of what is a cloud service today, and because it represented a business in itself, now that extra capacity isn’t just shared, it is the objective. Amazon store back-end became Amazon Web Services, Google search engine massive deployment paved the way for Google Cloud Engine, and Hotmail and Bing help the inception of Office365 and Azure.
Thanks to the low cost the cloud allows today, we have many of the new economy, going from Uber to Snapchat, all of those run under cloud services, as it makes it easier and cheaper to deploy there. However, there’s no absolute response there. Netflix decided to move all their infrastructure to Amazon as it was cheaper for them, while DropBox decided to get out of Amazon (or any other cloud provider) and build their own, as it was cheaper for them. Go figure!
So, you have a new business idea and you laid out that idea to a developer(s). Neither the developer nor the business owner have a clear understanding on what lies ahead and their needs. Specially the business owner has a longer term approach the developer simply has not. Both of them need for this project to become live, but in the end only the business owner will be stuck with it.
With the previous laid out, which path should you choose?
As always there are nuances, we expand a little on their differences.
Maintenance: With web hosting, maintenance is straightforward as you only maintain the code of the app, server patches (including security) are out of the customer (business owner) jurisdiction. So no worries about that. For the cloud, maintenance will be directly linked to which service of the cloud the app/website is using. If the app is using Software As A Service (SaaS), makes maintenance easier, as it is a service similar as Web Hosting, only with steroids. On the contrary, if the app is deployed by using virtual machines on the cloud, all the security (hardening) and server patches will be a direct responsibility of the business, not the cloud provider.
Scalability: This is tricky, rule of thumb: It’s better to start small and later grow. The development team can make an app that can scale, but this will come out as cost of development. The app is beautifully coded to allow heavy load, however the business is not bringing that load, then the business will end up paying for an app that was over dimensioned. While the risk of under dimension always exist, it is better -business wise- to build an small app, which will have lower developing cost and if the case comes that it needs to handle more load, well, that’s a great problem to have! Ask the Twitter whale about it! Besides, thanks to the enormous amount of computing power available today, an small server or a single web hosting account might be able to handle that load easily. It all depends on the app functionality.
Initial Cost: Similar to scalability, using web hosting is by far the lowest cost of deployment, as long as the app requirements allows the use of shared hosting. Not all of them allow that.
Today many developers will default on using the cloud first, even though they’re making an small project that easily could be hosted on a shared hosting. Once delivered, then it becomes an operational cycle for the business, but the business ignored these challenges from the beginning.
One last thing, a website is not necessarily an app. If all that you need is a website, then a web hosting will do the job with the lowest cost and complications. We in Mollejuo apply a hybrid approach: This website where you’re reading this, is being hosted on a shared account, with e-mails. And our back-end is hosted in the cloud. By doing that we have the best of both worlds.